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.
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