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 tiempo externo permite a los fabricantes de dispositivos proporcionar sugerencias de tiempo completamente personalizadas para Android. Después de recibir sugerencias del origen de tiempo externo, el servicio time_detector
determina si actualizar el reloj del sistema utilizando las reglas de priorización configuradas.
Implementación
Para admitir la detección de tiempo externo, los fabricantes de dispositivos deben implementar un componente que envíe sugerencias de tiempo externo 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 dice a Android que le dé a las sugerencias de tiempo externo la máxima prioridad al configurar el reloj del sistema. Si no hay ninguna sugerencia de hora externa válida disponible, se utiliza 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, 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 el tiempo de época actual de Unix.