Android Automotive OS(AAOS)はフラグと設定を使用して、さまざまな機能を有効にします。動的なルーティング フラグから、車のサービスからの音量コントロールなどのより汎用的な機能フラグまでさまざまです。現在の AAOS の音声管理用の構成フラグは以下のとおりです。
| フラグ | 目的 | |
|---|---|---|
| audioUseDynamicRouting | 車のサービス構成ファイルで定義され、AAOS ルーティングを有効にします。構成ファイルでは trueに設定する必要があります。falseに設定すると、ルーティングとCarAudioServiceの大部分が無効になり、OS はオーディオ ポリシーの設定に記載のデフォルトの動作にフォールバックします。 | |
| audioUseCarVolumeGroupMuting | 車のサービス構成ファイルで定義され、個々の音量グループのミュートを有効にします。 false(デフォルト値)に設定すると、個々の音量グループのミュートが無効になります。代わりに、ミュートはマスター ミュートを切り替えます。trueに設定すると、車の音量グループのミュートが有効になり、それぞれの音量グループを個別にミュートできます。trueの場合、音量グループのミュートはオーディオ コントロール HAL で実装する必要があります。 | |
| audioUseHalDuckingSignals | 車のサービス構成ファイルで定義され、 IAudioControl#onDevicesToDuckChangeAPI を有効にして、ダッキングのタイミングを HAL に通知します。true(デフォルト値)に設定すると、API はダッキングする出力デバイスとフォーカスを保持する用途を示す信号を受信します。falseに設定すると、API は呼び出されません。オーディオ コントロール HAL でダッキングを実装していない限り、API は呼び出されません。 | |
| config_oemCarService | 車のサービス構成ファイルで定義される、OEM カスタマイズ サービスのコンポーネント名です。OEM がこのサービスの実装を選択すると、さまざまなポリシーの車のサービス アクションをカスタマイズできます。OEM がこのコンポーネントの実装を選択した場合、サービスを実装して car-lib で公開される OemCarServiceを拡張したうえで、必要なコンポーネント サービスを実装しなければなりません。具体的にカーオーディオ サービスの場合、OEM はどのオーディオ サブサービスを実装しても、オーディオ アクションを管理できます。詳細については、カーオーディオのプラグイン サービスをご覧ください。コンポーネント名が無効な場合、CarServiceはどの OEM サービスにも接続しません。コンポーネント名はサードパーティ パッケージにはできません。プリインストールされている必要があります。 | |
| audioVolumeAdjustmentContextsVersion | 車のサービス構成ファイルで定義される、音量調整コンテキストの優先順位リストのバージョンを選択する設定です。 バージョン 1 には以下の順序ですべてのオーディオ コンテキストが含まれています。 
 バージョン 2 は以下の順序で、記載のコンテキストに限定されます。 デフォルトのバージョンは  
 | |
| audioPersistMasterMuteState | 車のサービス構成ファイルで定義され、グローバルなミュート状態を保持する設定です。 true(デフォルト値)に設定すると、Android は起動時にグローバルなミュート状態を復元します。audioUseCarVolumeGroupMutingがtrueの場合、ミュートの変更は個々の音量グループに基づくため、この設定はミュートの変更の保持には影響しません。デフォルト値はtrueに設定されており、マスター ミュートをデバイスに対して保持しない場合は、上書きする必要があります。 | |
| audioVolumeKeyEventTimeoutMs | 車のサービス構成ファイルで定義され、車の音量グループが音量キーイベント時に音量調節の変更に対してアクティブと見なされる間のタイムアウトをミリ秒で示す設定です。この設定は次のように使用されます。 
 デフォルト値は  | |
| audioUseCarVolumeGroupEvent | 車のサービス構成ファイルで定義され、音量グループに対するコールバック イベントを有効にする設定です。 trueに設定すると、クライアントはICarVolumeGroupEventから音量グループに影響を及ぼすイベントへのコールバックを受け取ります。有効にする場合は、以下の点にご注意ください。
 デフォルト値は  | |
| config_useFixedVolume | frameworks/base/core/res/res/values/config.xmlで定義されます。trueに設定して、カーオーディオ サービスが音声調節を管理できるようにする必要があります。config_useFixedVolumeフラグが設定されていない場合、またはfalse(デフォルト値)に設定されている場合、アプリでAudioManager音量調節 API を呼び出して、ソフトウェア ミキサーのストリーム タイプ別に音量を変更できます。これは他のアプリに影響を及ぼす可能性があり、ソフトウェア ミキサーで音量を下げると、ハードウェア アンプで受信した信号で利用できる有効ビットが少なくなるため、望ましくない場合があります。まだ構成がされていない新しいデバイスとtrueに設定されている新しいデバイスはAudioManager音量およびミュート API 経由で音量変更を受け取ります。 | |
| config_handleVolumeKeysInWindowManager | frameworks/base/core/res/res/values/config.xmlで定義されます。trueに設定して、カーオーディオ サービスが音量キーイベントをインターセプトできるようにする必要があります。false(デフォルト値)に設定すると、音量キーイベントはフォアグラウンド アプリに転送され、カーオーディオ サービス外で音量キーイベント管理から悪影響を及ぼす可能性があります。 | |
| audioUseMinMaxActivationVolume | 車のサービス構成ファイルで定義され、最小および最大アクティベーション音量を有効にします。 trueの場合は、最小および最大アクティベーション音量管理のために、音量のゲイン インデックスが調整される可能性があります。false(デフォルト値)の場合、最小および最大アクティベーション音量は有効になりません。 | 
カーオーディオ サービス構成
Android 13 より前は、車のサービス構成は packages/services/Car/service/res/values/config.xml ファイルのサービス構成オーバーレイで上書きされていました(詳しくは、リソース オーバーレイを使用してビルドをカスタマイズするをご覧ください)
PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>
<path_to_overlay> から実際の場所までの構成ファイルの場所には packages/services/Car/service/res/values/ を含める必要があります。
車のサービスの RRO
Android 13 より、AAOS はランタイム リソース オーバーレイをサポートしています。RRO を使用してカーオーディオ設定の値を変更します。たとえば、device/google/cuttlefish/shared/auto/rro_overlay/ の自動車 cuttlefish リファレンスの RRO をご覧ください。audioUseDynamicRouting 構成は device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml でオーバーライドされます。
<resources>
    <bool name="audioUseDynamicRouting">true</bool>
...
リソース オーバーレイ マップは device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml に含まれます。
<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>
device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml で定義されるリソース オーバーレイ マニフェストには、com.android.car.updatable に設定された targetPackage が含まれます。
詳しくは、こちらのリソースをご覧ください。
機能有効化 API
このメソッドは、その機能がデバイスで有効になっていれば true を返し、有効でなければ false を返します。CarAudioManager#isAudioFeatureEnabled API では、渡されるパラメータは次のいずれかである必要があります。
- AUDIO_FEATURE_DYNAMIC_ROUTING
- AUDIO_FEATURE_VOLUME_GROUP_MUTING
- AUDIO_FEATURE_OEM_AUDIO_SERVICE
- AUDIO_FEATURE_VOLUME_GROUP_EVENTS
- AUDIO_FEATURE_AUDIO_MIRRORING