Detección de hora externa

A partir de Android 12, Android puede usar, de forma opcional, una fuente externa de tiempo para sugerir tiempos de época de Unix al servicio Time Detector. Esta opción no está habilitada de forma predeterminada en el AOSP.

El origen de tiempo externo te permite proporcionar sugerencias de tiempo completamente personalizadas a Android. Después de recibir sugerencias del origen de hora externo, el servicio time_detector determina si debe actualizar el reloj del sistema según las reglas de priorización automática de la hora configuradas.

Implementación

Para admitir la detección de hora externa, debes implementar un componente que envíe sugerencias de hora externa al servicio time_detector a través de una llamada a la API del sistema.

Para configurar el origen externo, usa el archivo de configuración del servidor del sistema core/res/res/values/config.xml. Agrega el valor external a config_autoTimeSourcesPriority.

En el siguiente ejemplo, se indica a Android que les dé a las sugerencias de hora externas la prioridad más alta cuando se configure el reloj del sistema. Si no hay una sugerencia de hora externa válida disponible, se usa el siguiente origen, gnss en este caso:

<string-array name="config_autoTimeSourcesPriority">
        <item>external</item>
        <item>gnss</item>
</string-array>

Para proporcionar al sistema una sugerencia de hora externa, usa el método suggestExternalTime en TimeManager. Si el origen externo se configura con config_autoTimeSourcesPriority en el archivo de configuración y no hay sugerencias de tiempo de mayor prioridad disponibles, Android usa la marca de tiempo que se pasa a este método para establecer la hora actual de la época de Unix.