この機能を使用すると、パートナーは、Android Automotive オペレーティング システム(AAOS)または車両システムから Android への時刻の同期方法を選択できます。実装の品質を確保するために、次に示す 2 つの新しい VHAL プロパティのいずれかを使用するよう AAOS を設定することで、値を効率的に反映させることができます。使用するプロパティは次のとおりです。
ANDROID_EPOCH_TIME
: 信頼できるタイムソースとして Android を使用します。VHAL は、Android から電子コントロール ユニット(ECU)やボディ コントロール モジュール(BCM)などの他の車両システムに時刻の変更を伝える、この書き込み専用のプロパティをサポートします。EXTERNAL_CAR_TIME
: 信頼できるタイムソースとして Android を使用しません。この場合 VHAL は、他の車両システム(ECU や BCM など)から Android に時刻の変更を伝える、読み取り専用のEXTERNAL_CAR_TIME
プロパティをサポートします。
AAOS には、Android 内でさまざまなタイムソースに優先順位を付けられるよう、設定可能な TimeDetectorStrategy
も用意されています。
Android が信頼できるタイムソースである場合
Android をタイムソースとして使用する場合、OEM は他の自動車システム(ECU や BCM を含む)を Android の時刻と同期できます。
そのためには、VHAL 実装が書き込み専用の ANDROID_EPOCH_TIME
プロパティをサポートしている必要があります。Android は、起動時と、Android のタイムソースが変更されるたびに、システム時刻を読み取ってプロパティの更新を公開します。
Android が信頼できるタイムソースでない場合
Android をタイムソースとして使用しない場合、Android の時刻を信頼できるタイムソースとして(ECU や BCM などと)同期できます。この場合は、VHAL 実装が読み取り専用のプロパティ EXTERNAL_CAR_TIME
をサポートし、タイムソースが変更されるか時計が再校正されるたびに、このプロパティの更新を公開する必要があります。
OEM は次のようにする必要もあります。
config_autoTimeSourcesPriority
値をcore/res/res/values/config.xml
に含める。- CarServices オーバーレイ構成(
packages/services/Car/service/res/values/config.xml
)のconfig_enableExternalCarTimeToExternalTimeSuggestion
プロパティをtrue
に設定する。 TimeDetectorStrategy
構成で、external
時刻に適切な優先度を設定する。詳細については、GNSS 時刻の検出をご覧ください。次に例を示します。<!-- Specifies priority of automatic time sources. Suggestions from higher entries in the list take precedence over lower ones. See com.android.server.timedetector.TimeDetectorStrategy for available sources. --> <string-array name="config_autoTimeSourcesPriority"> <item>external</item> <item>gnss</item> <item>network</item> <item>telephony</item> </string-array>
Android の内部実装の詳細
ANDROID_EPOCH_TIME
VHAL プロパティがサポートされている場合のフローは次のとおりです。
TimeHalService
(CarServices 内)が、Android システムからIntent.ACTION_TIME_CHANGED
のブロードキャストを受信します。TimeHalService
が、VHAL プロパティANDROID_EPOCH_TIME
の更新を公開します。- VHAL は、受け取った時刻値をさまざまな ECU と BCM ユニットに反映できます。
EXTERNAL_CAR_TIME
VHAL プロパティがサポートされている場合のフローは次のとおりです。
- VHAL が
EXTERNAL_CAR_TIME
プロパティを更新します。 TimeHalService
(CarServices 内)が、サブスクリプションを通じてプロパティを読み取ります。TimeHalService
がExternalTimeSuggestion
を作成してTimeManager
に送信します。TimeManager
が提案をTimeDetectorService
に転送します。TimeDetectorService
がTimeDetectorStrategy
を使用して新しいシステム時刻を選択します。