この機能を使用すると、パートナーは、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を使用して新しいシステム時刻を選択します。