Resumen de tiempo

Esta página describe cómo funciona la detección de hora y zona horaria en Android. Esto incluye cómo Android detecta automáticamente la hora y las zonas horarias, opciones de configuración para fabricantes de dispositivos e información de prueba.

Descripción general de la hora y las zonas horarias

Para determinar la hora local de un usuario para mostrarla en ubicaciones como la barra de estado, Android realiza un seguimiento de dos estados relacionados pero independientes:

  • La época actual de Unix
  • La zona horaria actual

La época actual de Unix y la zona horaria actual son estados de todo el dispositivo, lo que significa que son compartidos por todos los usuarios de un dispositivo.

La época actual de Unix no es un valor fijo. Se actualiza automáticamente para reflejar el paso del tiempo. Además del paso normal del tiempo, la época Unix actual de un dispositivo se ajusta si se determina que es incorrecta, por ejemplo, después de que un dispositivo pierde energía.

La zona horaria actual determina el ajuste que se realizará para convertir la hora actual de la época Unix en una hora local. Por ejemplo, durante el verano en Los Ángeles, el dispositivo resta 7 horas del tiempo actual de la época Unix, y en invierno resta 8 horas.

Para admitir estos cálculos de hora local, todos los dispositivos Android tienen una base de datos de todas las reglas de zona horaria global . Para obtener más información sobre las reglas de zona horaria, consulte Reglas de zona horaria .

Cuando un usuario viaja a una nueva ubicación que utiliza una zona horaria diferente, no es necesario ajustar la época actual de Unix, pero el usuario normalmente quiere ver la hora local en lugar de la hora de su ubicación anterior. Cambiar la zona horaria actual garantiza que se aplique el desplazamiento correcto a la época actual de Unix para mostrar la hora local correcta para la nueva ubicación.

AOSP permite a los usuarios controlar de forma independiente si la hora y la zona horaria se configuran automáticamente para ellos a través de los siguientes mecanismos.

  • Detección automática de hora: garantiza que el dispositivo tenga la hora actual correcta de Unix.
  • Detección automática de zona horaria: garantiza que el dispositivo tenga la zona horaria actual correcta.

Detección automática de tiempo

Esta sección proporciona una descripción general del servicio time_detector que administra la detección automática de tiempo, controles de usuario, opciones de configuración y detalles de prueba.

El servicio detector de tiempo

El servicio time_detector , presente en dispositivos con Android 10 o superior, gestiona la detección automática de la hora. Ajusta la época actual de Unix del dispositivo según sea necesario cuando la detección automática de hora está habilitada.

El servicio time_detector siempre está en uno de dos estados: incierto o seguro . El estado cierto o incierto del servicio está determinado por las sugerencias de tiempo que recibe de diversas fuentes.

Cuando el servicio time_detector es seguro, lo que significa que ha recibido una sugerencia con información de la época de Unix, anula la hora de la época actual de Unix si la sugerencia de tiempo es diferente de la hora de la época actual de Unix.

Cuando time_detector es incierto, no anula la hora actual. El estado incierto generalmente significa que el servicio time_detector no ha recibido sugerencias de tiempo. El servicio time_detector también se vuelve inseguro si las sugerencias que ha recibido se consideran demasiado antiguas para usarse. La antigüedad de las sugerencias se considera porque los ajustes que utilizan sugerencias de tiempo de época antiguas de Unix se basan en el reloj de tiempo real transcurrido en el dispositivo, que se supone que es inexacto durante períodos prolongados.

Para establecer automáticamente la época actual de Unix, un dispositivo tiene varias fuentes que puede utilizar. Estos se denominan orígenes en este documento. El servicio time_detector trata las secuencias de sugerencias como distintas según su origen.

El servicio time_detector tiene estado, lo que significa que mantiene un registro de la sugerencia más reciente realizada por cada origen. Se hacen nuevas sugerencias a time_detector si un origen tiene disponible información de tiempo de época Unix más reciente. El servicio time_detector reevalúa sugerencias nuevas y existentes y actualiza el estado del dispositivo cuando se reciben sugerencias.

