A partir de Android 12, Android puede usar, de manera opcional, una fuente de tiempo externa para sugerir épocas de Unix al servicio time_detector
. Esta opción no está habilitada de forma predeterminada en AOSP.
El origen de la 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 se 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 le indica a Android que le otorgue la prioridad más alta a las sugerencias de hora externas cuando configure el reloj del sistema. Si no hay ninguna 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 proporcionarle 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 hora de prioridad más alta disponibles, Android usa la marca de tiempo que se pasa a este método para establecer la hora de época de Unix actual.