Android 12以降、Androidはオプションで外部の時刻ソースを使用して、 time_detector
サービスにUnixエポック時間を提案できます。これは、AOSPではデフォルトで有効になっていません。
外部タイムオリジンにより、デバイスメーカーはAndroidに完全にカスタムの時間提案を提供できます。 time_detector
サービスは、外部の時刻元から提案を受け取った後、構成された優先順位付けルールを使用してシステムクロックを更新するかどうかを決定します。
実装
外部時間検出をサポートするには、デバイスメーカーは、システムAPI呼び出しを介して外部時間の提案をtime_detector
サービスに送信するコンポーネントを実装する必要があります。
外部オリジンを構成するには、 core/res/res/values/config.xml
システムサーバー構成ファイルを使用します。 config_autoTimeSourcesPriority
のexternal
に値を追加します。
次の例は、システムクロックを設定するときに、外部時間の提案を最優先するようにAndroidに指示しています。利用可能な有効な外部時間の提案がない場合は、次のオリジン(この場合はgnss
)が使用されます。
<string-array name="config_autoTimeSourcesPriority">
<item>external</item>
<item>gnss</item>
</string-array>
システムに外部時間提案を提供するには、TimeManagerのTimeManager
suggestExternalTime()
メソッドを使用します。外部オリジンが構成ファイルでconfig_autoTimeSourcesPriority
を使用して構成されており、優先度の高い時間の提案が利用できない場合、Androidはこのメソッドに渡されたタイムスタンプを使用して現在のUnixエポック時間を設定します。