Rilevamento dell'ora esterna

A partire da Android 12, Android può utilizzare facoltativamente una fonte di tempo esterna per suggerire orari dell'epoca Unix al servizio Time Detector. Questa opzione non è attiva per impostazione predefinita in AOSP.

L'origine temporale esterna ti consente di fornire suggerimenti temporali completamente personalizzati ad Android. Dopo aver ricevuto i suggerimenti dall'origine temporale esterna, il servizio time_detector determina se aggiornare l'orologio di sistema in base alle regole di assegnazione automatica della priorità temporale configurate.

Implementazione

Per supportare il rilevamento dell'ora esterna, devi implementare un componente che invii 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, in questo caso gnss:

<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.