Начиная с Android 12, Android может использовать внешний источник времени, чтобы предлагать время эпохи Unix сервису Time Detector. По умолчанию в AOSP эта функция отключена.
Внешний источник времени позволяет предоставлять Android полностью настраиваемые предложения времени. Получив подсказки от внешнего источника времени, сервис time_detector определяет, нужно ли обновлять системные часы, на основе настроенных правил автоматического определения приоритета времени.
Реализация
Чтобы поддерживать внешнее определение времени, необходимо реализовать компонент, который отправляет внешние предложения времени в сервис time_detector через вызов системного API.
Чтобы настроить внешний источник, используйте файл конфигурации сервера системы core/res/res/values/config.xml. Добавьте значение external в
config_autoTimeSourcesPriority.
В приведенном ниже примере Android получает указание отдавать внешним предложениям времени наивысший приоритет при настройке системных часов. Если действительное внешнее время недоступно, используется следующий источник, в данном случае gnss:
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
</string-array>
Чтобы передать системе внешнее предложение времени, используйте метод suggestExternalTime в TimeManager. Если внешний источник настроен с помощью config_autoTimeSourcesPriority в файле конфигурации и нет предложений времени с более высоким приоритетом, Android использует временную метку, переданную в этот метод, чтобы задать текущее время эпохи Unix.