Détection du fuseau horaire de l'emplacement

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

La détection de fuseau horaire de localisation, disponible sur Android 12 ou version ultérieure, est une fonction de détection automatique de fuseau horaire en option qui permet aux appareils d'utiliser leurs données de carte de localisation et de fuseau horaire pour déterminer le fuseau horaire.

La détection de fuseau horaire d'emplacement est un mécanisme alternatif à la détection de fuseau horaire de téléphonie . Étant donné que cette fonctionnalité ne nécessite pas de téléphonie, cette fonctionnalité peut être prise en charge sur des appareils de divers facteurs de forme en plus des appareils de téléphonie mobile.

La fonction de détection du fuseau horaire de l'emplacement se compose des composants suivants dans la plate-forme AOSP :

  • Logique de détection de fuseau horaire dans le serveur système.
  • Une option accessible à l'utilisateur dans les paramètres, introduite dans Android 12, pour permettre aux utilisateurs de choisir entre les mécanismes de détection de fuseau horaire de téléphonie et de localisation.
  • Un système de plug-in pour les composants qui effectuent la détection d'emplacement et le mappage de fuseau horaire. Un plug-in est appelé un fournisseur de fuseau horaire de localisation (LTZP) et il peut y en avoir jusqu'à deux sur un appareil.
  • Une implémentation LTZP de référence.
  • Outil hôte pour générer un ensemble de données de référence à partir des données OpenStreetMap qui peuvent être utilisées avec l'implémentation de référence.

Confidentialité de l'utilisateur

La détection du fuseau horaire de l'emplacement inclut les fonctionnalités de confidentialité utilisateur suivantes :

  • Les utilisateurs peuvent désactiver la détection du fuseau horaire de l'emplacement à tout moment.
  • Les suggestions de fuseau horaire basées sur l'emplacement ne sont pas partagées entre les utilisateurs d'un appareil.
  • Les utilisateurs peuvent contrôler explicitement la détection de l'emplacement pour la détection du fuseau horaire via l'écran Paramètres de date et d'heure . Les utilisateurs n'ont pas à accorder explicitement l'autorisation via une boîte de dialogue d'autorisation.
  • Les informations de localisation de l'appareil ne sont pas transmises aux services de la plate-forme Android. Ce qui suit se produit à la place :

    • Les services de détecteur de fuseau horaire ne reçoivent que les identifiants de fuseau horaire du LTZP, et non l'emplacement de l'appareil. Il s'agit de l'API minimale nécessaire pour prendre en charge la détection du fuseau horaire de l'emplacement.
    • Le fonctionnement des LTZP individuels est laissé aux intégrateurs système pour décider. Les implémentations LTZP peuvent utiliser des données cartographiques de fuseaux horaires entièrement stockées sur l'appareil Android, exploiter des serveurs ou utiliser une approche hybride.

Comportement des fonctionnalités

Le service time_zone_detector détermine quand modifier le fuseau horaire actuel de l'appareil en fonction des suggestions qu'il reçoit des sources de détection .

Le service location_time_zone_manager est chargé de générer des suggestions pour l'origine de l'emplacement de time_zone_detector . Le service location_time_zone_manager s'exécute dans le processus du serveur système.

Le service location_time_zone_manager ne contient aucune logique de détection de fuseau horaire. Il est responsable de la gestion du cycle de vie d'un ou deux plug-ins appelés Location Time Zone Providers (LTZP).

Lorsque la détection du fuseau horaire de l'emplacement n'est pas nécessaire, les LTZP ne sont pas démarrés. Cela signifie que le système de détection de fuseau horaire de l'emplacement ne demande pas aux LTZP de suivre l'emplacement de l'appareil à moins qu'ils ne soient explicitement tenus de le faire. Certaines des raisons de ce comportement sont les suivantes :

  • Contrairement aux signaux de téléphonie qui sont reçus passivement dans le cadre d'opérations de téléphonie normales, la localisation peut être demandée activement auprès des fournisseurs de localisation Android et peut consommer de l'énergie supplémentaire.
  • Les paramètres de localisation sont limités à l'utilisateur et Android doit respecter les paramètres de l'utilisateur actuel.
  • L'obtention de l'emplacement de l'appareil est sensible à la confidentialité.

En outre, le service location_time_zone_manager fait une suggestion incertaine (si nécessaire) lorsque l'utilisateur actuel change pour éviter de partager les informations de localisation entre les utilisateurs.

En raison de ces choix, il faut généralement quelques secondes après le passage de l'origine actuelle à l'emplacement, ou après le changement d'utilisateur actuel, avant que le fuseau horaire puisse être détecté. Cela dépend également des implémentations des LTZP utilisés.

La mise en œuvre de détection de fuseau horaire d'emplacement AOSP permet jusqu'à deux LTZP, un LTZP primaire et un LTZP secondaire comme défini ici :

LTZP primaire
S'exécute à tout moment lorsque l'utilisateur a autorisé l'exécution de la fonction de détection du fuseau horaire de l'emplacement.
LTZP secondaire
S'exécute si le LTZP principal signale que le fuseau horaire est incertain , signale une défaillance permanente ou expire pendant l'initialisation. S'arrête si le LTZP principal soumet une certaine suggestion.

