Aby chronić prywatność użytkowników, deweloperzy aplikacji powinni prosić tylko o uprawnienia do przybliżonej lokalizacji. Aplikacje, które potrzebują przybliżonej lokalizacji, zwykle korzystają z 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 lub LM wymaga wyraźnego wskazania preferowanego dostawcy lokalizacji.
Interfejs API Usług Google Play upraszcza korzystanie z lokalizacji dzięki wprowadzeniu połączonego dostawcy lokalizacji (FLP).
Wiele aplikacji samochodowych korzysta z interfejsu FLP z interfejsu API usług Google Play (GPS) zamiast z interfejsu LM. 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
w LM, a także GPS_PROVIDER
w przypadku dokładnych pozycji, które korzystają z uprawnień android.permission.ACCESS_FINE_LOCATION
. W interfejsie API 31 element FUSED_PROVIDER
, który wcześniej był dostępny tylko w interfejsie GPS API, jest teraz dostępny jako dostawca lokalizacji dla LM. Prostsze wdrożenie FLP znajdziesz w FusedLocationProvider.java
.
Chociaż można używać GPS_PROVIDER
tylko z uprawnieniami o niskiej precyzji, platforma sztucznie obniża dokładność, aby dostosować ją do oczekiwań. Nie ma to większego sensu w przypadku programistów tworzących aplikacje na telefony z Androidem, 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) zmienił sposób określania lokalizacji. Nie opiera się już tylko na pobliskich stacjach bazowych, ale korzysta też z punktów dostępu Wi-Fi, a nawet z beaconów Bluetooth (BT). Korzystanie z NETWORK_PROVIDER
może wymagać połączenia z internetem.
W przypadku aplikacji samochodowych ograniczenia dotyczące urządzeń są inne. GNSS jest zwykle włączony, więc nie ma kar za zwiększone zużycie energii i baterii. Dzięki temu czas działania systemu 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 interfejsu LM, ponieważ interfejs FLP automatycznie wykonuje inteligentne działanie, korzystając z dostawcy lokalizacji, który najlepiej spełnia kryteria/zasady żądania lokalizacji (mianowicie 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
Większość pojazdów nie implementuje wymaganych interfejsów API telefonii, aby uzyskać potrzebne informacje o identyfikatorze komórki (i sile sygnału). W związku z tym i z tego powodu, że minimalizujemy wykorzystanie danych, nie udostępniamy żadnego 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 korzysta z wyżej wymienionych założeń 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
Zalecamy, aby aplikacje kierowane na urządzenia mobilne i samochodowe, które nie wymagają większej precyzji, wysyłały android.permission.ACCESS_COARSE_LOCATION
tylko żądania i w razie potrzeby korzystały z FLP. Możesz też w ostateczności użyć GPS_PROVIDER
bezpośrednio
z tymi samymi uprawnieniami. Framework obniża precyzję bazowej pozycji GNSS, aby dostosować ją do oczekiwań interfejsu API. Więcej informacji znajdziesz w sekcji Dokładność.
Dodatkowo aplikacje te muszą wyraźnie zadeklarować, że funkcja
android.hardware.location.network
jest opcjonalna w pliku manifestu.
Na przykład:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Takie podejście zapewnia maksymalną zgodność z urządzeniami w różnych branżach, a co za tym idzie – maksymalną dostępność aplikacji bez różnic w kodzie w przypadku uzyskiwania pozycji w razie potrzeby.