Detección de la zona horaria de la ubicación

Detección de la zona horaria de la ubicación, disponible en Android 12 o posterior, es una función opcional de detección automática de la zona horaria que permite usar los datos de ubicación y del mapa de zona horaria para determinar la zona horaria.

La detección de la zona horaria de la ubicación es un mecanismo alternativo a la zona horaria de telefonía detección temprana de errores. Porque esta función no requiere telefonía, puede ser compatible con dispositivos de diversos factores de forma, además de los dispositivos de telefonía móvil.

La función de detección de la zona horaria de la ubicación consta de los siguientes componentes en la plataforma del AOSP:

  • Lógica de detección de zona horaria en el servidor del sistema.
  • Una opción accesible para el usuario en Configuración, que se introdujo en Android 12, para permitir que los usuarios seleccionen entre las telefonía y los mecanismos de detección de la zona horaria de la ubicación.

  • Un sistema enchufable para componentes que realizan la detección de ubicación y la asignación de zonas horarias. Un complemento se denomina Proveedor de zona horaria de la ubicación. (LTZP) y puede haber hasta dos en un dispositivo. La plataforma proporciona las APIs del sistema que deben usarse para implementar un LTZP.

  • Una implementación de LTZP de referencia.

  • Herramientas de host para generar un conjunto de datos de referencia Datos de OpenStreetMap que puede usarse con la implementación de referencia.

Privacidad del usuario

La detección de la zona horaria de la ubicación incluye las siguientes funciones de privacidad del usuario:

  • Cuando hay un botón de activación para seleccionar el algoritmo de ubicación, los usuarios pueden desactivar el algoritmo de ubicación en cualquier momento.

  • Las sugerencias de zona horaria derivada de la ubicación no se comparten entre los usuarios de un dispositivo.

  • Los usuarios pueden controlar la detección de la ubicación para detectar la zona horaria explícitamente a través de la pantalla de configuración de fecha y hora; Los usuarios no tienen para otorgar permiso explícitamente a través de un diálogo de permisos.

  • La información de ubicación del dispositivo no se transmite a los servicios de la plataforma de Android. En su lugar, ocurre lo siguiente:

    • Solo se envían los IDs de zona horaria a los servicios de detector de zona horaria. por el LTZP, no por la ubicación del dispositivo. Esta es la API mínima necesaria para admitir la detección de la zona horaria de la ubicación.
    • La operación de LTZP individuales queda en manos de los integradores de sistemas tomar una decisión. Las implementaciones de LTZP pueden usar datos de mapas de zona horaria conservados completamente en el dispositivo Android, aprovechar servidores o usar una red enfoque.

Comportamiento de la función

El servicio time_zone_detector determina cuándo cambiar la temperatura actual del dispositivo zona horaria basada en las sugerencias que recibe de los algoritmos de detección.

El servicio location_time_zone_manager se encarga de generar sugerencias para el algoritmo de ubicación de time_zone_detector. El El servicio location_time_zone_manager se ejecuta en el proceso del servidor del sistema.

El servicio location_time_zone_manager no contiene ninguna detección de zona horaria lógica. Es responsable de administrar el ciclo de vida de uno o dos complementos llamados Proveedores de zona horaria de la ubicación (LTZP)

Cuando no se necesita detectar la zona horaria de la ubicación, no se inician las LTZP. Esta significa que el sistema de detección de la zona horaria de la ubicación no les pide a los LTZP que hagan un seguimiento la ubicación del dispositivo, a menos que se lo exija explícitamente. Algunos de los A continuación, se incluyen algunos de los motivos de este comportamiento:

  • A diferencia de las señales de telefonía, que se reciben de forma pasiva como parte operaciones telefónicas normales, la ubicación se puede solicitar activamente desde ubicación de Android y podría consumir energía adicional.
  • La configuración de ubicación está centrada en el usuario y Android debe respetar el la configuración del usuario.
  • Obtener la ubicación del dispositivo es confidencial.

Además, el servicio location_time_zone_manager hace una sugerencia incierta (si se necesita una) cuando el usuario actual cambia para evitar compartir la ubicación información entre los usuarios.

Como resultado de estas elecciones, en general, toma unos segundos después de cambiar la algoritmo actual a ubicación, o después de cambiar el usuario actual, antes de la zona horaria. Esto también depende de las implementaciones de las LTZP en uso.

La implementación de la detección de la zona horaria de la ubicación del AOSP permite hasta dos LTZP, un LTZP principal y uno secundario, como se define aquí:

LTZP principal
Se ejecuta en todo momento cuando el usuario permite la detección de la zona horaria de la ubicación. para ejecutar la función.
LTZP secundario
Se ejecuta si el LTZP principal informa que la zona horaria es incierta, informa un una falla permanente o que se agote el tiempo de espera durante la inicialización. Se detiene si la instancia principal El LTZP envía una cierta sugerencia.

Como se muestra en la Figura 1, los servicios de time_zone_detector reciben la zona horaria. sugerencias del algoritmo de telefonía o ubicación. El algoritmo de ubicación recibe sugerencias del LTZP principal o secundario.

Flujo de información de detección de la zona horaria de la ubicación

Figura 1: Flujo de información de detección de la zona horaria de la ubicación.

Requisitos de configuración del dispositivo

Para admitir la función de zona horaria de la ubicación, los dispositivos deben estar configurados con LTZP que el dispositivo puede usar. Los dispositivos requieren que se habilite al menos un LTZP y configurado para que la detección de la zona horaria de la ubicación funcione y sea visible para usuarios en Configuración.

