音訊設定 AAOS 旗標

Android Automotive OS (AAOS) 會使用旗標和設定啟用不同功能,從動態路由開始,再到更通用的功能旗標,例如車輛服務的音量控制。本文說明目前用於音訊管理的 AAOS 設定旗標。

檢舉 目的
audioUseDynamicRouting 在車輛服務設定檔中定義,用於啟用 AAOS 路由。設定必須設為 true。當 false、路由和大部分 CarAudioService 都停用時,作業系統會改用「設定音訊政策」一文所述的預設行為。
audioUseCarVolumeGroupMuting 在車輛服務設定檔中定義,可讓系統靜音個別音量群組。如果設為 false (預設值),系統就會停用個別音量群組的靜音功能。而是將靜音切換鈕設為主靜音。設定為 true 時,系統會啟用車輛音量群組靜音功能,且可個別靜音每個音量群組。在 true 時,必須在 Audio Control HAL 中實作音量群組靜音功能。
audioUseHalDuckingSignals 在車輛服務設定檔中定義,可讓 IAudioControl#onDevicesToDuckChange API 在何時通知 HAL 時,當 true (預設值) 時,API 會接收信號,指出要隱藏哪些輸出裝置,以及哪些用途會保留焦點。當 false 時,系統不會呼叫 API。除非 Audio Control HAL 實作了 ducking,否則不會呼叫 API。
config_oemCarService 這是在車輛服務設定檔中定義的元件名稱,為原始設備製造商 (OEM) 自訂服務的元件名稱。原始設備製造商 (OEM) 可以選擇實作這項服務,為不同的政策自訂汽車服務動作。如果原始設備製造商 (OEM) 選擇實作此元件,則必須實作服務,以延伸 car-lib 公開的 OemCarService,然後實作必要的元件服務。就汽車音訊服務而言,原始設備製造商 (OEM) 可以實作任何音訊子服務來管理音訊動作。詳情請參閱「Car Audio Plugin Service」。如果元件名稱無效,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 (預設值) 為 1 時,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 中定義的資源疊加資訊清單包含 targetPackage 組合為 com.android.car.updatable

如需更多資訊,請參閱下列資源:

啟用功能的 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