Aby chronić prywatność użytkowników, deweloperzy aplikacji powinni prosić tylko o uprawnienia do przybliżonej lokalizacji. Aplikacje, które potrzebują przybliżonej lokalizacji ogólnej, zwykle korzystają z połączonej lokalizacji sieciowej (FLP), ponieważ jest ona szybka i zużywa mniej energii. W porównaniu z urządzeniami mobilnymi z Androidem lokalizacja sieciowa w aplikacjach samochodowych może być trudniejsza do określenia. Możesz używać 2 interfejsów API Androida:
Interfejs LocationManager API wymaga użycia
requestLocationUpdatesdo wyraźnego określenia preferowanego dostawcy lokalizacji.Interfejs API usług Google Play zapewnia prostszy sposób pracy z lokalizacją w
FusedLocationProviderClient.
Wiele aplikacji samochodowych korzysta z interfejsu FLP z interfejsu API usług Google Play zamiast z LocationManager. FLP wybiera optymalnego dostawcę lokalizacji na podstawie kryteriów żądania lokalizacji i zasad (zasilanie i dokładność) wymaganych przez pojazd.
Zamiast tego możesz wyraźnie poprosić o użycie NETWORK_PROVIDER i GPS_PROVIDER w przypadku dokładnych pozycji, co wymaga uprawnień android.permission.ACCESS_FINE_LOCATION. Na Androidzie 12 (poziom 31 interfejsu API) i nowszym interfejs FUSED_PROVIDER, który był wcześniej dostępny tylko przez interfejs API Usług Google Play, jest dostępny jako dostawca lokalizacji dla LocationManager. Implementację FLP możesz zobaczyć w FusedLocationProvider.java.
Można używać GPS_PROVIDER tylko z uprawnieniami o niskiej precyzji – platforma sztucznie obniża dokładność, aby dostosować ją do oczekiwań – ale w przypadku programistów tworzących aplikacje na telefony z Androidem nie ma to większego sensu, ponieważ ogólna dostępność jest niska, a uzyskanie przybliżonej lokalizacji często trwa dłużej.
Lokalizacja sieciowa w motoryzacji
NETWORK_PROVIDER używany na telefonach z Androidem (z Usługami mobilnymi Google) określa lokalizację na podstawie pobliskich stacji bazowych sieci komórkowych, punktów dostępu Wi-Fi i beaconów Bluetooth. W związku z tym NETWORK_PROVIDER może wymagać połączenia z internetem.
W przypadku aplikacji samochodowych ograniczenia dotyczące urządzeń są inne. Ponieważ globalny system nawigacji satelitarnej (GNSS) jest zwykle włączony, nie ma kar za zwiększone zużycie energii i baterii. Dzięki temu czas działania IVI nie jest zagrożony. Staramy się minimalizować ilość danych wymienianych z naszymi serwerami.
Wiele aplikacji korzysta więc z interfejsu FLP z interfejsu Play API zamiast bezpośrednio z LocationManager, ponieważ interfejs FLP automatycznie wykonuje inteligentne działanie, korzystając z dostawcy lokalizacji, który najlepiej spełnia kryteria lub zasady żądania lokalizacji (czyli zużycie energii i dokładność).
W odróżnieniu od urządzeń mobilnych pojazdy rzadko przeskakują z jednego miejsca do drugiego. Pozycja pojazdu jest zwykle znana w tle.
Dostawca lokalizacji sieciowej (NLP)
Większość pojazdów nie implementuje wymaganych interfejsów API telefonii, aby uzyskać potrzebne informacje o identyfikatorze komórki (i sile sygnału). W rezultacie i ze względu na minimalizację wykorzystania danych nie zapewniamy dodatkowego wdrożenia funkcjonalnego NLP.
Dostawca uśrednionej lokalizacji
Mobilna platforma FLP oprócz inteligentnego korzystania z dostawców sieci i GPS w odpowiednich sytuacjach łączy informacje z innych czujników, aby jeszcze bardziej zwiększyć jakość lokalizacji. Obecna implementacja FLP w przypadku Automotive wykorzystuje wspomniane założenia i zawsze używa GPS_PROVIDER jako źródła podstawowego. Zafałszowuje pozycje z GNSS, dodając w razie potrzeby błędy, aby były mniej dokładne. Na przykład, gdy klientowi udostępniane są przybliżone lokalizacje.
W rzadkich przypadkach może to spowodować, że pierwsza pozycja będzie dostępna dłużej niż zwykle. Na przykład przy pierwszym użyciu pojazdu lub, dokładniej, jego podsystemu lokalizacji albo po odholowaniu.
Projektowanie aplikacji z myślą o użytkownikach urządzeń mobilnych i samochodowych
W przypadku aplikacji kierowanych na urządzenia mobilne i samochodowe, które nie wymagają większej precyzji, wysyłaj android.permission.ACCESS_COARSE_LOCATION tylko żądania i w razie potrzeby korzystaj z FLP. Możesz też użyć GPS_PROVIDER bezpośrednio z tymi samymi uprawnieniami. Platforma obniża precyzję bazowej pozycji GNSS, aby dostosować ją do oczekiwań interfejsu API. Więcej informacji znajdziesz w sekcji Dokładność w artykule Prośba o uprawnienia do lokalizacji.
Dodatkowo te aplikacje muszą wyraźnie zadeklarować funkcję
android.hardware.location.network jako opcjonalną w pliku manifestu. Na przykład:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Takie podejście zapewnia większą zgodność z urządzeniami o różnych formatach, a tym samym maksymalną dostępność aplikacji bez różnic w kodzie podczas uzyskiwania pozycji w razie potrzeby.