Эта функция позволяет партнерам выбирать, как синхронизировать время: с автомобильной операционной системы Android (AAOS) или с автомобильных систем на Android. Чтобы обеспечить качественную реализацию, вы можете настроить AAOS на использование одного из двух новых свойств VHAL, описанных ниже, для эффективного распространения значений. Использовать:
-
ANDROID_EPOCH_TIMEчтобы использовать Android как источник информации о времени. VHAL поддерживает это свойство только для записи , которое передает изменения времени от Android к другим системам автомобиля, таким как электронные блоки управления (ECU) и модуль управления кузовным оборудованием (BCM). -
EXTERNAL_CAR_TIMEчтобы не использовать Android в качестве источника информации о времени. В этом случае VHAL поддерживает свойствоEXTERNAL_CAR_TIMEдоступное только для чтения , которое передает изменения времени от других систем автомобиля (таких как ECU и BCM) в Android.
AAOS также предоставляет настраиваемую TimeDetectorStrategy , которая поможет вам расставить приоритеты для различных источников времени в Android.
Android — источник истины для времени
Когда Android используется в качестве источника времени, OEM-производители могут синхронизировать другие автомобильные системы (включая ECU и BCM) со временем Android.
Для этого реализация VHAL должна поддерживать свойство ANDROID_EPOCH_TIME , доступное только для записи . Android публикует обновление свойства, считывая системное время, как во время загрузки, так и при каждом изменении источника времени в Android.
Android — не источник истины для времени
Когда Android не используется в качестве источника времени, вы можете синхронизировать время Android, чтобы оно было источником достоверных данных о времени (например, с ECU или BCM). В этом случае реализация VHAL должна поддерживать свойство EXTERNAL_CAR_TIME доступное только для чтения, и публиковать обновления этого свойства всякий раз, когда источник времени меняет или перекалибровывает часы.
OEM-производители также должны гарантировать, что:
- Значения
config_autoTimeSourcesPriorityсодержатся вcore/res/res/values/config.xml. - Для свойства
config_enableExternalCarTimeToExternalTimeSuggestionв наложенных конфигурациях CarServicespackages/services/Car/service/res/values/config.xmlустановлено значениеtrue. -
externalвремя имеет соответствующий приоритет в конфигурацииTimeDetectorStrategy. Дополнительную информацию см. в разделе Определение времени GNSS . Например:<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list take precedence over lower ones. See com.android.server.timedetector.TimeDetectorStrategy for available sources. --> <string-array name="config_autoTimeSourcesPriority"> <item>external</item> <item>gnss</item> <item>network</item> <item>telephony</item> </string-array>
Подробности внутренней реализации Android
Следующий поток имеет место, когда поддерживается свойство VHAL ANDROID_EPOCH_TIME :
-
TimeHalService(в CarServices) получает широковещательную рассылку от системы Android дляIntent.ACTION_TIME_CHANGED. -
TimeHalServiceпубликует обновление свойства VHALANDROID_EPOCH_TIME. - VHAL может передавать полученное значение времени различным блокам ECU и/или BCM.
Следующий поток имеет место, когда поддерживается свойство VHAL EXTERNAL_CAR_TIME :
- VHAL обновляет свойство
EXTERNAL_CAR_TIME. -
TimeHalService(в CarServices) считывает свойство посредством подписки. -
TimeHalServiceсоздает и отправляетExternalTimeSuggestionвTimeManager. -
TimeManagerпересылает предложение вTimeDetectorService. -
TimeDetectorServiceиспользуетTimeDetectorStrategyдля выбора нового системного времени.