Od Androida 12 system może opcjonalnie używać zewnętrznego źródła czasu, aby sugerować usługom time_detector
czasy ery uniksowej. Ta funkcja jest domyślnie wyłączona w AOSP.
Zewnętrzne źródło czasu pozwala producentom urządzeń na przekazywanie Androidowi 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 za pomocą skonfigurowanych reguł określania priorytetów.
Implementacja
Aby umożliwić wykrywanie czasu zewnętrznego, producenci urządzeń muszą 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 pola config_autoTimeSourcesPriority
.
W tym przykładzie Android ma przypisać zewnętrznym sugestiom dotyczące czasu najwyższy priorytet podczas ustawiania zegara systemowego. Jeśli nie jest dostępna żadna poprawna sugestia dotycząca czasu zewnętrznego, używany jest następny punkt początkowy (w tym przypadku gnss
).
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
</string-array>
Aby podać systemowi zewnętrzną propozycję czasu, użyj metody suggestExternalTime()
w TimeManager
. Jeśli zewnętrzne źródło jest skonfigurowane za pomocą parametru 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 Unixa.