Wykrywanie czasu zewnętrznego

Od Androida 12 system może opcjonalnie używać zewnętrznego źródła czasu, aby sugerować usługom time_detector czasy ery uniksowej. Domyślnie w AOSP ta opcja jest wyłączona.

Źródło czasu zewnętrznego pozwala producentom urządzeń udostępniać Androidowi całkowicie niestandardowe propozycje 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ł 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 ma prawidłowej zewnętrznej propozycji czasu, używane jest źródło następne, 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.