Position approximative sur Android Automotive OS

Pour respecter la confidentialité des utilisateurs, les développeurs d'applications sont encouragés à ne demander que des autorisations de localisation approximative. Les applications qui ont besoin d'une position approximative utilisent généralement la localisation réseau fusionnée (FLP, Fused Network Location), car elle est rapide et consomme moins d'énergie. Par rapport aux appareils mobiles basés sur Android, la localisation réseau dans les applications automobiles peut être plus difficile. Vous pouvez utiliser deux API Android :

  • L'API LocationManager exige que vous utilisiez requestLocationUpdates pour identifier explicitement le fournisseur de localisation préféré.

  • L'API des services Google Play vous permet de travailler plus facilement avec la localisation dans FusedLocationProviderClient.

De nombreuses applications automobiles utilisent le FLP de l'API des services Google Play au lieu de LocationManager. FLP sélectionne le fournisseur de localisation optimal en fonction des critères et des règles de la demande de localisation (puissance et précision) nécessaires au véhicule.

Vous pouvez également choisir de demander et d'utiliser explicitement NETWORK_PROVIDER ainsi que GPS_PROVIDER pour les positions précises, qui utilisent les autorisations android.permission.ACCESS_FINE_LOCATION. Sur Android 12 (niveau d'API 31) et versions ultérieures, FUSED_PROVIDER, qui n'était auparavant accessible que via l'API des services Google Play, est disponible en tant que fournisseur de localisation pour LocationManager. Vous pouvez voir une implémentation de FLP dans FusedLocationProvider.java.

Bien qu'il soit possible d'utiliser GPS_PROVIDER avec des droits d'accès approximatifs uniquement (le framework dégrade artificiellement la précision pour répondre aux attentes), cela n'a pas beaucoup de sens pour les développeurs ciblant les téléphones Android, car la disponibilité globale est faible et il est souvent plus lent d'obtenir une position approximative.

Emplacement du réseau dans l'automobile

Le NETWORK_PROVIDER utilisé sur les téléphones Android (avec les services mobiles Google) détermine la position en fonction des antennes-relais, des points d'accès Wi-Fi et des balises Bluetooth (BT) à proximité. Par conséquent, NETWORK_PROVIDER peut nécessiter une connexion de données.

Pour les applications automobiles, les contraintes liées aux appareils sont différentes. Comme le système de navigation par satellite mondial (GNSS) est généralement activé, aucune pénalité n'est appliquée en raison de l'augmentation de la consommation d'énergie et de batterie. Par conséquent, la disponibilité de l'IVI n'est pas compromise. Nous nous efforçons de minimiser les données échangées avec nos serveurs.

De nombreuses applications utilisent FLP à partir de l'API Play au lieu de LocationManager directement, car FLP sélectionne automatiquement le meilleur fournisseur de localisation pour répondre aux critères ou aux règles de votre requête, tels que la puissance et la précision.

Contrairement aux appareils mobiles, les véhicules semblent rarement sauter d'un endroit à un autre. La position du véhicule est généralement connue en interne.

Fournisseur de localisation du réseau (NLP)

La plupart des véhicules n'implémentent pas les API de téléphonie requises pour obtenir les informations nécessaires sur un ID de cellule (et l'intensité du signal). Par conséquent, et parce que nous minimisons l'utilisation des données, aucune implémentation fonctionnelle supplémentaire du NLP n'est fournie.

Fused Location Provider

En plus d'utiliser les fournisseurs de réseau et de GPS, le FLP mobile fusionne les informations provenant d'autres capteurs pour améliorer la qualité de la localisation. À l'inverse, le FLP automobile utilise GPS_PROVIDER comme source sous-jacente. Il ajuste les positions GNSS en ajoutant une erreur intentionnelle pour dégrader la précision lorsqu'un client demande des positions approximatives.

Il peut donc arriver, dans de très rares cas, que la première position soit disponible plus tard que d'habitude. Par exemple, la toute première fois qu'un véhicule ou, plus précisément, son sous-système de localisation est utilisé, ou après un remorquage.

Concevoir des applications pour cibler les utilisations mobiles et automobiles

Pour les applications ciblant les appareils mobiles et automobiles qui ne nécessitent pas une précision de qualité supérieure, demandez android.permission.ACCESS_COARSE_LOCATION uniquement et revenez à l'utilisation de FLP lorsque cela est possible. Vous pouvez également utiliser directement GPS_PROVIDER avec les mêmes autorisations. Le framework dégrade la précision de la position GNSS sous-jacente pour l'aligner sur les attentes de l'API. Pour en savoir plus, consultez Précision dans Demander des autorisations de localisation.

De plus, ces applications doivent déclarer explicitement la fonctionnalité android.hardware.location.network comme facultative dans leur fichier manifeste. Exemple :

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

Cette approche permet d'obtenir une meilleure compatibilité avec les appareils, quels que soient leurs facteurs de forme, et donc une disponibilité maximale des applications sans différence de code pour obtenir les positions si nécessaire.