Detección de tiempo externo

A partir de Android 12, Android puede usar opcionalmente una fuente de tiempo externa para sugerir tiempos de época de Unix al servicio time_detector . Esto no está habilitado de forma predeterminada en AOSP.

El origen de hora externo permite a los fabricantes de dispositivos proporcionar sugerencias de hora completamente personalizadas para Android. Después de recibir sugerencias del origen de hora externo, el servicio time_detector determina si se actualiza el reloj del sistema utilizando 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 API del sistema.

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

El siguiente ejemplo le indica a Android que dé la máxima prioridad a las sugerencias de hora externas al configurar el reloj del sistema. Si no hay ninguna sugerencia de hora externa válida disponible, se utiliza el siguiente origen, en este caso gnss .

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

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