La detección de zona horaria de ubicación, 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 y los datos del mapa de zona horaria para determinar la zona horaria.
La detección de zona horaria de ubicación es un mecanismo alternativo a la detección de zona horaria de telefonía . Debido a que esta función no requiere telefonía, esta función puede admitirse en dispositivos de varios factores de forma además de los dispositivos de telefonía móvil.
La función de detección de zona horaria de ubicación consta de los siguientes componentes en la plataforma AOSP:
- Lógica de detección de zona horaria en el servidor del sistema.
- Una opción accesible para el usuario en Configuración, introducida en Android 12, para permitir a los usuarios seleccionar entre los mecanismos de detección de zona horaria de ubicación y telefonía.
- Un sistema de complemento para componentes que realizan la detección de ubicación y el mapeo de zona horaria. Un complemento se denomina Proveedor de zona horaria de ubicación (LTZP) y puede haber hasta dos de ellos en un dispositivo.
- Una implementación LTZP de referencia.
- Herramientas de host para generar un conjunto de datos de referencia a partir de datos de OpenStreetMap que se pueden usar con la implementación de referencia.
Privacidad del usuario
La detección de la zona horaria de la ubicación incluye las siguientes características de privacidad del usuario:
- Los usuarios pueden desactivar la detección de la zona horaria de la ubicación en cualquier momento.
- Las sugerencias de zona horaria derivadas de la ubicación no se comparten entre los usuarios de un dispositivo.
- Los usuarios pueden controlar la detección de ubicación para la detección de zona horaria explícitamente a través de la pantalla Configuración de fecha y hora . Los usuarios no tienen que otorgar permiso explícitamente a través de un cuadro de diálogo de permiso.
La información de ubicación del dispositivo no se pasa a los servicios de la plataforma Android. En su lugar sucede lo siguiente:
- Los servicios de detección de zona horaria solo reciben ID de zona horaria por parte del LTZP, no de la ubicación del dispositivo. Esta es la API mínima necesaria para admitir la detección de zona horaria de ubicación.
- Se deja que los integradores de sistemas decidan el funcionamiento de los LTZP individuales. Las implementaciones de LTZP pueden usar datos de mapas de zona horaria guardados completamente en el dispositivo Android, aprovechar servidores o usar un enfoque híbrido.
Comportamiento de la característica
El servicio time_zone_detector
determina cuándo cambiar la zona horaria actual del dispositivo según las sugerencias que recibe de los orígenes de detección.
El servicio location_time_zone_manager
es responsable de generar sugerencias para el origen de la ubicación de time_zone_detector
. El servicio location_time_zone_manager
se ejecuta en el proceso del servidor del sistema.
El servicio location_time_zone_manager
no contiene ninguna lógica de detección de zona horaria. Es responsable de administrar el ciclo de vida de uno o dos complementos llamados proveedores de zona horaria de ubicación (LTZP).
Cuando no se necesita la detección de la zona horaria de la ubicación, los LTZP no se inician. Esto significa que el sistema de detección de zona horaria de ubicación no solicita a los LTZP que rastreen la ubicación del dispositivo a menos que se les solicite explícitamente. Algunas de las razones de este comportamiento incluyen las siguientes:
- A diferencia de las señales de telefonía que se reciben de forma pasiva como parte de las operaciones telefónicas normales, la ubicación se puede solicitar activamente a los proveedores de ubicación de Android y podría consumir energía adicional.
- La configuración de ubicación depende del usuario y Android debe respetar la configuración actual del usuario.
- La obtención de la ubicación del dispositivo es sensible a la privacidad.
Además, el servicio location_time_zone_manager
hace una sugerencia incierta (si es necesaria) cuando el usuario actual cambia para evitar compartir información de ubicación entre usuarios.
Como resultado de estas elecciones, generalmente toma unos segundos después de cambiar el origen actual a la ubicación, o después de cambiar el usuario actual, antes de que se pueda detectar la zona horaria. Esto también depende de las implementaciones de los LTZP que se utilicen.
La implementación de detección de zona horaria de ubicación de AOSP permite hasta dos LTZP, un LTZP primario y uno secundario, como se define aquí:
- LTZP primario
- Se ejecuta en todo momento cuando el usuario ha permitido que se ejecute la función de detección de zona horaria de ubicación.
- LTZP secundario
- Se ejecuta si el LTZP principal informa que la zona horaria es incierta , informa una falla permanente o se agota el tiempo de espera durante la inicialización. Se detiene si el LTZP principal envía una determinada sugerencia.
Como se muestra en la Figura 1, los servicios time_zone_detector
reciben sugerencias de zonas horarias desde el origen de la telefonía o la ubicación. El origen de la ubicación recibe sugerencias del LTZP primario o secundario.
Figura 1. Flujo de información de detección de zona horaria de ubicación.
Requisitos de configuración del dispositivo
Para admitir la función de zona horaria de ubicación, los dispositivos deben configurarse con LTZP que el dispositivo pueda usar. Los dispositivos requieren que al menos un LTZP esté habilitado y configurado para que la detección de la zona horaria de la ubicación sea funcional y visible para los usuarios en Configuración.
Configuración del dispositivo
En esta sección se describe cómo los fabricantes de dispositivos pueden configurar los dispositivos para admitir la detección de zona horaria de ubicación.
La configuración básica de AOSP se encuentra en frameworks/base/core/res/res/values/config.xml
:
Clave de configuración | valor AOSP | Descripción |
---|---|---|
config_enableGeolocationTimeZoneDetection | true | Este es el control maestro para la función de detección de zona horaria de ubicación. La característica es compatible de forma predeterminada en AOSP. Al menos un LTZP debe estar habilitado o configurado para que la función esté disponible para los usuarios. Establecer el valor en falso deshabilita la función por completo para un pequeño ahorro de memoria. |
config_enablePrimaryLocationTimeZoneProvider | false | Esto habilita el LTZP primario. |
config_primaryLocationTimeZoneProviderPackageName | Establézcalo en el nombre del paquete de la aplicación donde se puede encontrar el servicio del proveedor principal. | |
config_enableSecondaryLocationTimeZoneProvider | false | Esto habilita el LTZP secundario. |
config_secondaryLocationTimeZoneProviderPackageName | Establézcalo en el nombre del paquete de la aplicación donde se puede encontrar el servicio del proveedor secundario. |
De forma predeterminada, la configuración de AOSP tiene la clave config_enableGeolocationTimeZoneDetection
establecida en true
, lo que permite la compatibilidad con la función de detección de zona horaria de ubicación. Inicialmente, la función no está visible para los usuarios 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 realizar pruebas. (Para obtener más información, consulte Depuración y prueba ).
Ubicación Zona horaria Configuración e implementación del proveedor
Al configurar un LTZP, lea las instrucciones en el código fuente para frameworks/base/core/java/android/service/timezone/TimeZoneProviderService.java
. Los comentarios de Javadoc brindan detalles sobre el servicio, los permisos necesarios y otras configuraciones.
Para configurar un proveedor de zona horaria de ubicación, los fabricantes de dispositivos deben elegir un proceso de aplicación para alojar el servicio de LTZP. Tener un proceso dedicado para un LTZP es una sobrecarga alta; idealmente, el proceso de la aplicación elegido es uno que se ejecuta en todo momento, como el servidor del sistema.
En dispositivos con componentes de sistema modular (módulos), considere la interacción entre los datos geográficos utilizados por LTZP y las reglas de zona horaria (tzdb) transportadas en el módulo de datos de zona horaria ( com.android.tzdata
). Es probable que las actualizaciones de uno sin actualizaciones del otro causen problemas de sesgo de versión. Para obtener más información, consulte Consideraciones sobre la adopción de características .
Referencia AOSP Ubicación Zona horaria Proveedor
AOSP contiene una implementación de proveedor de zona horaria de ubicación de referencia en packages/modules/GeoTZ
. Esta implementación de referencia usa las API 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 ID de zona horaria.
Un conjunto de datos de referencia derivado de otros proyectos de código abierto se incluye con el código fuente. Para obtener más detalles, consulte README.md y los distintos archivos de LICENCIA.
Depuración y prueba
La siguiente sección describe los comandos de shell para depurar y probar la función de detección de zona horaria de ubicación.
Interactuando con el servicio location_time_zone_manager
Cuando el origen de la ubicación es compatible con un dispositivo que ejecuta Android 12 o superior, Android crea una instancia del servicio location_time_zone_manager
en el momento del arranque.
Para volcar el estado actual de location_time_zone_manager
, use:
adb shell cmd location_time_zone_manager dump
Para ver un amplio conjunto de opciones de línea de comandos para ayudar con las pruebas, use:
adb shell cmd location_time_zone_manager 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_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 .
Las implementaciones de LTZP también pueden proporcionar su propio soporte de prueba o depuración. Por ejemplo, puede usar el siguiente comando para depurar la referencia LTZP de AOSP cuando está registrada en el proceso del servidor del sistema.
adb shell dumpsys activity service android/com.android.timezone.location.provider.OfflineLocationTimeZoneProviderService