Acquisisci posizione approssimativa

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.