Uzyskiwanie przybliżonej lokalizacji

Aby szanować prywatność użytkowników, zachęca się twórców aplikacji, aby żądali wyłącznie ogólnych uprawnień do lokalizacji. Aplikacje wymagające przybliżonej przybliżonej pozycji zazwyczaj korzystają z lokalizacji sieciowej (FLP), ponieważ jest ona szybka i zużywa mniej energii.

W porównaniu z urządzeniami mobilnymi z systemem Android lokalizacja sieciowa w aplikacjach motoryzacyjnych może stanowić większe wyzwanie. Możesz użyć dwóch interfejsów API Androida:

Wiele aplikacji motoryzacyjnych używa FLP z API Usług Google Play (GPS) zamiast LM. FLP wybiera optymalnego dostawcę lokalizacji w oparciu o kryteria żądania lokalizacji i zasady (moc i dokładność) wymagane przez pojazd.

Zamiast tego możesz jawnie zażądać i użyć NETWORK_PROVIDER w LM, a także GPS_PROVIDER dla dokładnych pozycji, które korzystają z uprawnień android.permission.ACCESS_FINE_LOCATION . W API 31 FUSED_PROVIDER , wcześniej dostępny tylko poprzez GPS API, jest teraz dostępny jako dostawca lokalizacji dla LM. Prostszą implementację FLP można zobaczyć w FusedLocationProvider.java .

Chociaż możliwe jest używanie GPS_PROVIDER tylko z podstawowymi uprawnieniami, platforma sztucznie zmniejsza dokładność, aby dostosować ją do oczekiwań, nie ma to większego sensu dla programistów skupiających się na telefonach z Androidem, ponieważ ogólna dostępność jest słaba, a uzyskanie zgrubnej pozycji często jest wolniejsze.

Lokalizacja sieciowa w branży motoryzacyjnej

Usługa NETWORK_PROVIDER używana na telefonach z systemem Android (z usługami mobilnymi Google) zmieniła się z określania lokalizacji wyłącznie na podstawie pobliskich masztów komórkowych na korzystanie z punktów dostępu Wi-Fi lub nawet sygnałów nawigacyjnych Bluetooth (BT). Korzystanie z NETWORK_PROVIDER może wymagać połączenia danych.

W przypadku aplikacji motoryzacyjnych ograniczenia dotyczące urządzeń są inne. Ponieważ GNSS jest normalnie włączony, nie są naliczane żadne kary z powodu zwiększonego zużycia energii i baterii. W rezultacie czas sprawności IVI nie jest zagrożony. Staramy się minimalizować dane wymieniane z naszymi serwerami.

Dlatego wiele aplikacji korzysta z FLP z API Play zamiast bezpośrednio z LM, ponieważ FLP automatycznie postępuje mądrze, korzystając z dostawcy lokalizacji, który najlepiej jest w stanie spełnić kryteria/zasady dotyczące żądań lokalizacji (mianowicie moc i dokładność) pod maską.

W przeciwieństwie do urządzeń mobilnych, pojazdy rzadko przeskakują z miejsca na miejsce. Pozycja pojazdu jest w większości przypadków znana pod maską.

Dostawca lokalizacji sieciowej

Większość pojazdów nie implementuje wymaganych interfejsów API telefonii, aby uzyskać potrzebne informacje na temat identyfikatora komórki (i siły sygnału). W rezultacie, a także dlatego, że minimalizujemy wykorzystanie danych, nie zapewniamy żadnej dodatkowej funkcjonalnej implementacji NLP.

Połączony dostawca lokalizacji

Mobilny FLP, oprócz inteligentnego korzystania z sieci i dostawców GPS, w zależności od potrzeb, łączy informacje z innych czujników w celu dalszej poprawy jakości lokalizacji. Z drugiej strony obecna implementacja FLP firmy Automotive wykorzystuje powyższe założenia i przez cały czas wykorzystuje GPS_PROVIDER jako podstawowe źródło. Fałszuje pozycje z GNSS, dodając pewne błędy, aby w razie potrzeby były bardziej niedokładne. Na przykład, gdy klientowi udostępniane są przybliżone lokalizacje.

W związku z tym w bardzo nielicznych przypadkach dostępność pierwszej pozycji może zająć więcej czasu niż zwykle. Np. przy pierwszym użyciu pojazdu, a dokładniej podsystemu jego lokalizacji lub po holowaniu.

Projektuj aplikacje przeznaczone do zastosowań mobilnych i motoryzacyjnych

Zalecamy, aby aplikacje przeznaczone na urządzenia mobilne i samochodowe, które nie wymagają wyższej jakości precyzji, żądały tylko android.permission.ACCESS_COARSE_LOCATION i wracały do ​​korzystania z FLP, jeśli jest dostępny. Alternatywnie, w ostateczności, użyj bezpośrednio GPS_PROVIDER z tymi samymi uprawnieniami. Struktura pogarsza precyzję podstawowej pozycji GNSS, aby dostosować ją do oczekiwań API. Aby dowiedzieć się więcej, zobacz Dokładność .

Ponadto aplikacje te muszą wyraźnie zadeklarować w swoim manifeście opcję android.hardware.location.network jako opcjonalną . Na przykład:

<uses-feature android:name="android.hardware.location.network" android:required="false" />

Takie podejście zapewnia maksymalną kompatybilność z urządzeniami z różnych branż, a tym samym maksymalną dostępność aplikacji bez różnic w kodzie umożliwiających uzyskiwanie pozycji w razie potrzeby.