外部時刻の検出

Android 12 以降では、必要に応じて外部のタイムソースを使用して time_detector サービスに Unix エポック時刻を提案できます。これは、AOSP ではデフォルトで有効になっていません。

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

実装

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

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

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

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

システムに外部時刻の提案を提供するには、TimeManagersuggestExternalTime() メソッドを使用します。設定ファイルで config_autoTimeSourcesPriority を使って外部オリジンを設定し、それよりも優先度の高い時刻の提案がない場合は、このメソッドに渡されるタイムスタンプを使用して現在の Unix エポック時刻を設定します。