外部时间检测

从 Android 12 开始,Android 可以选择使用外部时间源向 time_detector 服务提供 Unix 纪元时间建议。此功能在 AOSP 中默认处于停用状态。

通过使用外部时间来源,设备制造商可以向 Android 提供完全自定义的时间建议。收到外部时间来源的建议后,time_detector 服务会使用配置的优先级规则来确定是否更新系统时钟。

实现

如需支持外部时间检测,设备制造商必须实现一个组件来通过系统 API 调用向 time_detector 服务提交外部时间建议。

如需配置外部时间来源,请使用 core/res/res/values/config.xml 系统服务器配置文件。将值 external 添加到 config_autoTimeSourcesPriority

以下示例会指示 Android 在设置系统时钟时,为外部时间建议提供最高优先级。如果没有有效的外部时间建议,则使用下一个来源(在本例中为 gnss)的值。

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

如需为系统提供外部时间建议,请使用 TimeManager 中的 suggestExternalTime() 方法。如果在配置文件中使用 config_autoTimeSourcesPriority 配置了外部时间源站,并且没有更高优先级的时间建议,则 Android 会使用传递给此方法的时间戳来设置当前 Unix 纪元时间。