Vue d'ensemble de l'heure

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, elles 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 lorsque des suggestions sont reçues.

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

Détection automatique de l'heure dans les paramètres

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 de date/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

Le résultat de l'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 avec zéro fuseau horaire est saisi lorsque l'appareil est un endroit 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 inutilisés peuvent être conservées en mémoire 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.

Détection automatique du fuseau horaire dans les paramètres

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

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

L'option Utiliser la localisation pour définir le fuseau horaire est limitée à l'utilisateur actuel. n'est pas limitée 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 utilisateur location_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 fait passer la détection du fuseau horaire de manuel à 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:
  • Précision et régularité du fournisseur de services de localisation
  • Qualité des données de la carte des fuseaux horaires.
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 des fuseaux horaires 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 les règles de fuseau horaire et les 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 offre à 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 d’appareils.

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 être utilisé pour modifier le comportement du service time_zone_detector lors des tests 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, utilisez adb 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, utilisez adb shell cmd time_zone_detector help.

Voici un exemple de résultat de la commande adb shell cmd time_zone_detector dump, avec les informations sur la requête actuelle de l'algorithme et de 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), et par les algorithmes de téléphonie et de localisation.