Android 12 以降では、必要に応じて外部のタイムソースを使用して 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
を使って外部オリジンを設定し、それよりも優先度の高い時刻の提案がない場合は、このメソッドに渡されるタイムスタンプを使用して現在の Unix エポック時刻を設定します。