A partire da Android 12, Android può facoltativamente utilizzare un'origine di tempo esterna per suggerire epoche Unix al servizio time_detector
. Questa opzione non è attivata per impostazione predefinita in AOSP.
L'origine orario 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 definizione delle priorità configurate.
Implementazione
Per supportare il rilevamento dell'ora esterna, i produttori di dispositivi devono implementare un componente che invii suggerimenti sull'ora esterna al servizio time_detector
tramite una chiamata all'API di sistema.
Per configurare l'origine esterna, utilizza il core/res/res/values/config.xml
file di configurazione del server di sistema. Aggiungi il valore external
a
config_autoTimeSourcesPriority
.
Il seguente esempio indica ad Android di dare ai suggerimenti relativi all'ora esterna la priorità più elevata durante l'impostazione dell'orologio di sistema. Se non è disponibile alcun suggerimento di ora 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 per i valori di tempo di priorità più elevata, Android utilizza il
timestamp passato a questo metodo per impostare l'ora di epoche Unix corrente.