Zewnętrzne wykrywanie czasu

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.