Détection du fuseau horaire basée sur la position

Détection du fuseau horaire basée sur la position, disponible sur Android 12 ou supérieure, est une fonctionnalité facultative de détection automatique du fuseau horaire d'utiliser les données cartographiques de leur position et de leur fuseau horaire pour déterminer le fuseau horaire.

La détection du fuseau horaire basé sur la localisation est un mécanisme qui peut remplacer le fuseau horaire de la téléphonie. de sécurité. Parce que cela ne nécessite pas de téléphonie, elle peut être prise en charge sur les appareils différents facteurs de forme en plus des appareils de téléphonie mobile.

La fonctionnalité de détection du fuseau horaire basée sur la position se compose des éléments suivants dans la plate-forme AOSP:

  • Logique de détection du fuseau horaire sur le serveur système.
  • une option accessible par l'utilisateur dans les paramètres, introduite dans Android 12, pour permettre aux utilisateurs de choisir entre de la téléphonie et de la localisation et de détection du fuseau horaire.

  • Un plug-in pour les composants qui effectuent la détection de la position et le mappage du fuseau horaire. Un plug-in est appelé Location Time Zone Provider. (LTZP), et il peut y en avoir jusqu'à deux sur un appareil. La plate-forme fournit des API système qui doivent être utilisées pour implémenter un LTZP.

  • Implémentation LTZP de référence.

  • Un outil hôte permettant de générer un ensemble de données de référence à partir de Données OpenStreetMap utilisables avec l'implémentation de référence.

Confidentialité des utilisateurs

La détection du fuseau horaire basé sur la position inclut les fonctionnalités de confidentialité suivantes pour les utilisateurs:

  • Lorsque le bouton permet de sélectionner l'algorithme de localisation, les utilisateurs peuvent le désactiver l'algorithme de localisation à tout moment.

  • Les suggestions de fuseau horaire basées sur la position ne sont pas partagées entre les utilisateurs d'un appareil.

  • Les utilisateurs peuvent contrôler la détection de la position pour la détection du fuseau horaire explicitement via l'écran des paramètres de date et d'heure. Les utilisateurs n'ont pas pour 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. Voici ce qui se produit à la place:

    • Seuls les ID de fuseau horaire sont envoyés aux services de détection de fuseau horaire par le réseau LTZP, et non par la position de l'appareil. Il s'agit de l'API minimale requise pour prendre en charge la détection du fuseau horaire basé sur la localisation.
    • Le fonctionnement des différents LTZP est confié aux intégrateurs système. décider. Les implémentations LTZP peuvent utiliser les données de carte de fuseau horaire conservées entièrement sur l'appareil Android, exploiter des serveurs ou utiliser une solution approche.

Comportement de la fonctionnalité

Le service time_zone_detector détermine quand modifier la configuration actuelle de l'appareil fuseau horaire en fonction des suggestions reçues des algorithmes de détection.

Le service location_time_zone_manager est chargé de générer suggestions pour l'algorithme de localisation de time_zone_detector. La 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 détection de fuseau horaire logique. Il est chargé de gérer le cycle de vie d'un ou deux plug-ins appelés Fournisseurs de fuseau horaire de localisation (LTZP).

Lorsque la détection du fuseau horaire basé sur la position n'est pas nécessaire, les journaux LTZP ne sont pas démarrés. Ce signifie que le système de détection du fuseau horaire basé sur la position n'exige pas l'emplacement de l'appareil, sauf s'ils y sont explicitement tenus de le faire. Certaines des raisons à ce comportement sont les suivantes:

  • Contrairement aux signaux de téléphonie reçus passivement des opérations téléphoniques normales, la localisation peut être demandée activement via les fournisseurs de géolocalisation Android et que vous consommez davantage d'énergie.
  • Les paramètres de localisation sont définis à l'échelle de l'utilisateur, et Android doit respecter la les paramètres de l'utilisateur.
  • La localisation de l'appareil est sensible à la confidentialité.

De plus, le service location_time_zone_manager fait une suggestion incertaine (si est nécessaire) lorsque l'utilisateur actuel change pour éviter de partager sa position. entre les utilisateurs.

Par conséquent, il faut généralement quelques secondes après le changement l'algorithme actuel à votre position, ou après le changement de l'utilisateur actuel, avant que le fuseau horaire doit être détecté. Cela dépend également des implémentations des LTZP. en cours d'utilisation.

L'implémentation de la détection du fuseau horaire basée sur la localisation AOSP permet d'utiliser jusqu'à deux LTZP, un un réseau principal et un réseau LTZP secondaire, comme défini ici:

LTZP principal
S'exécute à tout moment lorsque l'utilisateur a autorisé la détection du fuseau horaire basé sur la position pour exécuter la fonctionnalité.
LTZP secondaire
S'exécute si le LTZP principal signale que le fuseau horaire est incertain, signale une une défaillance permanente ou un dépassement du délai lors de l'initialisation. S'arrête si l'instance principale LTZP envoie une certaine suggestion.

Comme le montre la figure 1, les services time_zone_detector reçoivent le fuseau horaire des suggestions de l'algorithme de téléphonie ou de localisation. Algorithme de localisation reçoit des suggestions du LTZP principal ou secondaire.

Flux d'informations sur la détection du fuseau horaire basé sur la position

