Detección de hora externa

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

El origen de hora externo permite que los fabricantes de dispositivos proporcionen sugerencias de hora 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 con las reglas de priorización configuradas.

Implementación

Para admitir la detección de hora externa, los fabricantes de dispositivos deben 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.