此功能使合作伙伴可以选择如何同步时间,是从 Android Automotive 操作系统 (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
创建并向TimeManager
发送ExternalTimeSuggestion
。TimeManager
将建议转发给TimeDetectorService
。TimeDetectorService
使用TimeDetectorStrategy
选择新的系统时间。