Począwszy od systemu Android 12, system Android może opcjonalnie korzystać z zewnętrznego źródła czasu, aby sugerować czasy epoki Uniksa usłudze time_detector
. Nie jest to domyślnie włączone w AOSP.
Zewnętrzne pochodzenie czasu umożliwia producentom urządzeń dostarczanie całkowicie niestandardowych sugestii czasu do systemu Android. Po otrzymaniu sugestii od zewnętrznego źródła czasu, usługa time_detector
określa, czy zaktualizować zegar systemowy, korzystając ze skonfigurowanych reguł ustalania priorytetów .
Realizacja
Aby obsługiwać wykrywanie czasu zewnętrznego, producenci urządzeń muszą zaimplementować komponent, który przesyła sugestie czasu zewnętrznego do usługi time_detector
za pośrednictwem systemowego wywołania API.
Aby skonfigurować źródło zewnętrzne, użyj pliku konfiguracyjnego serwera systemowego core/res/res/values/config.xml
. Dodaj wartość external
do config_autoTimeSourcesPriority
.
Poniższy przykład informuje system Android, aby podczas ustawiania zegara systemowego nadał sugestiom czasu zewnętrznego najwyższy priorytet. Jeśli nie jest dostępna żadna ważna sugestia czasu zewnętrznego, używane jest następne miejsce początkowe, w tym przypadku gnss
.
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
</string-array>
Aby udostępnić systemowi zewnętrzną sugestię czasu, należy użyć metody suggestExternalTime()
w TimeManager
. Jeśli źródło zewnętrzne jest skonfigurowane przy użyciu config_autoTimeSourcesPriority
w pliku konfiguracyjnym i nie są dostępne sugestie dotyczące czasu o wyższym priorytecie, system Android używa sygnatury czasowej przekazanej do tej metody, aby ustawić bieżący czas epoki Uniksa.