Cette page décrit le fonctionnement de la détection de l'heure et du fuseau horaire sur Android. Ce comprend la manière dont Android détecte automatiquement l'heure et les fuseaux horaires, les options 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 lieux tels que le statut Android, Android suit deux états connexes, mais indépendants:
- L'heure actuelle de l'epoch Unix
- Fuseau horaire actuel
L'heure de l'epoch Unix actuelle et le fuseau horaire actuel sont des états à l'échelle de l'appareil, c'est-à-dire qu'ils sont partagés par tous les utilisateurs d'un appareil.
L'heure actuelle de l'epoch Unix n'est pas une valeur fixe. Il se met à jour automatiquement pour qui reflètent le temps qui s'écoule. Outre le passage normal du temps, L’heure de l’epoch Unix d’un appareil est ajustée si elle s’avère incorrecte, par par exemple, après la mise hors tension d'un appareil.
Le fuseau horaire actuel détermine l'ajustement à effectuer pour convertir le l'heure de l'époque Unix actuelle en heure locale. Par exemple, pendant l'été à Los Angeles, Angeles, l'appareil soustrait 7 heures à l'heure actuelle de l'epoch Unix, en hiver, elle soustrait 8 heures.
Pour prendre en charge ces calculs à l'heure locale, tous les appareils Android disposent d'un base de données de toutes les règles de fuseau horaire globales. Pour plus d'informations sur les règles de fuseau horaire, consultez Règles de fuseau horaire
Lorsqu'un utilisateur se rend dans une nouvelle zone géographique utilisant un fuseau horaire différent, la L'heure actuelle de l'epoch Unix n'a pas besoin d'être ajustée, mais l'utilisateur veut généralement pour voir l'heure locale plutôt que celle de son emplacement précédent. Modification... le fuseau horaire actuel garantit que le décalage correct est appliqué à la Heure de l'epoch Unix pour afficher l'heure locale du nouvel emplacement.
AOSP permet aux utilisateurs de contrôler indépendamment si l'heure et le fuseau horaire sont automatiquement définies pour eux par le biais des mécanismes ci-après.
- Détection automatique de l'heure: elle vérifie que l'appareil dispose des à l'heure epoch Unix actuelle.
- Détection automatique du fuseau horaire: celle-ci vérifie que l'appareil dispose des fuseau horaire actuel.
Détection automatique de l'heure
Cette section présente le service time_detector
qui gère
détection automatique de l'heure, commandes utilisateur, options de configuration et tests
plus de détails.
Le service time_detector
La
time_detector
disponible sur les appareils équipés d'Android 10 ou version ultérieure, gère l'heure automatique
la détection automatique. Il ajuste l'heure d'epoch Unix actuelle de l'appareil si nécessaire lorsque
la détection automatique de l'heure est activée.
Le service time_detector
présente toujours l'un des deux états suivants: uncertain ou
certain. L'état certain ou incertain du service est déterminé
en fonction des suggestions d'horaires qu'il reçoit de diverses sources.
Lorsque le service time_detector
est certain, c'est-à-dire qu'il a reçu une
avec les informations temporelles de l'epoch Unix, celle-ci remplace l'époque Unix actuelle
heure si l'heure suggérée est différente de l'heure actuelle de l'époque Unix.
Lorsque time_detector
est incertain, il ne remplace pas l'heure actuelle. La
un état incertain signifie généralement que le service time_detector
n'a pas reçu l'heure
des suggestions. Le service time_detector
ne sait pas non plus si les suggestions
reçues sont considérés comme trop anciens pour être utilisés. L'ancienneté des suggestions est
car les ajustements effectués à l'aide d'anciennes suggestions d'heures d'epoch Unix se basent sur le
l'horloge en temps réel écoulée de l'appareil, qui est supposée être imprécise
sur de longues périodes.
Pour établir automatiquement l'heure de l'époque Unix actuelle, un appareil possède différentes
sources qu'il peut utiliser. Dans ce document, celles-ci sont appelées origines. La
Le service time_detector
traite les séquences de suggestions comme distinctes en fonction
leur origine.
Le service time_detector
est avec état, ce qui signifie qu'il conserve un enregistrement des
la suggestion la plus récente
pour chaque origine. De nouvelles suggestions sont faites pour
time_detector
si une origine dispose d'informations de temps d'epoch Unix plus récentes
disponibles. Le service time_detector
réévalue les suggestions nouvelles et existantes
et met à jour l'état de l'appareil à la réception de suggestions.
Bien que l'heure UTC soit convenue au niveau international, plusieurs raisons expliquent déterminer l'heure actuelle de l'époque Unix n'est pas toujours simple pour une Appareil Android:
- L'heure de l'epoch Unix est un système de chronométrage légèrement différent de l'heure UTC. La conversion entre les deux nécessite de savoir quand se produisent les secondes intercalaires et et la façon dont elles sont gérées par les origines.
- Il est possible que les origines ne soient disponibles qu'à certains moments les circonstances. Par exemple, si l'origine nécessite une connectivité réseau, il est possible qu'elle ne soit disponible que lorsque l'appareil est connecté à Internet.
- Les origines peuvent être inexactes ou imprécises, ou comporter des erreurs. Pour exemple, si une antenne-relais de téléphonie ne suit pas le "temps universel" correctement, l'origine de téléphonie peut fournir des suggestions d'horaires inexactes.
- Des inexactitudes peuvent être introduites lors de l'obtention de l'heure de l'époque Unix. Par exemple, un retard réseau, une mise en mémoire tampon ou une planification de processus peuvent entraîner que l'heure de l'époque Unix soit inexacte.
- Horloge de référence utilisée pour ajuster une suggestion de temps écoulé depuis la suggestion reçue pourrait être inexacte.
Il existe deux origines principales de détection de l'heure configurées pour être utilisées par défaut dans AOSP:
- Réseau:utilise le réseau des serveurs de temps NTP (Time Protocol).
- Téléphonie:utilise la téléphonie NITZ (Network Identity and Time Zone) signaux.
Les origines de téléphonie et de réseau nécessitent une connectivité à des 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 GPS de localisation pour obtenir une heure à partir d'une source GNSS.
- Externe:générique qui permet aux fabricants d'appareils d'intégrer leur propre source Heure de l'epoch Unix.
Paramètres d'heure
Les utilisateurs peuvent activer la détection automatique de l'heure dans Système > "Date and Time" (Date et heure) dans la section 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 AOSP l'application Paramètres.
*Sur Android 11 ou version antérieure, ce paramètre s'intitule Utiliser 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 | Bouton d'activation Lorsque l'appareil est activé, il est responsable de la détection de la valeur Unix actuelle à l'heure de l'epoch. Lorsqu'elle est désactivée, les utilisateurs disposent de commandes permettant de définir l'heure de votre appareil. |
Lorsque l'utilisateur saisit l'heure manuellement, il saisit son heure locale, et non l'époque Unix. en temps réel. L'heure Unix actuelle est calculée en utilisant le fuseau horaire actuel pour dériver une heure de l'époque Unix.
Configuration
Les fabricants d'appareils peuvent configurer le service time_detector
de différentes manières,
telles que les origines à utiliser et la manière de hiérarchiser leurs signaux.
Priorisation de l'origine
À partir d'Android 12, les fabricants d'appareils peuvent modifier le
core/res/res/values/config.xml
pour spécifier l'heure
les origines à inclure dans la détection automatique de l'heure, et la priorité dans laquelle
time_detector
prend en compte ces origines.
Pour les appareils équipés d'Android 11 ou version antérieure, la priorité de l'origine est codée en dur sur ["telephony", "network"]
, ce qui signifie que les suggestions de téléphonie sont prioritaires.
au-dessus des suggestions de réseaux.
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>
Dans Android 12, les suggestions liées au réseau et à la téléphonie sont configurés comme origines à utiliser par défaut. Les suggestions d'horaires réseau sont prioritaires sur les suggestions d'horaires téléphoniques. Les fabricants d'appareils peuvent changer l'ordre des origines pour revenir au comportement dans Android 11 ou version antérieure, où la téléphonie est prioritaire.
Par défaut, si la suggestion valide ayant la priorité la plus élevée correspond à l'état
l'heure actuelle du système à quelques secondes, l'heure de l'appareil n'est pas
être modifié. Cela permet d'éviter de créer des tâches pour les applications installées qui écoutent
Intent ACTION_TIME_CHANGED
.
Les valeurs d'origine autorisées sont les suivantes:
Limites de temps autorisées
Android 14 introduit une limite de temps maximale
suggestions reçues par le service time_detector
. Si l'appareil est compatible avec
processus 32 bits, le framework définit une limite de temps maximale pour empêcher l'appareil
d'utiliser une suggestion d'heure qui pourrait
déclencher le problème Y2038.
Android 12 a introduit une limite de temps
inférieure qui est utilisée pour
valider les suggestions d'horaire reçues par le service time_detector
. La valeur la plus basse
une valeur limitée dans le temps utilisée pour les suggestions automatiques est définie à partir du code temporel de la compilation.
Cette approche repose sur le principe qu'une heure valide ne peut pas être antérieure à la date
l'image système a été créée. Si une suggestion d'horaire est antérieure à la limite inférieure, le
Le service time_detector
ignore la suggestion, car elle ne peut pas être valide si
l'horodatage de la compilation est correct.
Pour les appareils équipés d'Android 11 ou version antérieure, le service time_detector
n'effectue pas les actions suivantes :
valider les suggestions entrantes d'heure d'epoch Unix.
Temps de débogage et de test
Cette section fournit des informations sur le débogage et le test du comportement
le service time_detector
et d'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
Service time_detector
. Utilisez:
adb shell cmd time_detector dump
Pour afficher des commandes supplémentaires permettant de déboguer et de tester la détection du fuseau horaire, utilisez:
adb shell cmd time_detector help
La sortie d'aide décrit également les propriétés du service device_config pouvant être
utilisée pour influer sur le comportement de time_detector
à des fins de test ou de production.
Pour en savoir plus, consultez
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
Le service time_detector
est en cours d'utilisation. Voici un exemple de résultat pour
la commande adb shell cmd time_detector dump
, avec les informations
l'état d'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:
...
Ces 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() |
Limite inférieure actuelle utilisée pour valider les suggestions d'horaires. |
mEnvironment.autoOriginPriorities() |
Origines utilisées et ordre de priorité. |
Le journal des modifications d'heure indique les moments où le service time_detector
a
modifié l'heure actuelle de l'époque Unix de l'appareil.
L'historique des suggestions indique les suggestions proposées par chaque origine.
Détection automatique du fuseau horaire
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, les services de téléphonie et
la détection du fuseau horaire
en fonction du lieu et les détails des tests.
Le service time_zone_detector
La
time_zone_detector
disponible sur les appareils équipés d'Android 11 ou version ultérieure, gère l'heure automatique
de détection de zone. Il ajuste le fuseau horaire actuel de l'appareil si nécessaire
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 être dans
l'un des deux états suivants: uncertain et certain.
Lorsque le service time_zone_detector
est dans un certain état, cela signifie que
Le service time_zone_detector
a reçu des informations fiables sur le fuseau horaire, ce qui
peut entraîner le remplacement du fuseau horaire actuel. En cas de doute, cette
signifie qu'il n'a reçu aucune information ou seulement des informations peu fiables, ce qui
cela signifie qu'il ne remplacera
pas le fuseau horaire actuel.
Certains états du service time_zone_detector
peuvent inclure ceux où
time_zone_detector
ne dispose d'aucune information de fuseau horaire à utiliser ou d'emplacements où elle dispose
plusieurs fuseaux horaires. Ces états sont les suivants:
- Un certain état sans fuseau horaire apparaît lorsque l'appareil est
quelque part sans fuseau horaire, par exemple dans les eaux internationales ou
dans la zone contestée. Cet état est semblable à un état incertain, mais indique
que
time_zone_detector
n'a pas besoin d'effectuer d'autres actions pour essayer de déterminer le fuseau horaire. - Un certain État avec plusieurs fuseaux horaires est entré alors qu'il existe
les conditions d'ambiguïté ou
des limites. Dans cet état, si le fuseau horaire actuel est
l'un des fuseaux horaires dont
time_zone_detector
est certain, le le fuseau horaire actuel reste inchangé. Sinon, l'un des horaires disponibles est utilisé. Cela donne àtime_zone_detector
un élément d'adhésion si l'utilisateur a précédemment sélectionné manuellement son fuseau horaire ou comme l'appareil s'approche d'une bordure.
L'état certain ou incertain du service time_zone_detector
est déterminé par
suggestions de fuseau horaire envoyées par un algorithme.
Généralement, il existe deux types de suggestions qui correspondent étroitement aux états possibles
de time_zone_detector
: certain et uncertain. Les éléments suivants sont
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é avec 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 vous ne pouvez pas choisir entre "Amérique/Denver" et "America/Phoenix".
Le service time_zone_detector
traite les séquences de suggestions comme des séquences distinctes.
en fonction de leur algorithme. En fonction de l'algorithme, les suggestions peuvent également
contiennent des métadonnées qui indiquent
le degré de certitude de l’algorithme.
Le service time_zone_detector
est avec état, ce qui signifie qu'il conserve un enregistrement.
de la suggestion la plus récente
de chaque algorithme. De nouvelles suggestions sont envoyées
au service time_zone_detector
si une suggestion précédente n'est plus
Correct ; c'est-à-dire si un algorithme a
maintenant une suggestion différente, ou s'il a
ne peut plus 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 lorsque
suggestions sont reçues.
Android prend en charge deux algorithmes pour la 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 pris en charge sur un appareil,
l'algorithme utilisé par l'appareil est déterminé en fonction
Paramètres de fuseau horaire configurés par l'utilisateur Lorsque
l'algorithme en cours d'utilisation n'est pas certain du fuseau horaire time_zone_detector
n'utilise généralement pas les suggestions d'un autre algorithme. 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 utilisées que si l'algorithme
des modifications. 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
un nouvel algorithme est utilisé.
Pour en savoir plus sur la situation dans laquelle plusieurs algorithmes sont utilisés pour déterminer le fuseau horaire, consultez Téléphonie en mode de remplacement.
Mode de remplacement pour les appels
Sur les appareils équipés d'Android 13 ou version ultérieure,
Le service time_zone_detector
est compatible avec le mode de secours pour la téléphonie. Ce mode
permet à Android d'utiliser temporairement les suggestions de détection téléphonique dans les cas où
La détection de la position ne parvient pas à détecter le fuseau horaire ni l'endroit où la détection de la position
est plus longue à détecter le fuseau horaire que la détection par téléphonie.
Le mode de remplacement pour les services de téléphonie s'applique aux appareils et si l'utilisateur a activé l'option Utiliser la localisation pour définir fuseau horaire dans les paramètres de fuseau horaire. Le mode est activé automatiquement au redémarrage d'un appareil et lorsque le mode Avion est désactivé.
Dans Android 14 et versions ultérieures, la téléphonie de remplacement peut déclenchés via API LTZP de création de rapports d'état Autrement dit, si un LTZP indique qu'il est incertain et qu'il est capable de détecter sa position ou que le fuseau horaire est dégradé en raison de son environnement, le mode de remplacement téléphonique déclenchée.
En mode de secours pour la téléphonie, le service time_zone_detector
utilise la téléphonie
suggestions de détection de la position jusqu'à ce que l'algorithme de localisation soit désactivé
fait une certaine suggestion. Après avoir reçu une certaine suggestion, la fonction
le mode de remplacement est désactivé et les suggestions de lieux sont utilisées exclusivement.
Pour en savoir plus sur la configuration du mode de secours pour la téléphonie, consultez 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 du fuseau horaire dans les paramètres.
Le tableau suivant décrit les commandes utilisateur permettant de détecter le fuseau horaire dans le Application Paramètres AOSP.
*Sur Android 11 ou version antérieure, ce paramètre est associé au libellé 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 | Bouton d'activation Lorsqu'il est allumé, l'appareil est chargé de détecter l'heure actuelle dans la zone. Lorsqu'elle est désactivée, les utilisateurs disposent de commandes permettant de définir les fuseau horaire manuellement. |
Système > Date et heure | Utiliser la position pour définir le fuseau horaire | Utilisateur actuel | Bouton d'activation Disponible à partir d'Android 12. Ce bouton bascule est ne s'affiche que lorsque la détection du fuseau horaire de localisation est prise en charge sur l'appareil. Pour connaître les modifications apportées dans Android 14, consultez <ph type="x-smartling-placeholder"></ph> Appareils qui n'acceptent que la détection du fuseau horaire basée sur la position |
Localisation | Utiliser ma position | Utilisateur actuel | Bouton d'activation Autorise ou empêche l'utilisation de la position de l'appareil de manière générale. La valeur est pertinent si la détection du fuseau horaire de la position est prise en charge sur l'appareil. |
Vous trouverez ci-dessous un aperçu du comportement des appareils selon le 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 and Time] Définir le fuseau horaire automatiquement:ACTIVÉ
[Location] Utiliser la localisation:DÉSACTIVÉE
- Les signaux de téléphonie permettent de détecter le fuseau horaire.
[Location] Utiliser la position:ACTIVÉE
[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 téléphoniques sont utilisés pour détecter l'heure dans la zone.
Appareils appartenant à plusieurs utilisateurs
Étant donné que plusieurs des paramètres impliqués s'appliquent à l'utilisateur actuel, le comportement de détection du fuseau horaire d'un appareil peut changer lorsque l'utilisateur actuel sur un appareil Android multi-utilisateur.
Le bouton Utiliser la localisation pour définir le fuseau horaire est limité à l'utilisateur actuel. n'est pas limité par des règles relatives aux appareils, ce qui signifie que les utilisateurs peuvent toujours même si l'option Définir le fuseau horaire automatiquement est désactivée ou si d'autres l'heure ou le fuseau horaire sont limités par l'outil de contrôle des règles relatives aux appareils.
Appareils qui n'acceptent que l'algorithme de détection du fuseau horaire basé sur la position
Cette section décrit le comportement des appareils qui n'acceptent que la localisation algorithme.
Android 14 ou version ultérieure
- Les utilisateurs ne peuvent pas voir l'option Utiliser ma position dans les paramètres AOSP. application et l'appareil se comporte comme si l'option Utiliser ma position était activée.
- La valeur du paramètre
SettingsProvider
de portée utilisateurlocation_time_zone_detection_enabled
est ignoré. Cette valeur enregistre les préférences de l'utilisateur sur d'autres types d'appareils.
Android 12 ou Android 13
- Les utilisateurs peuvent voir l'option Utiliser ma position dans l'application Paramètres d'AOSP et les utilisateurs peuvent désactiver cette option. Si cette option est désactivée, l'appareil ne détecte pas automatiquement le fuseau horaire.
Comportement en cas d'activation ou de désactivation de la détection automatique
Lorsque l'utilisateur passe la détection du fuseau horaire manuelle à automatique,
time_zone_detector
est peut-être déjà certain du fuseau horaire actuel. Si oui,
Lorsque l'utilisateur active la détection automatique, le fuseau horaire de l'appareil peut être modifié
en même temps pour correspondre à l'opinion du service time_zone_detector
.
De même, lorsque l'utilisateur apporte une modification aux paramètres qui entraîne la modification de
l'algorithme actuel du service time_zone_detector
, time_zone_detector
pourrait
ont déjà reçu des suggestions pour le nouvel algorithme. L'heure de l'appareil
peut être modifié pour correspondre à l'opinion du service time_zone_detector
immédiatement.
Détection du fuseau horaire de la téléphonie
La détection du fuseau horaire téléphonique utilise des signaux de téléphonie pour déterminer fuseau horaire. Pour en savoir plus, consultez la section Fuseau horaire de la téléphonie Détection.
Détection du fuseau horaire basée sur la position
La détection du fuseau horaire basé sur la position est disponible sur Android 12 ou supérieur. Il s'agit d'une fonctionnalité facultative de détection automatique du fuseau horaire appareils d’utiliser leur position pour déterminer le fuseau horaire actuel.
Le service location_time_zone_manager
, présenté dans
Android 12 fonctionne dans
serveur système et contient le code chargé d'envoyer l'emplacement
des suggestions d'algorithmes au service time_zone_detector
.
Pour en savoir plus, consultez
Détection du fuseau horaire des positions :
Considérations relatives à l'adoption des fonctionnalités
Cette section décrit certains aspects de la fonctionnalité de détection du fuseau horaire basée sur la position pour aident un fabricant d'appareils à déterminer s'il faut adopter la fonctionnalité sur un appareil.
Comparer la téléphonie et la détection de la position
Le tableau suivant compare les avantages et les inconvénients en utilisant la localisation plutôt que les signaux téléphoniques pour détecter le fuseau horaire.
Détection de la téléphonie | Détection de la position | |
---|---|---|
Exactitude | La somme varie selon les pays. Cela dépend du CM, de l'exactitude et de la disponibilité du numéro NITZ. |
Cela dépend de la configuration de la fonctionnalité ou des composants du plug-in. L'exactitude varie généralement en fonction des éléments suivants:
|
Facilité de mise à jour | La détection des services de téléphonie s'appuie sur les fichiers contenus dans le champ Time (Date et heure) mis à jour Module de données de zone (com.android.tzdata APEX). | Cela dépend de la configuration de la fonctionnalité ou des composants du plug-in. La facilité de mise à jour varie généralement selon que l'appareil utilise un serveur ou un client de la carte des fuseaux horaires. Remarque: Les données de la carte de fuseau horaire ne sont pas contenues dans le champ Heure Module de données de zone utilisé pour mettre à jour la copie Android de TZDB et d'autres données les informations de zone. Les fabricants d'appareils doivent également tenir compte de la cohérence des versions entre les des règles de fuseau horaire et des données de la carte de fuseau horaire. |
Consommation | 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 quelles autres applications demandent la localisation. |
Disponibilité | Appareils de téléphonie uniquement. Nécessite généralement une carte SIM opérationnelle. | La détection de la position dépend des fournisseurs de géolocalisation disponibles. |
Confidentialité des utilisateurs
Le fuseau horaire préféré d'un utilisateur est généralement déterminé par son emplacement l'emplacement. La localisation est une donnée sensible. Les utilisateurs peuvent être préoccupés de leur position est partagée dans le cadre de la détection du fuseau horaire. Sans rapport avec la détection du fuseau horaire, toutes les applications exécutées sur un appareil peuvent lire les le fuseau horaire actuel de votre appareil sans avoir besoin d'une autorisation Android ; et applications peuvent 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 signifie:
- Passif: un élément de l'environnement indique à l'appareil fuseau horaire à utiliser dans cet environnement.
- Actif: l'appareil doit déterminer lui-même le fuseau horaire et en fonction de l'expérience utilisateur paramètres de confidentialité et leur consentement, obtient le l'emplacement de l'appareil. Il peut alors partager son emplacement avec des personnes services. 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 pas d'autorisations sur la confidentialité pour les utilisateurs.
La détection active, par exemple avec l'algorithme de localisation, consiste à déterminer la position de l'appareil, que les utilisateurs ne souhaitent peut-être pas accepter, et l'emplacement pourrait être envoyé sur un réseau afin de déterminer l'identifiant du fuseau horaire.
L'approche d'Android en termes de confidentialité pour la détection du fuseau horaire donne à l'utilisateur la possibilité de désactiver individuellement les algorithmes qui devraient être actifs. De plus, le code de la plate-forme AOSP ne gère pas directement l'emplacement lui-même: La détection de la position et la mise en correspondance des données de localisation et des identifiants de fuseau horaire sont laissées au plug-in. composants configurés par les fabricants de périphériques.
Pour en savoir plus sur les fonctionnalités de confidentialité des données des utilisateurs, consultez la section Fuseau horaire de la position Détection.
Configuration
Les fabricants d'appareils peuvent configurer le service time_zone_detector
pour modifier
son comportement. Cette section décrit les options de configuration
le comportement du service time_zone_detector
. Pour en savoir plus sur la configuration de
les algorithmes de téléphonie et de détection du fuseau horaire, consultez
Détection du fuseau horaire de la téléphonie
et
Détection du fuseau horaire des positions :
La configuration AOSP de base est la suivante :
frameworks/base/core/res/res/values/config.xml
Clé de configuration | Valeur AOSP | Description |
---|---|---|
config_supportTelephonyTimeZoneFallback |
true |
Lorsque true , time_zone_detector utilise la téléphonie
le mode de remplacement. Cette fonctionnalité est disponible pour Android 13
et supérieurs.
|
Modifier le comportement par défaut de l'appareil
Dans AOSP, la détection automatique du fuseau horaire est activée par défaut
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
dans
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
à 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. Pour vous assurer que
n'est pas restauré à partir d'une sauvegarde, incluez auto_time_zone
dans
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 fournit des informations sur le débogage et le test du comportement
le service time_zone_detector
et les autres composants partagés par tous
algorithmes.
Configurer un appareil à l'aide du service device_config
Le service device_config
est un mécanisme utilisé sur Android pour configurer
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
à des fins de test,
en particulier lors de tests manuels de longue durée, il se peut que l'appareil synchronise
des indicateurs, ce qui les réinitialiserait et effacerait les valeurs définies pour les tests.
Sous Android 12 ou version ultérieure, pour empêcher temporairement l'indicateur , utilisez:
adb shell cmd device_config set_sync_disabled_for_tests persistent
Pour restaurer la synchronisation des indicateurs après les tests, utilisez la commande suivante:
adb shell cmd device_config set_sync_disabled_for_tests none
Après avoir restauré 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 time_zone_detector
de
Service time_zone_detector
. Utilisez:
adb shell cmd time_zone_detector dump
Pour afficher des commandes supplémentaires permettant de déboguer et de tester la détection du fuseau horaire, utilisez:
adb shell cmd time_zone_detector help
Le résultat de l'aide décrit également les propriétés du service device_config
qui peuvent
peut être utilisée pour modifier le comportement du service time_zone_detector
à des fins de test
ou en production. Pour en savoir plus, consultez
Configurer un appareil à l'aide du service device_config
Pour valider la détection du fuseau horaire, les testeurs doivent connaître l'algorithme
time_zone_detector
utilise. 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 Paramètres de fuseau horaire
Utilisez la ligne de commande via adb:
- Pour vider l'état de
time_zone_detector
, utilisezadb shell cmd time_zone_detector dump
- Pour modifier les paramètres 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 de
Voici un exemple de résultat de la commande adb shell cmd
time_zone_detector dump
, avec les informations sur la requête actuelle
l'algorithme et l'état du service 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:
...
Ces informations peuvent être interprétées comme suit:
Clé | Valeur |
---|---|
mUserConfigAllowed |
Indique si l'utilisateur ne peut pas contrôler les paramètres de date et d'heure en le <ph type="x-smartling-placeholder"></ph> Device Policy Controller. |
mTelephonyDetectionSupported |
Indique si l'appareil dispose de la détection du fuseau horaire téléphonique. |
mGeoDetectionSupported |
Indique si l'appareil est compatible avec la détection du fuseau horaire basée sur la position. Il s'agit de la effectif en fonction de la configuration et de la présence d'au moins un LTZP. |
mAutoDetectionEnabled |
Indique si la détection automatique du fuseau horaire est activée. |
mLocationEnabled |
Bouton d'activation/de désactivation de l'emplacement principal |
mGeoDetectionEnabled |
Le commutateur de l'algorithme: false indique l'algorithme de téléphonie.
et true indique l'algorithme de localisation. |
Les informations de l'historique des suggestions indiquent les suggestions qui ont été faites via les paramètres (manuellement), ainsi que par les algorithmes de téléphonie et de localisation.