Wykrywanie czasu zewnętrznego

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 ta funkcja nie jest domyślnie włączona.

Zewnętrzne źródło czasu umożliwia producentom urządzeń dostarczanie do Androida w pełni dostosowanych sugestii dotyczących czasu. Po otrzymaniu sugestii z zewnętrznego źródła czasu usługa time_detector określa, czy zaktualizować zegar systemowy, korzystając ze skonfigurowanych reguł ustalania priorytetów.

Implementacja

Aby obsługiwać 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 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 sugestii czasu zewnętrznego, 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 przekazać systemowi zewnętrzną sugestię dotyczącą czasu, użyj metody suggestExternalTime()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.