Configuración del dispositivo

En esta sección, se describe la manera en que los fabricantes pueden configurar dispositivos para admitir detección de la zona horaria de la ubicación.

La configuración básica del AOSP se encuentra frameworks/base/core/res/res/values/config.xml

Clave de configuración Valor de AOSP Descripción
config_enableGeolocationTimeZoneDetection true Este es el control principal de la función de detección de la zona horaria de la ubicación.

La función es compatible de forma predeterminada en el AOSP. Se debe tener al menos un LTZP habilitar o configurar para que la función esté disponible para los usuarios.

Si se establece el valor como falso, se inhabilita la función por completo para una memoria pequeña. guardando.
config_enablePrimaryLocationTimeZoneProvider false Esto habilita el LTZP principal.
config_primaryLocationTimeZoneProviderPackageName Establece esto en el nombre del paquete de la app en la que el servicio del proveedor principal. .
config_enableSecondaryLocationTimeZoneProvider false Esto habilita el LTZP secundario.
config_secondaryLocationTimeZoneProviderPackageName Establece esto en el nombre del paquete de la app a la que pertenece el proveedor secundario. servicio.

De forma predeterminada, la configuración del AOSP tiene las Se estableció la clave config_enableGeolocationTimeZoneDetection en true, lo que habilita la asistencia para la función de detección de la zona horaria de la ubicación. El elemento no es visible para porque AOSP no incluye una configuración LTZP de forma predeterminada. Sin embargo, con esta configuración predeterminada, los fabricantes de dispositivos pueden habilitar y simular LTZP desde la línea de comandos para pruebas. (Para obtener más información, consulta Depuración y pruebas).

APIs de estado de LTZP

En Android 14, las APIs de LTZP admiten el protocolo de LTZP informes de información de estado. Esto permite que el LTZP informe que la plataforma no puede detectar por sí misma, ya que Los componentes de detección de zona horaria no están involucrados directamente en la ubicación o el tiempo la detección de zonas en el algoritmo de ubicación.

La capacidad de informar que el comportamiento del LTZP se vio degradado por la protección es útil cuando modo de resguardo de telefonía es compatible. Por ejemplo, si un LTZP externo depende de configuraciones personalizadas o los permisos para que funcione la detección de ubicación se están ejecutando en modo degradado o inhabilitado por la configuración actual del dispositivo, puede informar este estado información a los componentes internos de la plataforma, como la aplicación Configuración, a través del reportSuggestion . La app de Configuración puede notificar a los usuarios a través de cadenas personalizables o personalizaciones y que existen parámetros de configuración que deben cambiar según la ubicación. para que funcione bien o que no lo haga.

Para obtener más información sobre los estados que puede informar el LTZP, consulta TimeZoneProviderStatus

Implementación y configuración de LTZP

Cuando configures un LTZP, lee las instrucciones del código fuente para frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java Los comentarios de Javadoc proporcionan detalles sobre el servicio, los permisos necesarios y otra configuración.

Para configurar un LTZP, los fabricantes de dispositivos deben elegir una para alojar el servicio de LTZP. Tener un proceso exclusivo para un LTZP es una sobrecarga elevada; idealmente, el proceso de la app elegido sea uno que se ejecute en como el servidor del sistema.

En dispositivos con componentes modulares del sistema (módulos), considera la interacción entre los datos geográficos que usa el LTZP y las reglas de zona horaria (tzdb) que se incluyen en Módulo de datos de zona horaria (com.android.tzdata). Es probable que se actualicen a uno sin actualizaciones del otro para causar problemas de sesgo de versiones. Para obtener más información, consulta Consideraciones sobre la adopción de funciones.

LTZP de referencia del AOSP

El AOSP contiene una implementación de LTZP de referencia en packages/modules/GeoTZ Esta implementación de referencia usa las APIs de AOSP para determinar la ubicación del dispositivo y usa un archivo de datos en el dispositivo para asignar la ubicación a un conjunto de IDs de zona horaria.

Se incluye un conjunto de datos de referencia derivado de otros proyectos de código abierto con el código fuente. Para obtener más detalles, consulta README.md y los diferentes archivos LICENSE.

Depura y prueba

En la siguiente sección, se describen los comandos de shell para depurar y probar la función de detección de la zona horaria de la ubicación.

Interactúa con el servicio location_time_zone_manager

Cuando el algoritmo de ubicación es compatible con un dispositivo que Android 12 o versiones posteriores Android crea una instancia del servicio location_time_zone_manager en el momento del inicio.

Para volcar el estado actual de location_time_zone_manager, usa lo siguiente:

adb shell cmd location_time_zone_manager dump

Si deseas ver un amplio conjunto de opciones de línea de comandos para ayudar con las pruebas, usa lo siguiente:

adb shell cmd location_time_zone_manager help

En el resultado de ayuda, también se describen las propiedades de servicio de device_config que pueden usarse para modificar el comportamiento de time_zone_detector para pruebas o en producción. Para obtener más información, consulta Configura un dispositivo con el servicio device_config.

Las implementaciones de LTZP también pueden proporcionar su propia compatibilidad con la depuración o las pruebas. Por ejemplo, puedes usar el siguiente comando para depurar la referencia LTZP de AOSP. cuando se registra en el proceso del servidor del sistema.

adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService