此功能可讓合作夥伴選擇如何同步時間,無論是從 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
中。 - CarServices 覆寫配置
packages/services/Car/service/res/values/config.xml
中的config_enableExternalCarTimeToExternalTimeSuggestion
屬性設定為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內部實作細節
當支援ANDROID_EPOCH_TIME
VHAL 屬性時,會發生下列流程:
-
TimeHalService
(在 CarServices 中)從 Android 系統接收Intent.ACTION_TIME_CHANGED
的廣播。 -
TimeHalService
發布 VHAL 屬性ANDROID_EPOCH_TIME
的更新。 - VHAL 可以將接收到的時間值傳播到各個 ECU 和/或 BCM 單元。
當支援EXTERNAL_CAR_TIME
VHAL 屬性時,會發生以下流程:
- VHAL 更新
EXTERNAL_CAR_TIME
屬性。 -
TimeHalService
(在 CarServices 中)透過訂閱讀取屬性。 -
TimeHalService
建立一個ExternalTimeSuggestion
並將其傳送到TimeManager
。 -
TimeManager
將建議轉送給TimeDetectorService
。 -
TimeDetectorService
使用TimeDetectorStrategy
選擇新的系統時間。