Wykrywanie czasu zewnętrznego

Począwszy od systemu Android 12, system Android może opcjonalnie korzystać z zewnętrznego źródła czasu, aby sugerować czasy epoki Uniksa usłudze time_detector . Nie jest to domyślnie włączone w AOSP.

Zewnętrzne pochodzenie czasu umożliwia producentom urządzeń dostarczanie całkowicie niestandardowych sugestii czasu do systemu Android. Po otrzymaniu sugestii od zewnętrznego źródła czasu, usługa time_detector określa, czy zaktualizować zegar systemowy, korzystając ze skonfigurowanych reguł ustalania priorytetów .

Realizacja

Aby obsługiwać wykrywanie czasu zewnętrznego, producenci urządzeń muszą zaimplementować komponent, który przesyła sugestie czasu zewnętrznego do usługi time_detector za pośrednictwem systemowego wywołania API.

Aby skonfigurować źródło zewnętrzne, użyj pliku konfiguracyjnego serwera systemowego core/res/res/values/config.xml . Dodaj wartość external do config_autoTimeSourcesPriority .

Poniższy przykład informuje system Android, aby podczas ustawiania zegara systemowego nadał sugestiom czasu zewnętrznego najwyższy priorytet. Jeśli nie jest dostępna żadna ważna sugestia czasu zewnętrznego, używane jest następne miejsce początkowe, w tym przypadku gnss .

<string-array name="config_autoTimeSourcesPriority">
        <item>external</item>
        <item>gnss</item>
</string-array>

Aby udostępnić systemowi zewnętrzną sugestię czasu, należy użyć metody suggestExternalTime() w TimeManager . Jeśli źródło zewnętrzne jest skonfigurowane przy użyciu config_autoTimeSourcesPriority w pliku konfiguracyjnym i nie są dostępne sugestie dotyczące czasu o wyższym priorytecie, system Android używa sygnatury czasowej przekazanej do tej metody, aby ustawić bieżący czas epoki Uniksa.