Aunque la hora UTC se acuerda internacionalmente, existen varias razones por las que establecer la época actual de Unix no siempre es sencillo para un dispositivo Android:

  • La época de Unix es un sistema de cronometraje sutilmente diferente de la hora UTC. La conversión entre los dos requiere saber cuándo ocurren los segundos intercalares y cómo los manejan los orígenes.
  • Es posible que los orígenes solo estén disponibles en determinados momentos o bajo determinadas circunstancias. Por ejemplo, si el origen requiere conectividad de red, es posible que esté disponible solo mientras el dispositivo esté conectado a Internet.
  • Los orígenes pueden ser inexactos o imprecisos, o tener errores. Por ejemplo, si una torre de telefonía celular no rastrea correctamente la "hora universal", el origen de la telefonía podría proporcionar sugerencias de hora inexactas.
  • Es posible que se introduzcan imprecisiones al obtener la época de Unix. Por ejemplo, un retraso de la red, el almacenamiento en búfer o la programación de procesos pueden provocar que la época de Unix sea inexacta.
  • El reloj de referencia utilizado para ajustar una sugerencia según el tiempo transcurrido desde que se recibió la sugerencia puede ser inexacto.

Hay dos orígenes principales de detección de tiempo configurados para su uso de forma predeterminada en AOSP:

  • Red : utiliza servidores de hora del protocolo de tiempo de red (NTP).
  • Telefonía: Utiliza señales de telefonía de identidad de red y zona horaria (NITZ).

Tanto los orígenes de telefonía como de red requieren conectividad a redes externas, que no siempre están disponibles.

A partir de Android 12, Android también admite los siguientes orígenes, que no están configurados para su uso de forma predeterminada:

  • GNSS : utiliza el proveedor de ubicación GPS para obtener una hora de una fuente GNSS.
  • Externo : Origen genérico que permite a los fabricantes de dispositivos integrar su propia fuente de época Unix.

Ajustes de hora

Los usuarios pueden habilitar la detección automática de la hora en Sistema > Fecha y hora en la aplicación Configuración de AOSP.

Detección automática de tiempo en Configuración

Figura 1. Detección automática de hora en Configuración.

La siguiente tabla describe los controles de usuario para la detección de tiempo en la aplicación de configuración de AOSP.

*En Android 11 y versiones anteriores, esta configuración está etiquetada como Usar tiempo proporcionado por la red.

Ubicación de la configuración de AOSP Nombre de configuración de AOSP Alcance Comportamiento
Sistema > Fecha y hora Establecer la hora automáticamente* Todos los usuarios

Una palanca.

Cuando está activado , el dispositivo es responsable de detectar la época actual de Unix. Cuando está apagado , los usuarios cuentan con controles para configurar la hora del dispositivo manualmente.

Cuando el usuario ingresa la hora manualmente, ingresa su hora local, no la hora de la época Unix. La hora actual de la época Unix se calcula utilizando la zona horaria actual para derivar la hora de la época Unix.

Configuración

Los fabricantes de dispositivos pueden configurar el servicio time_detector de varias maneras, como qué orígenes usar y cómo priorizar las señales de ellos.

Priorización de origen

A partir de Android 12, los fabricantes de dispositivos pueden cambiar el archivo de configuración core/res/res/values/config.xml para especificar qué orígenes de tiempo incluir en la detección automática de tiempo y la prioridad en la que time_detector considera estos orígenes.

Para dispositivos con Android 11 o versiones anteriores, la prioridad de origen está codificada en ["telephony", "network"] , lo que significa que las sugerencias de telefonía tienen prioridad sobre las sugerencias de red.

La configuración predeterminada de AOSP es la siguiente:

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

En Android 12 las sugerencias de redes y telefonía están configuradas como orígenes para usar de forma predeterminada. Las sugerencias de tiempo de red tienen prioridad sobre las sugerencias de tiempo de telefonía. Los fabricantes de dispositivos pueden cambiar el orden de los orígenes para volver al comportamiento en Android 11 o versiones anteriores, donde la telefonía tiene mayor prioridad.

De forma predeterminada, si la sugerencia válida de mayor prioridad coincide con la hora actual del reloj del sistema del dispositivo en un par de segundos, la hora del dispositivo no se cambiará. Esto es para evitar crear trabajo para aplicaciones instaladas que escuchan la intención ACTION_TIME_CHANGED .

Los valores de origen permitidos son:

Límites de tiempo permitidos

Android 14 introduce un límite de tiempo superior para las sugerencias de tiempo recibidas por el servicio time_detector . Si el dispositivo admite procesos de 32 bits, el marco establece un límite de tiempo superior para evitar que el dispositivo utilice una sugerencia de tiempo que podría desencadenar el problema Y2038.

