オーディオ設定の AAOS フラグ

Android Automotive OS(AAOS)はフラグと設定を使用して、さまざまな機能を有効にします。動的なルーティング フラグから、車のサービスからの音量コントロールなどのより汎用的な機能フラグまでさまざまです。現在の AAOS の音声管理用の構成フラグは以下のとおりです。

フラグ 目的
audioUseDynamicRouting 車のサービス構成ファイルで定義され、AAOS ルーティングを有効にします。構成ファイルでは true に設定する必要があります。false に設定すると、ルーティングと CarAudioService の大部分が無効になり、OS はオーディオ ポリシーの設定に記載のデフォルトの動作にフォールバックします。
audioUseCarVolumeGroupMuting 車のサービス構成ファイルで定義され、個々の音量グループのミュートを有効にします。false(デフォルト値)に設定すると、個々の音量グループのミュートが無効になります。代わりに、ミュートはマスター ミュートを切り替えます。true に設定すると、車の音量グループのミュートが有効になり、それぞれの音量グループを個別にミュートできます。true の場合、音量グループのミュートはオーディオ コントロール HAL で実装する必要があります。
audioUseHalDuckingSignals 車のサービス構成ファイルで定義され、IAudioControl#onDevicesToDuckChange API を有効にして、ダッキングのタイミングを HAL に通知します。true(デフォルト値)に設定すると、API はダッキングする出力デバイスとフォーカスを保持する用途を示す信号を受信します。false に設定すると、API は呼び出されません。オーディオ コントロール HAL でダッキングを実装していない限り、API は呼び出されません。
config_oemCarService 車のサービス構成ファイルで定義される、OEM カスタマイズ サービスのコンポーネント名です。OEM がこのサービスの実装を選択すると、さまざまなポリシーの車のサービス アクションをカスタマイズできます。OEM がこのコンポーネントの実装を選択した場合、サービスを実装して car-lib で公開される OemCarService を拡張したうえで、必要なコンポーネント サービスを実装する必要があります。具体的にカーオーディオ サービスの場合、OEM はどのオーディオ サブサービスを実装しても、オーディオ アクションを管理できます。詳細については、カーオーディオのプラグイン サービスをご覧ください。コンポーネント名が無効な場合、CarService はどの OEM サービスにも接続しません。コンポーネント名はサードパーティ パッケージにはできません。プリインストールされている必要があります。
audioVolumeAdjustmentContextsVersion

車のサービス構成ファイルで定義される、音量調整コンテキストの優先順位リストのバージョンを選択する設定です。

バージョン 1 には以下の順序ですべてのオーディオ コンテキストが含まれています。

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

バージョン 2 は以下の順序で、記載のコンテキストに限定されます。

デフォルトのバージョンは 1 です。

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState 車のサービス構成ファイルで定義され、グローバルなミュート状態を保持する設定です。true(デフォルト値)に設定すると、Android は起動時にグローバルなミュート状態を復元します。audioUseCarVolumeGroupMutingtrue の場合、ミュートの変更は個々の音量グループに基づくため、この設定はミュートの変更の保持には影響しません。デフォルト値は true に設定されており、マスター ミュートをデバイスに対して保持しない場合は、上書きする必要があります。
audioVolumeKeyEventTimeoutMs

車のサービス構成ファイルで定義され、車の音量グループが音量ボタンイベント時に音量調節の変更に対してアクティブと見なされる間のタイムアウトをミリ秒で示す設定です。この設定は次のように使用されます。

  • タイムアウトは再生(再生のオーディオ用途に関連する音量)が再生終了後に引き続き自動音量選択と見なされるかどうかを決定するために使用されます。
  • また、タイムアウトは自動音量調整間でユーザーが調整しているものを変更するために必要な一時停止期間としても使用されます。

デフォルト値は 3000 ミリ秒で、OEM はこの値を調整して、ユーザー エクスペリエンスをカスタマイズします。

audioUseCarVolumeGroupEvent 車のサービス構成ファイルで定義され、音量グループに対するコールバック イベントを有効にする設定です。true に設定すると、クライアントは ICarVolumeGroupEvent から音量グループに影響を及ぼすイベントへのコールバックを受け取ります。有効にする場合は、以下の点にご注意ください。

  • ベンダーはオーディオ ハードウェアのイベントと変更に対する IAudioControl#setModuleChangeCallbackIAudioControl#registerGainCallback をサポートすることを強くおすすめします。
  • CarVolumeCallbackCarVolumeGroupEventCallback が同じアプリに登録されている場合、音量グループ インデックスと音量グループ ミュートのコールバックは CarVolumeGroupEventCallback のみを経由する必要があります。そのため、すべてのアプリを新しいコールバック インターフェースに移行して、一貫したパフォーマンスを実現できるようにすることを強くおすすめします。
  • デフォルト値は false です。true に設定することをおすすめします。以前の音量コールバックをサポートする API は非推奨となり、まもなくすべて削除されます。

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(デフォルト値)に設定すると、音量ボタンイベントはフォアグラウンド アプリに転送され、カーオーディオ サービス外で音量ボタンイベント管理から悪影響を及ぼす可能性があります。

カーオーディオ サービス構成

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