从 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 纪元时间。