Obtenir la position approximative

Pour respecter la confidentialité des utilisateurs, nous encourageons les développeurs d'applications à ne demander que des autorisations d'accéder à la position approximatives. Les applications qui ont besoin d'une position approximative s'appuient généralement sur l'emplacement réseau à fusée (FLP, Fused Network Emplacement), car il est rapide et consomme moins d'énergie. Par rapport aux appareils mobiles Android, la localisation réseau dans les applications automobiles peut s'avérer plus difficile. Vous pouvez utiliser deux API Android:

  • L'API LocationManager nécessite l'utilisation de 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 requête de localisation (puissance et précision) nécessaires au véhicule.

Vous pouvez choisir de demander et d'utiliser explicitement NETWORK_PROVIDER, ainsi que GPS_PROVIDER pour les positions précises, qui utilise les autorisations android.permission.ACCESS_FINE_LOCATION. Sur Android 12 (niveau d'API 31) ou version ultérieure, FUSED_PROVIDER, auparavant accessible uniquement 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'autorisation approximatifs uniquement, le framework dégrade artificiellement la précision pour répondre aux attentes, cela n'a aucun sens pour les développeurs ciblant les téléphones Android, car la disponibilité globale est faible et souvent plus lente pour obtenir une position approximative.

Localisation du réseau dans le secteur automobile

L'NETWORK_PROVIDER utilisé sur les téléphones Android (avec les services Google Mobile) 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 diffèrent. Étant donné que le système GNSS (Global Navigation Satellite System) est généralement activé, aucune pénalité n'est encourue en raison de l'augmentation de l'énergie et de l'utilisation de la batterie. Ainsi, le temps d'activité IVI n'est pas compromis. Nous nous efforçons de réduire au maximum les échanges de données avec nos serveurs.

De nombreuses applications utilisent donc FLP directement à partir de l'API Play au lieu de LocationManager, car FLP s'occupe automatiquement de l'intelligence en utilisant le fournisseur de services de localisation le plus à même de répondre aux critères/règles de demande de localisation (à savoir l'alimentation 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 connue la plupart du temps sous le capot.

Fournisseur de géolocalisation

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, comme nous minimisons l'utilisation des données, aucune mise en œuvre fonctionnelle supplémentaire du TLN n'est fournie.

Fused Location Provider

En plus d'utiliser intelligemment les fournisseurs de réseau et GPS, le FLP mobile fusionne les informations provenant d'autres capteurs pour améliorer la qualité des positions. En revanche, l'implémentation actuelle du FLP d'Automotive exploite les hypothèses mentionnées ci-dessus et utilise GPS_PROVIDER comme source sous-jacente en permanence. Il altère les positions par rapport au GNSS, en ajoutant des erreurs pour rendre les positions plus imprécises si nécessaire. Par exemple, lorsque des emplacements approximatifs sont fournis à un client.

Ainsi, dans de très rares cas, le délai peut être plus long que d'habitude pour que la première position soit disponible. 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 avoir été remorqué.

Concevoir des applications pour cibler les usages mobiles et automobiles

Pour les applications ciblant les appareils mobiles etpour l'automobile qui n'ont pas besoin d'une meilleure précision, demandez android.permission.ACCESS_COARSE_LOCATION uniquement d'utiliser FLP lorsqu'il est disponible. 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 s'aligner sur les attentes de l'API. Pour en savoir plus, consultez Précision dans Demander des autorisations d'accéder à la position.

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

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

Cette approche garantit une compatibilité maximale avec les appareils de tous les secteurs et, par conséquent, une disponibilité maximale des applications sans différence de code pour obtenir les positions en cas de besoin.