Rilevamento dell'ora esterna

A partire da Android 12, Android può utilizzare facoltativamente un'origine esterna dell'ora per suggerire orari dell'epoca Unix al servizio time_detector. Questa opzione non è attivata per impostazione predefinita in AOSP.

L'origine ora esterna consente ai produttori di dispositivi di fornire suggerimenti sull'ora completamente personalizzati ad Android. Dopo aver ricevuto i suggerimenti dall'origine ora esterna, il servizio time_detector determina se aggiornare l'orologio di sistema utilizzando le regole di assegnazione delle priorità configurate.

Implementazione

Per supportare il rilevamento dell'ora esterna, i produttori di dispositivi devono implementare un componente che invia suggerimenti sull'ora esterna al servizio time_detector tramite una chiamata API di sistema.

Per configurare l'origine esterna, utilizza il file di configurazione del server di sistema core/res/res/values/config.xml. Aggiungi il valore external a config_autoTimeSourcesPriority.

L'esempio seguente indica ad Android di dare la massima priorità ai suggerimenti di orario esterni quando imposta l'orologio di sistema. Se non è disponibile alcun suggerimento di orario esterno valido, viene utilizzata l'origine successiva, gnss in questo caso.

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

Per fornire al sistema un suggerimento di orario esterno, utilizza il metodo suggestExternalTime() in TimeManager. Se l'origine esterna è configurata utilizzando config_autoTimeSourcesPriority nel file di configurazione e non sono disponibili suggerimenti sull'ora con priorità più alta, Android utilizza il timestamp passato a questo metodo per impostare l'ora attuale dell'epoca Unix.