Rilevamento orario esterno

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.