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 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 suggestExternalTimeTimeManager. 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.