Cette page décrit le fonctionnement de la détection de l'heure et du fuseau horaire sur Android. Cela inclut la façon dont Android détecte automatiquement l'heure et les fuseaux horaires, les options de configuration pour les fabricants d'appareils et les informations de test.
Présentation de l'heure et des fuseaux horaires
Pour déterminer l'heure locale d'un utilisateur à afficher dans des emplacements tels que la barre d'état, Android suit deux états liés, mais indépendants:
- Heure Unix actuelle
- Fuseau horaire actuel
L'heure Unix actuelle et le fuseau horaire actuel sont des états à l'échelle de l'appareil, ce qui signifie qu'ils sont partagés par tous les utilisateurs d'un appareil.
L'heure Unix actuelle n'est pas une valeur fixe. Il se met à jour automatiquement pour refléter le passage du temps. En plus du passage normal du temps, l'heure Unix actuelle d'un appareil est ajustée si elle est incorrecte, par exemple après que l'appareil a perdu son alimentation.
Le fuseau horaire actuel détermine l'ajustement à effectuer pour convertir l'heure Unix actuelle en heure locale. Par exemple, en été à Los Angeles, l'appareil soustrait sept heures de l'heure Unix actuelle, et en hiver, il en soustrait huit.
Pour prendre en charge ces calculs de l'heure locale, tous les appareils Android disposent d'une base de données de toutes les règles de fuseau horaire mondial. Pour en savoir plus sur les règles de fuseau horaire, consultez la section Règles de fuseau horaire.
Lorsqu'un utilisateur se rend dans un nouvel emplacement qui utilise un fuseau horaire différent, l'heure Unix actuelle n'a pas besoin d'être ajustée, mais l'utilisateur souhaite généralement voir l'heure locale plutôt que l'heure de son emplacement précédent. Modifier le fuseau horaire actuel permet de s'assurer que le décalage horaire approprié est appliqué à l'heure Unix actuelle pour afficher l'heure locale correcte pour le nouvel emplacement.
AOSP permet aux utilisateurs de contrôler indépendamment si l'heure et le fuseau horaire sont définis automatiquement pour eux via les mécanismes suivants.
- Détection automatique de l'heure: permet de s'assurer que l'appareil dispose de l'heure Unix actuelle correcte.
- Détection automatique des fuseaux horaires: permet de s'assurer que l'appareil utilise le fuseau horaire actuel correct.
Détection automatique de l'heure
Cette section présente le service time_detector
qui gère la détection automatique de l'heure, les commandes utilisateur, les options de configuration et les détails des tests.
Service time_detector
Le service time_detector
, présent sur les appareils équipés d'Android 10 ou version ultérieure, gère la détection automatique de l'heure. Il ajuste l'heure Unix actuelle de l'appareil si nécessaire lorsque la détection automatique de l'heure est activée.
Le service time_detector
est toujours dans l'un des deux états suivants: incertain ou certain. L'état certain ou incertain du service est déterminé par les suggestions de temps qu'il reçoit de différentes sources.
Lorsque le service time_detector
est certain, c'est-à-dire qu'il a reçu une suggestion avec des informations sur l'epoch Unix, il remplace l'epoch Unix actuelle si la suggestion d'heure est différente de l'epoch Unix actuelle.
Lorsque time_detector
est incertain, il ne remplace pas l'heure actuelle. L'état incertain signifie généralement que le service time_detector
n'a pas reçu de suggestions de temps. Le service time_detector
devient également incertain si les suggestions qu'il a reçues sont considérées comme trop anciennes pour être utilisées. L'âge des suggestions est pris en compte, car les ajustements utilisant d'anciennes suggestions d'heure d'époque Unix reposent sur l'horloge en temps réel écoulée de l'appareil, qui est supposée être inexacte sur de longues périodes.
Pour établir automatiquement l'heure Unix actuelle, un appareil peut utiliser différentes sources. Dans ce document, ils sont appelés origines. Le service time_detector
traite les séquences de suggestions comme distinctes en fonction de leur origine.
Le service time_detector
est basé sur l'état, ce qui signifie qu'il conserve un enregistrement de la suggestion la plus récente faite par chaque origine. De nouvelles suggestions sont envoyées à time_detector
si des informations plus récentes sur l'époque Unix sont disponibles pour une origine. Le service time_detector
réévalue les suggestions nouvelles et existantes, et met à jour l'état de l'appareil lorsqu'il en reçoit.
Bien que l'heure UTC soit convenue au niveau international, il existe plusieurs raisons pour lesquelles l'établissement de l'heure Unix actuelle n'est pas toujours simple pour un appareil Android:
- L'heure Unix est un système de chronométrage légèrement différent de l'heure UTC. Pour convertir l'un dans l'autre, vous devez savoir quand les secondes intercalaires se produisent et comment elles sont gérées par les origines.
- Les origines peuvent ne pas être disponibles à certaines heures ou dans certaines circonstances. Par exemple, si l'origine nécessite une connectivité réseau, elle n'est peut-être disponible que lorsque l'appareil est connecté à Internet.
- Les origines peuvent être inexactes ou imprécises, ou comporter des erreurs. Par exemple, si une antenne-relais de téléphonie ne suit pas correctement l'heure universelle, l'origine de la téléphonie peut fournir des suggestions d'heures inexactes.
- Des inexactitudes peuvent être introduites lors de l'obtention de l'heure Unix. Par exemple, un retard réseau, un tamponnage ou une planification de processus peuvent entraîner une inexactitude de l'epoch Unix.
- L'horloge de référence utilisée pour ajuster une suggestion en fonction du temps écoulé depuis sa réception peut être inexacte.
Deux origines principales de détection du temps sont configurées pour être utilisées par défaut dans AOSP:
- Réseau:utilise des serveurs de temps NTP (Network Time Protocol).
- Téléphonie:utilise les signaux de téléphonie de l'identité réseau et du fuseau horaire (NITZ, Network Identity and Time Zone).
Les origines de téléphonie et de réseau nécessitent une connectivité aux réseaux externes, qui ne sont pas toujours disponibles.
À partir d'Android 12, Android est également compatible avec les origines suivantes, qui ne sont pas configurées pour être utilisées par défaut:
- GNSS:utilise le fournisseur de position GPS pour obtenir une heure à partir d'une source GNSS.
- Externe:origine générique qui permet aux fabricants d'appareils d'intégrer leur propre source d'époque Unix.
Paramètres d'heure
Les utilisateurs peuvent activer la détection automatique de l'heure dans Système > Date et heure dans l'application Paramètres AOSP.
Figure 1 : Détection automatique de l'heure dans les paramètres.
Le tableau suivant décrit les commandes utilisateur pour la détection du temps dans l'application Paramètres AOSP.
*Sur Android 11 ou version antérieure, ce paramètre est intitulé Utiliser l'heure fournie par le réseau. |
|||
Emplacement des paramètres AOSP | Nom des paramètres AOSP | Champ d'application | Comportement |
---|---|---|---|
Système > Date et heure | Définir l'heure automatiquement* | Tous les utilisateurs | Un bouton d'activation/de désactivation. Lorsque l'option est activée, l'appareil est chargé de détecter l'heure Unix actuelle. Lorsqu'il est désactivé, les utilisateurs disposent de commandes pour régler manuellement l'heure de l'appareil. |
Lorsque l'utilisateur saisit l'heure manuellement, il saisit l'heure locale, et non l'heure Unix. Le temps d'époque Unix actuel est calculé à l'aide du fuseau horaire actuel pour obtenir un temps d'époque Unix.
Configuration
Les fabricants d'appareils peuvent configurer le service time_detector
de différentes manières, par exemple en indiquant les origines à utiliser et la façon de hiérarchiser les signaux provenant de ces origines.
Priorisation des origines
À partir d'Android 12, les fabricants d'appareils peuvent modifier le fichier de configuration core/res/res/values/config.xml
pour spécifier les origines temporelles à inclure dans la détection automatique de l'heure et la priorité avec laquelle time_detector
tient compte de ces origines.
Pour les appareils équipés d'Android 11 ou version antérieure, la priorité d'origine est codée en dur sur ["telephony", "network"]
, ce qui signifie que les suggestions de téléphonie sont prioritaires par rapport aux suggestions de réseau.
La configuration AOSP par défaut est la suivante:
<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list
take precedence over lower ones.
See com.android.server.timedetector.TimeDetectorStrategy for available sources. -->
<string-array name="config_autoTimeSourcesPriority">
<item>network</item>
<item>telephony</item>
</string-array>
Sous Android 12, les suggestions de réseau et de téléphonie sont configurées comme origines à utiliser par défaut. Les suggestions d'heure réseau sont prioritaires par rapport aux suggestions d'heure de téléphonie. Les fabricants d'appareils peuvent modifier l'ordre des origines pour revenir au comportement d'Android 11 ou version antérieure, où la téléphonie est prioritaire.
Par défaut, si la suggestion valide de priorité la plus élevée correspond à l'heure de l'horloge système actuelle de l'appareil à quelques secondes près, l'heure de l'appareil ne change pas. Cela permet d'éviter de créer du travail pour les applications installées qui écoutent l'intent ACTION_TIME_CHANGED
.
Les valeurs d'origine autorisées sont les suivantes:
Intervalles de temps autorisés
Android 14 introduit une limite de temps supérieure pour les suggestions de temps reçues par le service time_detector
. Si l'appareil est compatible avec les processus 32 bits, le framework définit une limite de temps supérieure pour empêcher l'appareil d'utiliser une suggestion de date et d'heure susceptible de déclencher le problème de l'an 2038.
Android 12 a introduit une limite de temps inférieure qui permet de valider les suggestions de temps reçues par le service time_detector
. La valeur inférieure de la limite temporelle utilisée pour les suggestions automatiques est définie à partir du code temporel de compilation.
Cela fonctionne selon le principe qu'une heure valide ne peut pas être antérieure à la création de l'image système de l'appareil. Si une suggestion d'heure est antérieure à la limite inférieure, le service time_detector
ignore la suggestion, car elle ne peut pas être valide si le code temporel de compilation est correct.
Pour les appareils équipés d'Android 11 ou version antérieure, le service time_detector
ne valide pas les suggestions d'heure Unix entrantes.
Débogage et test du temps
Cette section explique comment déboguer et tester le comportement du service time_detector
et des autres composants partagés par toutes les origines.
Interagir avec le service time_detector
Pour afficher la configuration et l'état du service time_detector
, utilisez :time_detector
adb shell cmd time_detector dump
Pour afficher d'autres commandes de débogage et de test de la détection du fuseau horaire, utilisez:
adb shell cmd time_detector help
La sortie d'aide décrit également les propriétés de service device_config qui peuvent être utilisées pour influer sur le comportement de time_detector
à des fins de test ou en production.
Pour en savoir plus, consultez la section Configurer un appareil à l'aide du service device_config.
Pour valider la détection automatique de l'heure, les testeurs doivent connaître les origines utilisées par le service time_detector
. Voici un exemple de sortie de la commande adb shell cmd time_detector dump
, avec les informations sur l'origine et l'état du service actuels en gras:
$ adb shell cmd time_detector dump
TimeDetectorStrategy:
mLastAutoSystemClockTimeSet=null
mEnvironment.isAutoTimeDetectionEnabled()=true
mEnvironment.elapsedRealtimeMillis()=23717241
mEnvironment.systemClockMillis()=1626707861336
mEnvironment.systemClockUpdateThresholdMillis()=2000
mEnvironment.autoTimeLowerBound()=2021-07-19T07:48:05Z(1626680885000)
mEnvironment.autoOriginPriorities()=[network,telephony]
Time change log:
...
Telephony suggestion history:
...
Network suggestion history:
...
Gnss suggestion history:
...
External suggestion history:
...
Les informations peuvent être interprétées comme suit:
Clé | Valeur |
---|---|
mEnvironment.isAutoTimeDetectionEnabled() |
Indique si la détection automatique de l'heure est activée. |
mEnvironment.autoTimeLowerBound() |
Seuil inférieur actuel utilisé pour valider les suggestions d'heure. |
mEnvironment.autoOriginPriorities() |
Les origines utilisées et l'ordre de priorité. |
Le journal des changements d'heure indique les occasions où le service time_detector
a modifié l'heure Unix actuelle de l'appareil.
Les informations de l'historique des suggestions indiquent les suggestions qui ont été effectuées par chaque origine.
Détection automatique des fuseaux horaires
Cette section présente le service time_zone_detector
qui gère la détection automatique du fuseau horaire, les commandes utilisateur dans les paramètres, la détection du fuseau horaire de téléphonie et de localisation, ainsi que les détails des tests.
Le service time_zone_detector
Le service time_zone_detector
, présent sur les appareils équipés d'Android 11 ou version ultérieure, gère la détection automatique de la zone horaire. Elle ajuste le fuseau horaire actuel de l'appareil si nécessaire lorsque la détection automatique du fuseau horaire est activée.
Lorsque la détection automatique du fuseau horaire est activée, time_zone_detector
peut se trouver dans l'un des deux états suivants: incertain et certain.
Lorsque le service time_zone_detector
est dans un état particulier, cela signifie qu'il a reçu des informations de fuseau horaire précises, ce qui peut l'amener à remplacer le fuseau horaire actuel.time_zone_detector
Lorsqu'il est incertain, cela signifie qu'il n'a reçu aucune information ou seulement des informations peu fiables, ce qui signifie qu'il ne remplacera pas le fuseau horaire actuel.
Certains états du service time_zone_detector
peuvent inclure des états où time_zone_detector
ne dispose d'aucune information de fuseau horaire à utiliser ou où il a le choix entre plusieurs fuseaux horaires. Les États concernés sont les suivants:
- Un état sans fuseau horaire est saisi lorsque l'appareil se trouve dans un lieu sans fuseau horaire, comme dans les eaux internationales ou dans une zone contestée. Cet état est semblable à un état incertain, mais indique que
time_zone_detector
n'a pas besoin de prendre d'autres mesures pour essayer de déterminer le fuseau horaire. - Un état avec plusieurs fuseaux horaires est saisi en cas d'ambiguïté ou de conditions frontalières. Dans cet état, si le fuseau horaire actuel est l'un des fuseaux horaires dont
time_zone_detector
est certain, le fuseau horaire actuel est laissé tel quel. Sinon, l'un des fuseaux horaires disponibles est utilisé. Cela donne àtime_zone_detector
un élément de persistance si l'utilisateur a précédemment sélectionné manuellement son fuseau horaire ou lorsque l'appareil approche d'une frontière.
L'état certain ou incertain du service time_zone_detector
est déterminé par les suggestions de fuseau horaire envoyées par un algorithme.
En général, les suggestions se présentent sous deux formes qui correspondent étroitement aux états possibles de time_zone_detector
: certain et incertain. Voici des exemples de types de suggestions:
type =
uncertain
,zoneIds = []
- L'algorithme ne connaît pas le fuseau horaire.
type =
certain
,zoneIds = ["Europe/London"]
- L'algorithme est certain que la zone est Europe/Londres.
type =
certain
,zoneIds = []
`- L'algorithme est certain, mais aucun ID de zone n'est associé à l'emplacement actuel.
type =
certain
,zoneIds = ["America/Denver", "America/Phoenix"]
- L'algorithme est certain que la réponse est l'une des deux zones, mais ne peut pas choisir entre "America/Denver" et "America/Phoenix".
Le service time_zone_detector
traite les séquences de suggestions comme distinctes en fonction de leur algorithme. Selon l'algorithme, les suggestions peuvent également contenir des métadonnées indiquant le niveau de certitude de l'algorithme.
Le service time_zone_detector
est basé sur l'état, ce qui signifie qu'il conserve un enregistrement de la suggestion la plus récente faite par chaque algorithme. De nouvelles suggestions sont envoyées au service time_zone_detector
si une suggestion précédente n'est plus correcte, c'est-à-dire si un algorithme propose désormais une suggestion différente ou s'il a perdu la capacité de détecter le fuseau horaire. Le service time_zone_detector
réévalue les suggestions nouvelles et existantes, et met à jour l'état de l'appareil lorsqu'il en reçoit.
Android prend en charge deux algorithmes de détection du fuseau horaire:
- Téléphonie
- Position
Le service time_zone_detector
utilise généralement un seul algorithme pour déterminer le fuseau horaire. Lorsque l'algorithme de localisation est compatible avec un appareil, l'algorithme utilisé par l'appareil est déterminé en fonction des paramètres de fuseau horaire configurés par l'utilisateur. Lorsque l'algorithme utilisé n'est plus certain du fuseau horaire, time_zone_detector
n'utilise généralement pas les suggestions d'un autre algorithme. Les suggestions associées à des algorithmes qui ne sont pas utilisés peuvent être conservées en mémoire par time_zone_detector
, mais elles ne sont pas utilisées sauf si l'algorithme change. Lorsque l'utilisateur modifie les paramètres de détection automatique du fuseau horaire et que l'algorithme change, la suggestion la plus récente disponible pour le nouvel algorithme est utilisée.
Pour en savoir plus sur la situation où plusieurs algorithmes sont utilisés pour déterminer le fuseau horaire, consultez la section Mode de remplacement de la téléphonie.
Mode de remplacement de la téléphonie
Sur les appareils équipés d'Android 13 ou version ultérieure, le service time_zone_detector
est compatible avec le mode de remplacement de la téléphonie. Ce mode permet à Android d'utiliser temporairement les suggestions de détection de téléphonie dans les situations où la détection de position ne parvient pas à détecter le fuseau horaire ou où la détection de position prend plus de temps à détecter le fuseau horaire que la détection de téléphonie.
Le mode de remplacement de la téléphonie s'applique aux appareils où la téléphonie et la détection de position sont prises en charge, et où l'utilisateur a activé Utiliser la position pour définir le fuseau horaire dans les paramètres de fuseau horaire. Le mode est activé automatiquement lorsqu'un appareil est redémarré et lorsque le mode Avion est désactivé.
Sous Android 14 et versions ultérieures, le basculement vers la téléphonie peut être déclenché via les API de signalement de l'état du LTZP. Autrement dit, si un LTZP indique qu'il est incertain et que sa capacité à détecter la position ou le fuseau horaire est dégradée par son environnement, le mode de basculement vers la téléphonie est déclenché.
En mode de remplacement par téléphonie, le service time_zone_detector
utilise les suggestions de téléphonie comme si la détection de position était désactivée jusqu'à ce que l'algorithme de localisation propose une suggestion. Une fois qu'une suggestion est reçue, le mode de remplacement de la téléphonie est désactivé et les suggestions de lieu sont utilisées exclusivement.
Pour en savoir plus sur la configuration du mode de remplacement par téléphonie, consultez la section Configuration de la détection du fuseau horaire.
Paramètres de fuseau horaire
Les utilisateurs peuvent activer et configurer les paramètres de détection automatique du fuseau horaire dans l'application Paramètres AOSP.
Figure 2. Détection automatique des fuseaux horaires dans les paramètres.
Le tableau suivant décrit les commandes utilisateur pour la détection du fuseau horaire dans l'application Paramètres AOSP.
*Sur Android 11 ou version antérieure, ce paramètre est intitulé Utiliser le fuseau horaire fourni par le réseau. |
|||
Emplacement des paramètres AOSP | Nom des paramètres AOSP | Champ d'application | Comportement |
---|---|---|---|
Système > Date et heure | Définir le fuseau horaire automatiquement* | Tous les utilisateurs | Un bouton d'activation/de désactivation. Lorsque cette option est activée, l'appareil est chargé de détecter le fuseau horaire actuel. Lorsque cette option est désactivée, les utilisateurs disposent de commandes pour définir manuellement le fuseau horaire de l'appareil. |
Système > Date et heure | Utiliser la position pour définir le fuseau horaire | Utilisateur actuel | Un bouton d'activation/de désactivation. Disponible à partir d'Android 12. Ce bouton bascule ne s'affiche que lorsque la détection du fuseau horaire basée sur la position est compatible avec l'appareil. Pour en savoir plus sur les modifications apportées par Android 14, consultez la section Appareils compatibles uniquement avec la détection du fuseau horaire de la position. |
Localisation | Utiliser ma position | Utilisateur actuel | Un bouton d'activation/de désactivation. Autorise ou interdit l'utilisation de la position de l'appareil de manière générale. La valeur est pertinente si la détection du fuseau horaire basée sur la position est compatible avec l'appareil. |
Vous trouverez ci-dessous un aperçu du comportement de l'appareil pour la détection du fuseau horaire en fonction des paramètres choisis par l'utilisateur:
[Date et heure] Définir le fuseau horaire automatiquement:DÉSACTIVÉ
- L'utilisateur doit sélectionner manuellement le fuseau horaire.
[Date et heure] Définir le fuseau horaire automatiquement:activé
[Position] Utiliser la position:désactivé
- Les signaux de téléphonie sont utilisés pour détecter le fuseau horaire.
[Position] Utiliser la position:activé
[Date et heure] Utiliser la position pour définir le fuseau horaire:activé
- La position est utilisée pour détecter le fuseau horaire.
[Date et heure] Utiliser la position pour définir le fuseau horaire:DÉSACTIVÉ
- Les signaux de téléphonie sont utilisés pour détecter le fuseau horaire.
Appareils multi-utilisateurs
Étant donné que plusieurs des paramètres concernés sont limités à l'utilisateur actuel, le comportement de détection du fuseau horaire d'un appareil peut changer lorsque l'utilisateur actuel change sur un appareil Android multi-utilisateur.
Le bouton bascule Utiliser la position pour définir le fuseau horaire est limité à l'utilisateur actuel et n'est pas limité par la stratégie de l'appareil. Cela signifie que les utilisateurs peuvent toujours modifier sa valeur, même lorsque le bouton bascule Définir le fuseau horaire automatiquement est désactivé ou si d'autres commandes d'heure ou de fuseau horaire sont limitées par le contrôleur de stratégie de l'appareil.
Appareils compatibles uniquement avec l'algorithme de détection du fuseau horaire basé sur la position
Cette section décrit le comportement des appareils qui ne prennent en charge que l'algorithme de localisation.
Android 14 ou version ultérieure
- L'option Utiliser la position n'est pas affichée dans l'application Paramètres AOSP, et l'appareil se comporte comme si l'option Utiliser la position était activée.
- La valeur du paramètre
SettingsProvider
de portée utilisateurlocation_time_zone_detection_enabled
est ignorée. Cette valeur enregistre les préférences de l'utilisateur sur d'autres types d'appareils.
Android 12 ou Android 13
- L'option Utiliser la position est visible par les utilisateurs dans l'application Paramètres AOSP. Ils peuvent la désactiver. Si l'option est désactivée, l'appareil ne détecte pas automatiquement le fuseau horaire.
Comportement lors de la désactivation et de l'activation de la détection automatique
Lorsque l'utilisateur passe de la détection du fuseau horaire manuelle à la détection automatique, time_zone_detector
peut déjà être certain du fuseau horaire actuel. Si tel est le cas, lorsque l'utilisateur active la détection automatique, le fuseau horaire de l'appareil peut être modifié en même temps pour correspondre à l'avis du service time_zone_detector
.
De même, lorsque l'utilisateur modifie les paramètres et modifie l'algorithme actuel du service time_zone_detector
, time_zone_detector
peut déjà avoir reçu des suggestions pour le nouvel algorithme. L'heure de l'appareil peut donc être modifiée pour correspondre immédiatement à l'opinion du service time_zone_detector
.
Détection du fuseau horaire de téléphonie
La détection du fuseau horaire par téléphonie utilise des signaux de téléphonie pour déterminer le fuseau horaire actuel. Pour en savoir plus, consultez la section Détection du fuseau horaire de téléphonie.
Détection du fuseau horaire basée sur la position
La détection du fuseau horaire basée sur la position est disponible sur Android 12 ou version ultérieure. Il s'agit d'une fonctionnalité facultative de détection automatique des fuseaux horaires qui permet aux appareils d'utiliser leur position pour déterminer le fuseau horaire actuel.
Le service location_time_zone_manager
, introduit dans Android 12, s'exécute sur le serveur système et contient le code chargé d'envoyer des suggestions d'algorithmes de localisation au service time_zone_detector
.
Pour en savoir plus, consultez la section Détection du fuseau horaire de l'emplacement.
Considérations concernant l'adoption des fonctionnalités
Cette section décrit certains aspects de la fonctionnalité de détection du fuseau horaire de l'emplacement pour aider un fabricant d'appareils à déterminer s'il doit l'adopter sur un appareil.
Comparer la téléphonie et la détection de position
Le tableau suivant compare les avantages et les inconvénients de l'utilisation de la position plutôt que des signaux de téléphonie pour la détection du fuseau horaire.
Détection de la téléphonie | Détection de la position | |
---|---|---|
Exactitude | La somme varie selon les pays. Dépend de la MCC, de l'exactitude et de la disponibilité de NITZ. |
Dépend de la configuration de la fonctionnalité ou des composants du plug-in. La précision varie généralement en fonction des éléments suivants:
|
Mise à jour | La détection de la téléphonie repose sur les fichiers contenus dans le module de données de zone horaire (com.android.tzdata APEX) pouvant être mis à jour. | Dépend de la configuration de la fonctionnalité ou des composants du plug-in. La possibilité de mise à jour dépend généralement de l'utilisation par l'appareil de données de mappage de fuseaux horaires du serveur ou du client. Remarque: Les données de la carte des fuseaux horaires ne sont pas incluses dans le module de données sur les fuseaux horaires utilisé pour mettre à jour la copie d'Android de la base de données TZDB et d'autres informations sur les fuseaux horaires. Les fabricants d'appareils doivent également tenir compte de la cohérence des versions entre les règles de fuseau horaire et les données de la carte des fuseaux horaires. |
Consommation d'énergie | Consommation d'énergie nulle ou faible | Cela dépend des paramètres de localisation de l'utilisateur, des plug-ins utilisés et généralement des autres applications qui demandent la localisation. |
Disponibilité | Appareils de téléphonie uniquement. Nécessite généralement une carte SIM fonctionnelle. | La détection de position dépend des fournisseurs de position disponibles. |
Confidentialité des utilisateurs
Le fuseau horaire préféré d'un utilisateur est généralement déterminé par sa position géographique. La position est une donnée sensible. Les utilisateurs peuvent être préoccupés par le partage de leur position dans le cadre de la détection du fuseau horaire. Indépendamment de la détection du fuseau horaire, toutes les applications exécutées sur un appareil peuvent lire le fuseau horaire actuel de l'appareil sans nécessiter d'autorisation Android. Elles peuvent également déduire une idée imprécise de la position de l'appareil à partir de ces informations.
Plus précisément, la détection du fuseau horaire peut fonctionner de manière passive ou active:
- Passif: un élément de l'environnement de l'appareil lui indique le fuseau horaire à utiliser dans cet environnement.
- Actif: l'appareil doit déterminer lui-même le fuseau horaire et, en fonction des paramètres de confidentialité et du consentement des utilisateurs, obtenir la position de l'appareil pour ce faire. Il peut ensuite partager sa position avec des services externes. Pour en savoir plus sur la confidentialité et le consentement des utilisateurs, consultez la discussion ci-dessous.
La détection passive, comme avec l'algorithme de téléphonie, n'a aucune implication supplémentaire en termes de confidentialité pour les utilisateurs.
La détection active, comme avec l'algorithme de localisation, consiste à déterminer la position de l'appareil, ce que les utilisateurs ne souhaitent peut-être pas accepter. La position peut être envoyée sur un réseau afin de déterminer l'ID de fuseau horaire.
L'approche d'Android concernant la confidentialité des utilisateurs pour la détection de fuseau horaire permet à l'utilisateur de désactiver individuellement les algorithmes qui devraient être actifs. De plus, le code de la plate-forme AOSP ne gère pas directement la position elle-même : la détection de la position et la mise en correspondance de la position avec les ID de fuseau horaire sont laissées aux composants de plug-in configurés par les fabricants d'appareils.
Pour en savoir plus sur les fonctionnalités de confidentialité des utilisateurs, consultez la section Détection du fuseau horaire de la position.
Configuration
Les fabricants d'appareils peuvent configurer le service time_zone_detector
pour modifier son comportement. Cette section décrit les options de configuration pour le comportement général du service time_zone_detector
. Pour en savoir plus sur la configuration des algorithmes de détection de la téléphonie et du fuseau horaire, consultez Détection du fuseau horaire de téléphonie et Détection du fuseau horaire de la position.
La configuration de base d'AOSP se trouve à l'emplacement frameworks/base/core/res/res/values/config.xml
.
Clé de configuration | Valeur AOSP | Description |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Lorsque true , time_zone_detector utilise le mode de remplacement de la téléphonie. Cette fonctionnalité est disponible pour Android 13 ou version ultérieure.
|
Modifier le comportement par défaut de l'appareil
Dans AOSP, la détection automatique des fuseaux horaires est activée par défaut, avec le paramètre auto_time_zone
défini sur true
. Pour désactiver la détection automatique de l'heure par défaut, définissez la valeur de def_auto_time_zone
définie dans frameworks/base/packages/SettingsProvider/res/values/defaults.xml
sur false
.
Lors de la restauration d'une sauvegarde à partir d'un autre appareil, le framework met à jour la valeur du paramètre auto_time_zone
par défaut. Si vous souhaitez vous assurer que ce paramètre n'est pas restauré à partir d'une sauvegarde, incluez auto_time_zone
dans le tableau restore_blocked_global_settings
défini dans frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml
.
Débogage et test du fuseau horaire
Cette section explique comment déboguer et tester le comportement du service time_zone_detector
et des autres composants partagés par tous les algorithmes.
Configurer un appareil à l'aide du service device_config
Le service device_config
est un mécanisme utilisé sur Android pour configurer un comportement modifiable à l'aide de valeurs généralement extraites d'un serveur distant par du code propriétaire (non AOSP). Lorsque vous utilisez des valeurs device_config
pour les tests, en particulier lors de tests manuels de longue durée, l'appareil peut synchroniser les indicateurs, ce qui les réinitialise et efface les valeurs définies pour les tests.
Dans Android 12 ou version ultérieure, pour empêcher temporairement la synchronisation des indicateurs, utilisez:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Pour restaurer la synchronisation des indicateurs après les tests, utilisez:
adb shell cmd device_config set_sync_disabled_for_tests none
Après avoir rétabli la synchronisation des indicateurs, redémarrez l'appareil.
Pour en savoir plus, utilisez $ adb shell cmd device_config help
.
Interagir avec le service time_zone_detector
Pour afficher la configuration et l'état du service time_zone_detector
, utilisez :time_zone_detector
adb shell cmd time_zone_detector dump
Pour afficher d'autres commandes de débogage et de test de la détection du fuseau horaire, utilisez:
adb shell cmd time_zone_detector help
La sortie d'aide décrit également les propriétés de service device_config
qui peuvent être utilisées pour influer sur le comportement du service time_zone_detector
à des fins de test ou en production. Pour en savoir plus, consultez la section Configurer un appareil à l'aide du service device_config.
Pour valider la détection du fuseau horaire, les testeurs doivent connaître l'algorithme utilisé par time_zone_detector
. Pour comprendre et influencer l'algorithme actuel de time_zone_detector
, utilisez l'une des options suivantes:
- Vérifiez visuellement dans l'interface utilisateur des paramètres. Pour en savoir plus, consultez la section Paramètres du fuseau horaire.
Utilisez la ligne de commande via adb:
- Pour vider l'état
time_zone_detector
, utilisezadb shell cmd time_zone_detector dump
. - Pour modifier le paramètre de l'appareil, utilisez d'autres commandes
time_zone_detector
. Pour en savoir plus, utilisezadb shell cmd time_zone_detector help
.
- Pour vider l'état
Voici un exemple de sortie de la commande adb shell cmd
time_zone_detector dump
, avec les informations sur l'algorithme et l'état du service actuels en gras:
$ adb shell cmd time_zone_detector dump
TimeZoneDetectorStrategy:
mEnvironment.getCurrentUserId()=0
mEnvironment.getConfiguration(currentUserId)=ConfigurationInternal{mUserId=0, mUserConfigAllowed=true, mTelephonyDetectionSupported=true, mGeoDetectionSupported=true, mAutoDetectionEnabled=true, mLocationEnabled=true, mGeoDetectionEnabled=true}
[Capabilities=TimeZoneCapabilitiesAndConfig{mCapabilities=TimeZoneDetectorCapabilities{mUserHandle=UserHandle{0}, mConfigureAutoDetectionEnabledCapability=40, mConfigureGeoDetectionEnabledCapability=40, mSuggestManualTimeZoneCapability=30}, mConfiguration=TimeZoneConfiguration{mBundle=Bundle[{geoDetectionEnabled=true, autoDetectionEnabled=true}]}}]
mEnvironment.isDeviceTimeZoneInitialized()=true
mEnvironment.getDeviceTimeZone()=Europe/London
Time zone change log:
Manual suggestion history:
...
Geolocation suggestion history:
...
Telephony suggestion history:
...
Les informations peuvent être interprétées comme suit:
Clé | Valeur |
---|---|
mUserConfigAllowed |
Indique si l'utilisateur est empêché de contrôler les paramètres de date et d'heure par le Device Policy Controller (Contrôleur de stratégie d'appareil). |
mTelephonyDetectionSupported |
Indique si l'appareil est équipé de la détection du fuseau horaire pour la téléphonie. |
mGeoDetectionSupported |
Indique si l'appareil est compatible avec la détection du fuseau horaire basée sur la position. Il s'agit de l'état effectif en fonction de la configuration et de la présence d'au moins un LTZP. |
mAutoDetectionEnabled |
Indique si la détection automatique des fuseaux horaires est activée. |
mLocationEnabled |
Bouton d'activation/de désactivation de la localisation |
mGeoDetectionEnabled |
Le bouton d'activation de l'algorithme: false indique l'algorithme de téléphonie, et true l'algorithme de localisation. |
Les informations de l'historique des suggestions indiquent les suggestions qui ont été proposées via les paramètres (manuellement) et par les algorithmes de téléphonie et de localisation.