Per rispettare la privacy degli utenti, gli sviluppatori di app sono invitati a richiedere solo le autorizzazioni di accesso alla posizione approssimativa. Le app che necessitano di una posizione approssimativa in genere utilizzano la posizione di rete fusa (FLP) perché è veloce e consuma meno energia. Rispetto ai dispositivi mobili basati su Android, la geolocalizzazione della rete nelle app del settore auto e motori può essere più impegnativa. Puoi utilizzare due API Android:
L'API LocationManager richiede l'utilizzo di
requestLocationUpdates
per identificare esplicitamente il fornitore di posizione preferito.L'API Google Play Services offre un modo più semplice per lavorare con la posizione in
FusedLocationProviderClient
.
Molte app relative ad auto e motori utilizzano l'FLP dell'API Google Play Services anziché LocationManager
. Il FLP seleziona il fornitore della posizione ottimale in base ai criteri e ai criteri di richiesta di posizione (potenza e precisione) richiesti dal veicolo.
Puoi scegliere di richiedere e utilizzare esplicitamente
NETWORK_PROVIDER
e
GPS_PROVIDER
per
le posizioni precise, che utilizzano le
autorizzazioni
android.permission.ACCESS_FINE_LOCATION
. Su Android 12 (livello API 31) e versioni successive, FUSED_PROVIDER
, precedentemente accessibile solo tramite l'API Google Play Services, è disponibile come fornitore di servizi di geolocalizzazione per LocationManager
. Puoi visualizzare un'implementazione di FLP in
FusedLocationProvider.java
.
Sebbene sia possibile utilizzare GPS_PROVIDER
solo con diritti di autorizzazione approssimativi, il framework deteriora artificialmente l'accuratezza per allinearsi alle aspettative, non ha molto senso per gli sviluppatori che scelgono come target gli smartphone Android, perché la disponibilità complessiva è scarsa e spesso è più lenta per ottenere una posizione approssimativa.
Località della rete nel settore auto e motori
Il NETWORK_PROVIDER
utilizzato sugli smartphone Android (con Google Mobile Services) determina la posizione in base alle torri cellulari, ai punti di accesso Wi-Fi e ai beacon Bluetooth (BT) nelle vicinanze. Di conseguenza, NETWORK_PROVIDER
potrebbe richiedere una connessione dati.
Per le app automobilistiche, i vincoli relativi ai dispositivi sono diversi. Poiché il sistema GNSS (Global Navigation Satellite System) è solitamente attivo, non vengono applicate sanzioni a causa dell'aumento della potenza e dell'utilizzo della batteria. Di conseguenza, i tempi di attività di IVI non sono compromessi. Cerchiamo di ridurre al minimo il traffico dati scambiato con i nostri server.
Di conseguenza, molte app usano l'FLP dall'API Play anziché LocationManager
direttamente, in quanto FLP fa automaticamente la cosa intelligente utilizzando il fornitore di posizione al meglio in grado di soddisfare i criteri/le norme della richiesta di posizione (ovvero potenza e precisione).
A differenza dei dispositivi mobili, raramente i veicoli saltano da un luogo all'altro. La posizione dei veicoli è nota per la maggior parte del tempo.
Provider di localizzazione di rete (NLP)
La maggior parte dei veicoli non implementa le API di telefonia necessarie per ottenere le informazioni necessarie su un cell ID (e sull'intensità del segnale). Di conseguenza, poiché riduciamo al minimo l'utilizzo dei dati, non viene fornita alcuna implementazione funzionale dell'NLP.
Fornitore posizione fuso
L'FLP mobile, oltre a utilizzare in modo intelligente reti e fornitori di GPS a seconda dei casi, fonde le informazioni di altri sensori per migliorare ulteriormente la qualità delle posizioni. L'attuale implementazione del FLP di Automotive, invece, sfrutta le ipotesi sopra citate e utilizza sempre GPS_PROVIDER
come fonte di base. Sfugge le posizioni dal GNSS, aggiungendo alcuni errori per renderle più imprecise quando necessario. Ad esempio, quando a un client vengono fornite posizioni approssimative.
Di conseguenza, in pochissimi casi, potrebbe essere necessario più tempo del solito prima che la prima posizione sia disponibile. ad esempio la prima volta che un veicolo o, per essere più precisi, viene usato il sottosistema relativo alla sua posizione o dopo che è stato rimorchiato.
Progettare app destinate all'uso su dispositivi mobili e auto e motori
Per le app destinate a dispositivi mobili e automobilistici che non
richiedono una qualità di precisione più elevata, richiedi
android.permission.ACCESS_COARSE_LOCATION
solo e torna a utilizzare FLP quando disponibile. In alternativa, utilizza
GPS_PROVIDER
direttamente con le stesse autorizzazioni. Il framework riduce la precisione della posizione del GNSS sottostante per allinearsi alle aspettative dell'API. Per
scoprire di più, consulta Accuratezza
in Richiedere autorizzazioni di accesso alla posizione.
Inoltre, per queste app è necessario dichiarare esplicitamente la funzionalità android.hardware.location.network
come facoltativa nel manifest. Ecco alcuni esempi:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Questo approccio garantisce la massima compatibilità con i dispositivi nei verticali e, di conseguenza, la massima disponibilità delle app senza differenze di codice per ottenere le posizioni quando necessario.