外部時間検出

Android 12以降、Androidはオプションで外部の時刻ソースを使用して、 time_detectorサービスにUnixエポック時間を提案できます。これは、AOSPではデフォルトで有効になっていません。

外部タイムオリジンにより、デバイスメーカーはAndroidに完全にカスタムの時間提案を提供できます。 time_detectorサービスは、外部の時刻元から提案を受け取った後、構成された優先順位付けルールを使用してシステムクロックを更新するかどうかを決定します。

実装

外部時間検出をサポートするには、デバイスメーカーは、システムAPI呼び出しを介して外部時間の提案をtime_detectorサービスに送信するコンポーネントを実装する必要があります。

外部オリジンを構成するには、 core/res/res/values/config.xmlシステムサーバー構成ファイルを使用します。 config_autoTimeSourcesPriorityexternalに値を追加します。

次の例は、システムクロックを設定するときに、外部時間の提案を最優先するようにAndroidに指示しています。利用可能な有効な外部時間の提案がない場合は、次のオリジン(この場合はgnss )が使用されます。

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

システムに外部時間提案を提供するには、TimeManagerのTimeManager suggestExternalTime()メソッドを使用します。外部オリジンが構成ファイルでconfig_autoTimeSourcesPriorityを使用して構成されており、優先度の高い時間の提案が利用できない場合、Androidはこのメソッドに渡されたタイムスタンプを使用して現在のUnixエポック時間を設定します。