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