Android 12 introdujo un límite de tiempo inferior que se utiliza para validar las sugerencias de tiempo recibidas por el servicio time_detector . El valor límite de tiempo inferior utilizado para las sugerencias automáticas se establece a partir de la marca de tiempo de compilación. Esto funciona según el principio de que un momento válido no puede ser anterior a que se genere la imagen del sistema del dispositivo. Si una sugerencia de tiempo es anterior al límite de tiempo inferior, el servicio time_detector descarta la sugerencia porque no puede ser válida si la marca de tiempo de compilación es correcta.

Para dispositivos con Android 11 o versiones anteriores, el servicio time_detector no valida las sugerencias entrantes de tiempo de época de Unix.

Depuración y prueba de tiempo

Esta sección proporciona información sobre cómo depurar y probar el comportamiento del servicio time_detector y otros componentes compartidos por todos los orígenes.

Interactuando con el servicio time_detector

Para ver la configuración y time_detector estado del servicio time_detector , utilice:

adb shell cmd time_detector dump

Para ver comandos adicionales para depurar y probar la detección de zona horaria, utilice:

adb shell cmd time_detector help

El resultado de la ayuda también describe las propiedades del servicio device_config que se pueden usar para afectar el comportamiento de time_detector para pruebas o en producción. Para obtener más información, consulte Configuración de un dispositivo mediante el servicio device_config .

Para validar la detección automática de tiempo, los evaluadores deben saber qué orígenes está utilizando el servicio time_detector . El siguiente es un ejemplo del resultado del comando adb shell cmd time_detector dump , con la información sobre el origen actual y el estado del servicio en negrita:

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

La información se puede interpretar de la siguiente manera:

Llave Valor
mEnvironment.isAutoTimeDetectionEnabled() Si la detección automática de tiempo está habilitada.
mEnvironment.autoTimeLowerBound() El límite inferior actual utilizado para validar sugerencias de tiempo.
mEnvironment.autoOriginPriorities() Los orígenes en uso y el orden de prioridad.

El registro de cambio de hora indica ocasiones en las que el servicio time_detector ha cambiado la época actual de Unix del dispositivo.

La información del historial de sugerencias indica qué sugerencias ha realizado cada origen.

Detección automática de zona horaria

Esta sección proporciona una descripción general del servicio time_zone_detector que administra la detección automática de zona horaria, controles de usuario en la configuración, detección de zona horaria de telefonía y ubicación, y detalles de prueba.

El servicio time_zone_detector

El servicio time_zone_detector , presente en dispositivos con Android 11 o superior, gestiona la detección automática de zona horaria. Ajusta la zona horaria actual del dispositivo según sea necesario cuando la detección automática de zona horaria está habilitada.

Cuando la detección automática de zona horaria está habilitada, time_zone_detector puede estar en uno de dos estados: incierto y seguro .

Cuando el servicio time_zone_detector está en un estado determinado, esto significa que el servicio time_zone_detector ha recibido información sólida de la zona horaria, lo que puede hacer que anule la zona horaria actual. Cuando no está seguro, esto significa que no ha recibido información o solo ha recibido información de baja confianza, lo que significa que no anulará la zona horaria actual.

Ciertos estados del servicio time_zone_detector pueden incluir aquellos en los que time_zone_detector no tiene información de zona horaria para usar, o donde tiene múltiples zonas horarias para elegir. Estos estados son los siguientes:

  • Se ingresa a un cierto estado con cero zonas horarias cuando el dispositivo se encuentra en algún lugar sin zona horaria, como en aguas internacionales o en un área en disputa. Este estado es similar a un estado incierto, pero indica que time_zone_detector no necesita realizar más acciones para intentar determinar la zona horaria.
  • Se ingresa a un determinado estado con múltiples zonas horarias donde hay ambigüedad o condiciones fronterizas. En este estado, si la zona horaria actual es una de las zonas horarias de las que time_zone_detector está seguro, la zona horaria actual se deja como está. De lo contrario, se utiliza una de las zonas horarias disponibles. Esto le da time_zone_detector un elemento de rigidez si el usuario ha seleccionado manualmente su zona horaria previamente o cuando el dispositivo se acerca a un borde.

El estado cierto o incierto del servicio time_zone_detector está determinado por las sugerencias de zona horaria que envía un algoritmo .

