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 le secteur 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. Étant donné que 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 donc le FLP de l'API Play au lieu de LocationManager directement, car le FLP effectue automatiquement la bonne chose en utilisant le fournisseur de localisation le mieux à même de répondre aux critères/règles de la demande de localisation (à savoir 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 intelligemment les fournisseurs de réseau et de GPS selon les besoins, le FLP mobile fusionne les informations provenant d'autres capteurs pour améliorer encore la qualité des positions. L'implémentation actuelle de la FLP Automotive, en revanche, tire parti des hypothèses susmentionnées et utilise GPS_PROVIDER comme source sous-jacente en permanence. Il modifie les positions GNSS, en ajoutant des erreurs pour être plus imprécis si nécessaire. Par exemple, lorsque des positions approximatives sont fournies à un client.

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 les appareils 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 GPS_PROVIDER directement 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.