Comme le montre la figure 1, les services time_zone_detector reçoivent des suggestions de fuseau horaire de l'origine de la téléphonie ou de l'emplacement. L'origine de l'emplacement reçoit des suggestions du LTZP primaire ou secondaire.

Flux d'informations de détection de fuseau horaire de localisation

Figure 1. Flux d'informations de détection de fuseau horaire de localisation.

Exigences de configuration de l'appareil

Pour prendre en charge la fonction de fuseau horaire de localisation, les appareils doivent être configurés avec des LTZP que l'appareil peut utiliser. Les appareils nécessitent qu'au moins un LTZP soit activé et configuré pour que la détection du fuseau horaire de l'emplacement soit fonctionnelle et visible pour les utilisateurs dans les paramètres.

Configuration de l'appareil

Cette section décrit comment les fabricants d'appareils peuvent configurer les appareils pour prendre en charge la détection du fuseau horaire de l'emplacement.

La configuration de base AOSP se trouve dans frameworks/base/core/res/res/values/config.xml :

Clé de paramétrage Valeur AOSP La description
config_enableGeolocationTimeZoneDetection true Il s'agit de la commande principale de la fonction de détection du fuseau horaire de l'emplacement.

La fonctionnalité est prise en charge par défaut dans AOSP. Au moins un LTZP doit être activé ou configuré pour que la fonctionnalité soit disponible pour les utilisateurs.

Définir la valeur sur false désactive entièrement la fonctionnalité pour une petite économie de mémoire.
config_enablePrimaryLocationTimeZoneProvider false Cela active le LTZP principal.
config_primaryLocationTimeZoneProviderPackageName Définissez ceci sur le nom du package de l'application où se trouve le service du fournisseur principal.
config_enableSecondaryLocationTimeZoneProvider false Cela active le LTZP secondaire.
config_secondaryLocationTimeZoneProviderPackageName Définissez ceci sur le nom du package de l'application où le service du fournisseur secondaire peut être trouvé.

Par défaut, la configuration AOSP a la clé config_enableGeolocationTimeZoneDetection définie sur true , activant la prise en charge de la fonction de détection de fuseau horaire de localisation. La fonctionnalité n'est initialement pas visible pour les utilisateurs car AOSP n'inclut pas de configuration LTZP par défaut. Cependant, en utilisant cette configuration par défaut, les fabricants d'appareils peuvent activer et simuler les LTZP à partir de la ligne de commande pour les tests. (Pour plus d'informations, voir Débogage et test .)

Configuration et déploiement du fournisseur de fuseau horaire d'emplacement

Lors de la configuration d'un LTZP, lisez les instructions dans le code source pour frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java . Les commentaires Javadoc fournissent des détails sur le service, les autorisations nécessaires et d'autres configurations.

Pour configurer un fournisseur de fuseau horaire de localisation, les fabricants d'appareils doivent choisir un processus d'application pour héberger le service du LTZP. Avoir un processus dédié pour un LTZP est une surcharge élevée ; idéalement, le processus d'application choisi est celui qui s'exécute en permanence, tel que le serveur système.

Sur les appareils dotés de composants système modulaires (modules), tenez compte de l'interaction entre les données géographiques utilisées par le LTZP et les règles de fuseau horaire (tzdb) contenues dans le module Données de fuseau horaire ( com.android.tzdata ). Les mises à jour de l'un sans mises à jour de l'autre sont susceptibles de provoquer des problèmes d'asymétrie de version. Pour plus d'informations, voir Considérations relatives à l' adoption des fonctionnalités .

Référence AOSP Emplacement Fuseau horaire Fournisseur

AOSP contient une implémentation de référence du fournisseur de fuseau horaire de localisation sous packages/modules/GeoTZ . Cette implémentation de référence utilise les API AOSP pour déterminer l'emplacement de l'appareil et utilise un fichier de données sur l'appareil pour mapper l'emplacement à un ensemble d'ID de fuseau horaire.

Un ensemble de données de référence dérivé d'autres projets open source est inclus avec le code source. Pour plus de détails, voir README.md et les différents fichiers LICENSE.

Débogage et tests

La section suivante décrit les commandes shell pour le débogage et le test de la fonctionnalité de détection du fuseau horaire de l'emplacement.

Interagir avec le service location_time_zone_manager

Lorsque l'origine de l'emplacement est prise en charge sur un appareil exécutant Android 12 ou une version ultérieure, Android instancie le service location_time_zone_manager au démarrage.

Pour vider l'état actuel de location_time_zone_manager , utilisez :

adb shell cmd location_time_zone_manager dump

Pour voir un ensemble complet d'options de ligne de commande pour faciliter les tests, utilisez :

adb shell cmd location_time_zone_manager help

La sortie d'aide décrit également les propriétés du service device_config qui peuvent être utilisées pour affecter le comportement de time_zone_detector pour les tests ou en production. Pour plus d'informations, voir Configuration d'un appareil à l'aide du service device_config .

Les implémentations LTZP peuvent également fournir leur propre support de débogage ou de test. Par exemple, vous pouvez utiliser la commande suivante pour déboguer la référence AOSP LTZP lorsqu'elle est enregistrée dans le processus du serveur système.

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService