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_detectorokreś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 źródło, użyj pliku konfiguracji serwera systemu core/res/res/values/config.xml. Dodaj wartość external do config_autoTimeSourcesPriority.
Poniższy przykład pokazuje, jak poinformować Androida, aby podczas ustawiania zegara systemowego nadawał najwyższy priorytet zewnętrznym sugestiom dotyczącym czasu. Jeśli nie ma dostępnej prawidłowej zewnętrznej sugestii czasu, używane jest kolejne źródło, w tym przypadku gnss:
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
</string-array>
Aby podać systemowi zewnętrzną sugestię 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 są dostępne żadne sugestie czasu o wyższym priorytecie, Android używa sygnatury czasowej przekazanej do tej metody, aby ustawić bieżący czas epoki uniksowej.