Generalmente, las sugerencias vienen en dos tipos que coinciden estrechamente con los posibles estados de time_zone_detector : ciertas e inciertas . Los siguientes son ejemplos de tipos de sugerencias:

  • tipo = uncertain , zoneIds = []

    • El algoritmo no sabe cuál es la zona horaria.
  • tipo = certain , zoneIds = ["Europe/London"]

    • El algoritmo está seguro de que la zona es Europa/Londres.
  • tipo = certain , zoneIds = [] `

    • El algoritmo es seguro, pero no hay ningún ID de zona asociado con la ubicación actual.
  • tipo = certain , zoneIds = ["America/Denver", "America/Phoenix"]

    • El algoritmo está seguro de que la respuesta es una de dos zonas, pero no puede elegir entre "América/Denver" y "América/Phoenix".

El servicio time_zone_detector trata las secuencias de sugerencias como distintas según su algoritmo. Dependiendo del algoritmo, las sugerencias también pueden contener metadatos que indiquen qué tan seguro es el algoritmo.

El servicio time_zone_detector tiene estado, lo que significa que mantiene un registro de la sugerencia más reciente realizada por cada algoritmo. Las nuevas sugerencias se envían al servicio time_zone_detector si una sugerencia anterior ya no es correcta; es decir, si un algoritmo ahora tiene una sugerencia diferente, o si ha perdido la capacidad de detectar la zona horaria. El servicio time_zone_detector reevalúa sugerencias nuevas y existentes y actualiza el estado del dispositivo cuando se reciben sugerencias.

Android admite dos algoritmos para la detección de zona horaria:

  • Telefonía
  • Ubicación

El servicio time_zone_detector normalmente utiliza un único algoritmo para determinar la zona horaria. Cuando el algoritmo de ubicación es compatible con un dispositivo, el algoritmo que utiliza el dispositivo se determina en función de la configuración de zona horaria configurada por el usuario. Cuando el algoritmo en uso no está seguro de la zona horaria, time_zone_detector no suele utilizar sugerencias de un algoritmo diferente. Las sugerencias asociadas con algoritmos que no están en uso se pueden mantener en la memoria mediante time_zone_detector , pero no se usan a menos que el algoritmo cambie. Cuando el usuario cambia la configuración para la detección automática de zona horaria y el algoritmo cambia, se utiliza la sugerencia más reciente disponible para el nuevo algoritmo.

Para obtener detalles sobre la situación en la que se utilizan varios algoritmos para determinar la zona horaria, consulte Modo de reserva de telefonía .

Modo de reserva de telefonía

En dispositivos con Android 13 y versiones posteriores, el servicio time_zone_detector admite el modo de reserva de telefonía . Este modo permite que Android use sugerencias de detección de telefonía temporalmente en situaciones en las que la detección de ubicación no puede detectar la zona horaria o donde la detección de ubicación tarda más en detectar la zona horaria que la detección de telefonía.

El modo de reserva de telefonía se aplica a dispositivos donde se admiten tanto la telefonía como la detección de ubicación, y donde el usuario ha habilitado Usar ubicación para establecer la zona horaria en Configuración de zona horaria . El modo se habilita automáticamente cuando se reinicia un dispositivo y cuando el modo avión está deshabilitado.

En Android 14 y versiones posteriores, el respaldo de telefonía se puede activar a través de las API de informes de estado de LTZP , es decir, si un LTZP informa que es incierto y su capacidad para detectar la ubicación o la zona horaria se ve degradada por su entorno, se activa el modo de respaldo de telefonía.

Cuando está en modo de reserva de telefonía, el servicio time_zone_detector utiliza sugerencias de telefonía como si la detección de ubicación estuviera deshabilitada hasta que el algoritmo de ubicación haga una sugerencia determinada. Después de recibir una determinada sugerencia, el modo de reserva de telefonía se desactiva y las sugerencias de ubicación se utilizan exclusivamente.

Para obtener detalles de configuración para el modo de reserva de telefonía, consulte Configuración de detección de zona horaria .

Configuración de zona horaria

Los usuarios pueden habilitar y configurar los ajustes para la detección automática de zona horaria en la aplicación de configuración AOSP.

Detección automática de zona horaria en Configuración

Figura 2. Detección automática de zona horaria en Configuración.

La siguiente tabla describe los controles de usuario para la detección de zona horaria en la aplicación de configuración de AOSP.

*En Android 11 y versiones anteriores, esta configuración está etiquetada como Usar zona horaria proporcionada por la red.

Ubicación de la configuración de AOSP Nombre de configuración de AOSP Alcance Comportamiento
Sistema > Fecha y hora Establecer zona horaria automáticamente* Todos los usuarios

Una palanca.

Cuando está encendido , el dispositivo es responsable de detectar la zona horaria actual. Cuando está apagado , los usuarios cuentan con controles para configurar la zona horaria del dispositivo manualmente.

Sistema > Fecha y hora Usar la ubicación para establecer la zona horaria Usuario actual

Una palanca.

Disponible desde Android 12. Esta opción se muestra solo cuando el dispositivo admite la detección de zona horaria de ubicación.

Para conocer los cambios introducidos en 14, consulte Dispositivos que solo admiten la detección de zona horaria de ubicación .

Ubicación Usar ubicación Usuario actual

Una palanca.

Permite o impide el uso de la ubicación del dispositivo en general. El valor es relevante si el dispositivo admite la detección de zona horaria de ubicación.

A continuación se proporciona una descripción general del comportamiento del dispositivo para la detección de zona horaria dada la configuración elegida por el usuario:

  • [Fecha y hora] Establecer zona horaria automáticamente: APAGADO

    • El usuario debe seleccionar manualmente la zona horaria.
  • [Fecha y hora] Establecer zona horaria automáticamente: ON

    • [Ubicación] Usar ubicación: APAGADO

      • Las señales de telefonía se utilizan para detectar la zona horaria.
    • [Ubicación] Usar ubicación: ENCENDIDO

      • [Fecha y hora] Usar ubicación para configurar la zona horaria: ENCENDIDO

        • La ubicación se utiliza para detectar la zona horaria.
      • [Fecha y hora] Usar ubicación para configurar la zona horaria: APAGADO

        • Las señales de telefonía se utilizan para detectar la zona horaria.

Múltiples dispositivos de usuario

Debido a que varias de las configuraciones involucradas están dirigidas al usuario actual, el comportamiento de detección de zona horaria de un dispositivo puede cambiar cuando el usuario actual cambia en un dispositivo Android multiusuario.

La opción Usar ubicación para configurar la zona horaria está limitada al usuario actual y no está restringida por la política del dispositivo, lo que significa que los usuarios siempre pueden cambiar su valor, incluso cuando la opción Establecer zona horaria automáticamente está desactivada o si hay otros controles de hora o zona horaria. están restringidos por el Controlador de políticas de dispositivos.

Dispositivos que admiten únicamente el algoritmo de detección de zona horaria de ubicación

Esta sección describe el comportamiento de los dispositivos que solo admiten el algoritmo de ubicación.

  • Android 14 y superior

    • La opción Usar ubicación no se muestra a los usuarios en la aplicación Configuración de AOSP y el dispositivo se comporta como si la opción Usar ubicación estuviera habilitada.
    • Se ignora el valor de la configuración SettingsProvider del ámbito del usuario location_time_zone_detection_enabled . Este valor registra la preferencia del usuario sobre otro tipo de dispositivos.
  • Android 12 o Android 13

    • La opción Usar ubicación es visible para los usuarios en la aplicación Configuración de AOSP y los usuarios pueden desactivar la opción. Si la opción está desactivada, el dispositivo no detectará la zona horaria automáticamente.

Comportamiento al cambiar hacia y desde la detección automática

Cuando el usuario cambia la detección de zona horaria de manual a automática , es posible que time_zone_detector ya esté seguro de la zona horaria actual. Si es así, a medida que el usuario habilita la detección automática, la zona horaria del dispositivo podría cambiarse al mismo tiempo para que coincida con la opinión del servicio time_zone_detector .

De manera similar, cuando el usuario realiza un cambio en la configuración que resulta en un cambio en el algoritmo actual del servicio time_zone_detector , es posible que time_zone_detector ya haya recibido sugerencias para el nuevo algoritmo y, por lo tanto, la hora del dispositivo podría cambiarse para que coincida con la opinión del servicio time_zone_detector inmediatamente.

Detección de zona horaria de telefonía

La detección de zona horaria de telefonía utiliza señales de telefonía para determinar la zona horaria actual. Para obtener más información, consulte Detección de zona horaria de telefonía .

Detección de zona horaria de ubicación

La detección de zona horaria de ubicación está disponible en Android 12 o superior. Es una función opcional de detección automática de zona horaria que permite a los dispositivos usar su ubicación para determinar la zona horaria actual.

El servicio location_time_zone_manager , introducido en Android 12, se ejecuta en el servidor del sistema y contiene el código responsable de enviar sugerencias de algoritmos de ubicación al servicio time_zone_detector . Para obtener más información, consulte Detección de zona horaria de ubicación .

Consideraciones sobre la adopción de funciones

Esta sección describe aspectos de la función de detección de zona horaria de ubicación para ayudar al fabricante de un dispositivo a determinar si debe adoptar la función en un dispositivo.

Comparación de telefonía y detección de ubicación

La siguiente tabla proporciona una comparación de las ventajas y desventajas de utilizar señales de ubicación en lugar de telefonía para la detección de zona horaria.

Detección de telefonía Detección de ubicación
Exactitud Varía según el país.

Depende del MCC, la corrección y disponibilidad de NITZ.
Depende de la configuración de funciones o de los componentes del complemento.

La corrección generalmente varía según:
  • Precisión y regularidad del proveedor de ubicación.
  • La calidad de los datos del mapa de zonas horarias.
Actualizabilidad La detección de telefonía se basa en archivos contenidos en el módulo actualizable de datos de zona horaria (com.android.tzdata APEX). Depende de la configuración de funciones o de los componentes del complemento.

La capacidad de actualización generalmente depende de si el dispositivo utiliza datos del mapa de zona horaria del servidor o del cliente.

Nota: Los datos del mapa de zona horaria no están contenidos en el módulo de datos de zona horaria que se utiliza para actualizar la copia de TZDB de Android y otra información de zona horaria.

Los fabricantes de dispositivos también deben considerar la coherencia de la versión entre las reglas de zona horaria y los datos del mapa de zona horaria.
Consumo de energía Ninguno o bajo consumo de energía Depende de la configuración de ubicación del usuario, los complementos que se utilizan y, por lo general, qué otras aplicaciones solicitan la ubicación.
Disponibilidad Sólo dispositivos de telefonía. Generalmente requiere una SIM que funcione. La detección de ubicación depende de los proveedores de ubicación disponibles.
Privacidad del usuario

La zona horaria preferida de un usuario suele estar determinada por su ubicación geográfica. La ubicación son datos confidenciales. Es posible que a los usuarios les preocupe que se comparta el conocimiento de su ubicación como parte de la detección de zona horaria. Sin relación con la detección de zona horaria, todas las aplicaciones que se ejecutan en un dispositivo pueden leer la zona horaria actual del dispositivo sin requerir permiso de Android, y las aplicaciones pueden inferir una idea imprecisa de la ubicación del dispositivo a partir de esta información.

Más específicamente, la detección de zona horaria puede funcionar mediante medios pasivos o activos:

  • Pasivo: algo en el entorno del dispositivo le indica al dispositivo la zona horaria que debe utilizar en ese entorno.
  • Activo: el dispositivo tiene que determinar la zona horaria por sí mismo y, según la configuración de privacidad de los usuarios y su consentimiento, obtiene la ubicación del dispositivo para hacerlo. Luego puede compartir su ubicación con servicios externos. Consulte la discusión a continuación para obtener detalles sobre la privacidad y el consentimiento del usuario.

La detección pasiva, como la del algoritmo de telefonía, no tiene implicaciones adicionales para la privacidad de los usuarios.

La detección activa, como con el algoritmo de ubicación, implica determinar la ubicación del dispositivo, que los usuarios podrían no querer aceptar, y la ubicación podría enviarse a través de una red para determinar la ID de la zona horaria.

El enfoque de Android hacia la privacidad del usuario para la detección de zona horaria le brinda al usuario la capacidad de desactivar individualmente los algoritmos que se espera que estén activos. Además, el código de la plataforma AOSP no trata directamente con la ubicación en sí: la detección de ubicación y la asignación de ID de ubicación a zona horaria se dejan en manos de los componentes enchufables configurados por los fabricantes de dispositivos.

Para obtener más detalles sobre las funciones de privacidad del usuario, consulte Detección de zona horaria de ubicación .

Configuración

Los fabricantes de dispositivos pueden configurar el servicio time_zone_detector para cambiar su comportamiento. Esta sección describe las opciones de configuración para el comportamiento general del servicio time_zone_detector . Para obtener detalles de configuración para los algoritmos de detección de zona horaria y telefonía, consulte Detección de zona horaria de telefonía y Detección de zona horaria de ubicación .

La configuración básica de AOSP está en frameworks/base/core/res/res/values/config.xml .

Clave de configuración valor AOSP Descripción
config_supportTelephonyTimeZoneFallback true Cuando true , time_zone_detector utiliza el modo de reserva de telefonía. Está disponible para Android 13 y superior.

Modificar el comportamiento predeterminado del dispositivo

En AOSP, la detección automática de zona horaria está habilitada de forma predeterminada con la configuración auto_time_zone establecida en true . Para deshabilitar la detección automática de hora de forma predeterminada, establezca el valor de def_auto_time_zone definido en frameworks/base/packages/SettingsProvider/res/values/defaults.xml en false .

Al restaurar una copia de seguridad desde otro dispositivo, el marco actualiza el valor de la configuración auto_time_zone de forma predeterminada. Si desea asegurarse de que esta configuración no se restaure desde una copia de seguridad, incluya auto_time_zone en la matriz restore_blocked_global_settings definida en frameworks/base/packages/SettingsProvider/res/values/blocked_settings.xml .

Depuración y prueba de zona horaria

Esta sección proporciona información sobre cómo depurar y probar el comportamiento del servicio time_zone_detector y otros componentes compartidos por todos los algoritmos.

Configurar un dispositivo usando el servicio device_config

El servicio device_config es un mecanismo utilizado en Android para configurar un comportamiento modificable utilizando valores que normalmente se extraen de un servidor remoto mediante código propietario (no AOSP). Cuando se utilizan valores device_config para pruebas, especialmente durante pruebas manuales de ejecución prolongada, el dispositivo puede sincronizar las banderas, lo que las restablecería y borraría los valores establecidos para las pruebas.

En Android 12 o superior, para evitar temporalmente la sincronización de banderas, use:

adb shell cmd device_config set_sync_disabled_for_tests persistent

Para restaurar la sincronización de banderas después de las pruebas, use:

adb shell cmd device_config set_sync_disabled_for_tests none

Después de restaurar la sincronización de banderas, reinicie el dispositivo.

Para obtener más información, utilice $ adb shell cmd device_config help .

Interactuando con el servicio time_zone_detector

Para ver la configuración time_zone_detector y el estado del servicio time_zone_detector , utilice:

adb shell cmd time_zone_detector dump

Para ver comandos adicionales para depurar y probar la detección de zona horaria, utilice:

adb shell cmd time_zone_detector help

El resultado de la ayuda también describe las propiedades del servicio device_config que se pueden usar para afectar el comportamiento del servicio time_zone_detector para pruebas o en producción. Para obtener más información, consulte Configuración de un dispositivo mediante el servicio device_config .

Para validar la detección de zona horaria, los evaluadores deben saber qué algoritmo está utilizando el time_zone_detector . Para comprender e influir en el algoritmo actual de time_zone_detector , utilice una de las siguientes opciones:

  • Verifique visualmente a través de la interfaz de usuario de Configuración. Para obtener más información, consulte Configuración de zona horaria .
  • Utilice la línea de comando a través de adb:

    • Para volcar el estado time_zone_detector , use adb shell cmd time_zone_detector dump
    • Para modificar la configuración del dispositivo, utilice otros comandos time_zone_detector . Para obtener más información, utilice adb shell cmd time_zone_detector help .

El siguiente es un ejemplo del resultado del comando adb shell cmd time_zone_detector dump , con la información sobre el algoritmo actual y el estado del servicio en negrita:

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

La información se puede interpretar de la siguiente manera:

Llave Valor
mUserConfigAllowed Si el Controlador de políticas de dispositivo impide al usuario controlar la configuración de fecha y hora.
mTelephonyDetectionSupported Si el dispositivo tiene detección de zona horaria de telefonía.
mGeoDetectionSupported Si el dispositivo admite la detección de zona horaria de ubicación. Este es el estado efectivo basado en la configuración y la presencia de al menos un LTZP.
mAutoDetectionEnabled Si la detección automática de zona horaria está habilitada.
mLocationEnabled La ubicación principal alterna.
mGeoDetectionEnabled El cambio de algoritmo: false indica el algoritmo de telefonía y true indica el algoritmo de ubicación.

La información del historial de sugerencias indica qué sugerencias se han realizado a través de Configuración (manual) y mediante los algoritmos de telefonía y ubicación.