Figure 1 : Flux d'informations sur la détection du fuseau horaire basé sur la position.

Configuration requise pour l'appareil

Pour être compatibles avec la fonctionnalité de localisation du fuseau horaire, les appareils doivent être configurés avec des protocoles LTZP. que l'appareil peut utiliser. Les appareils nécessitent au moins un protocole LTZP pour être activé et configurée pour que la détection du fuseau horaire soit fonctionnelle et visible par utilisateurs dans les paramètres.

Configuration de l'appareil

Cette section explique comment les fabricants peuvent configurer les appareils pour la prise en charge la détection du fuseau horaire basée sur la localisation.

La configuration AOSP de base est la suivante : frameworks/base/core/res/res/values/config.xml:

Clé de configuration Valeur AOSP Description
config_enableGeolocationTimeZoneDetection true Il s'agit de la commande principale de la fonctionnalité de détection du fuseau horaire basée sur la position.

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

Si vous définissez cette valeur sur "false", la fonctionnalité est totalement désactivée pour une petite quantité de mémoire. en cours d'enregistrement.
config_enablePrimaryLocationTimeZoneProvider false Cela active le LTZP principal.
config_primaryLocationTimeZoneProviderPackageName Définissez ce paramètre sur le nom du package de l'application où le service du fournisseur principal sont accessibles.
config_enableSecondaryLocationTimeZoneProvider false Cette opération active le LTZP secondaire.
config_secondaryLocationTimeZoneProviderPackageName Définissez ce paramètre sur le nom du package de l'application où le fournisseur secondaire service peut être trouvé.

Par défaut, la configuration AOSP dispose du Clé config_enableGeolocationTimeZoneDetection définie sur true, activation de la compatibilité pour la fonctionnalité de détection du fuseau horaire basée sur la position. La fonctionnalité n'est pas visible par les utilisateurs, car AOSP n'inclut pas de configuration LTZP par défaut. Toutefois, à l'aide de cette configuration par défaut, les fabricants d'appareils peuvent activer et simuler des LTZP à partir de la ligne de commande à des fins de test. (Pour en savoir plus, consultez Débogage et test.)

API d'état LTZP

Dans Android 14, les API LTZP sont compatibles avec le LTZP des informations sur l'état du signalement. Le LTZP peut ainsi générer des rapports que la plate-forme ne peut pas détecter elle-même, car la plate-forme les composants de détection du fuseau horaire n'interviennent pas directement dans le lieu ou l'heure détection de zone dans l'algorithme de localisation.

Possibilité de signaler que le comportement du LTZP a été dégradé par le comportement de l'appareil est utile lorsque téléphonie mode de remplacement est pris en charge. Par exemple, si un réseau à long terme LTZP tiers s'appuie sur des paramètres personnalisés o aucune autorisation nécessaire au fonctionnement de la détection de la position s'exécute en mode dégradé ou désactivé par les paramètres actuels de l'appareil, il peut signaler cet état aux composants internes de la plate-forme, tels que l'application Paramètres, via le reportSuggestion . L'application Paramètres peut alors envoyer des notifications aux utilisateurs via des chaînes personnalisables ou personnalisations que des paramètres doivent changer pour l’emplacement l'algorithme fonctionne bien, voire pas du tout.

Pour en savoir plus sur les états que le LTZP peut signaler, consultez TimeZoneProviderStatus

Configuration et déploiement LTZP

Lorsque vous configurez un réseau LTZP, lisez les instructions du code source pour en savoir plus : frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java Les commentaires Javadoc fournissent des détails sur le service, les autorisations nécessaires et ou une autre configuration.

Pour configurer un réseau LTZP, les fabricants d'appareils doivent choisir un d'application pour héberger le service LTZP. Disposer d'une procédure dédiée pour un LTZP les frais généraux sont élevés ; Idéalement, le processus choisi est celui qui s'exécute en permanence, comme le serveur système.

Sur les appareils avec 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) incluses dans le Module de données de fuseau horaire (com.android.tzdata). L'une sera probablement mise à jour sans que l'autre ne soit mise à jour ce qui entraîne des problèmes de décalage entre les versions. Pour en savoir plus, consultez Considérations relatives à l'adoption des fonctionnalités.

Référence AOSP LTZP

AOSP contient une implémentation LTZP de référence sous packages/modules/GeoTZ Cette implémentation de référence utilise des API AOSP pour déterminer la position de l'appareil et utilise un fichier de données sur l'appareil pour mapper le lieu à un ensemble d'ID de fuseau horaire.

Un ensemble de données de référence issu d'autres projets Open Source est inclus dans le code source. Pour en savoir plus, consultez README.md et les différents fichiers LICENSE.

Déboguer et tester

La section suivante décrit les commandes shell permettant de déboguer et de tester les de détection du fuseau horaire basée sur la position.

Interagir avec le service location_time_zone_manager

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

Pour vider l'état actuel de location_time_zone_manager, exécutez la commande suivante:

adb shell cmd location_time_zone_manager dump

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

adb shell cmd location_time_zone_manager help

Le résultat de l'aide décrit également les propriétés du service device_config qui peuvent être utilisée pour influer sur le comportement de time_zone_detector à des fins de test ou dans en production. Pour en savoir plus, consultez Configurer un appareil à l'aide du service device_config

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

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