Od Androida 12 system może opcjonalnie używać zewnętrznego źródła czasu, aby sugerować czasy epoki uniksowej usłudze Time Detector. W AOSP nie jest ona domyślnie włączona.
Zewnętrzne źródło czasu umożliwia podawanie w Androidzie całkowicie niestandardowych sugestii dotyczących czasu. Po otrzymaniu sugestii z zewnętrznego źródła czasu usługa time_detector
określa, czy zaktualizować zegar systemowy na podstawie skonfigurowanych reguł automatycznego ustalania priorytetów czasu.
Implementacja
Aby obsługiwać wykrywanie czasu zewnętrznego, musisz wdrożyć komponent, który przesyła sugestie dotyczące czasu zewnętrznego do usługi time_detector
za pomocą wywołania interfejsu API systemu.
Aby skonfigurować zewnętrzne pochodzenie, użyj pliku konfiguracji serwera systemu core/res/res/values/config.xml
. Dodaj wartość external
do
config_autoTimeSourcesPriority
.
Poniższy przykład pokazuje, że Android ma przyznawać zewnętrznym sugestiom czasu najwyższy priorytet podczas ustawiania zegara systemowego. Jeśli nie ma dostępnej prawidłowej zewnętrznej sugestii czasu, używane jest następne źródło, w tym przypadku gnss
:
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
</string-array>
Aby przekazać systemowi zewnętrzną sugestię dotyczącą czasu, użyj metody suggestExternalTime
w TimeManager
. Jeśli zewnętrzne źródło jest skonfigurowane za pomocą config_autoTimeSourcesPriority
w pliku konfiguracyjnym i nie ma dostępnych sugestii czasu o wyższym priorytecie, Android używa sygnatury czasowej przekazanej do tej metody, aby ustawić bieżący czas epoki uniksowej.