在 Android 10 中,已取代 car_audio_configuration.xml
car_volumes_groups.xml
和IAudioControl.getBusForContext
。音訊政策
檔案,通常包含於供應商分區中,代表音訊硬體
請務必調整主機板的配置設定以下清單中提及的所有裝置:
必須在以下位置定義「car_audio_configuration.xml
」:
audio_policy_configuration.xml
。
下圖 1 是汽車音訊服務的概要說明 汽車音訊服務讀取汽車音訊設定的架構 檔案來設定裝置音訊。
圖 1. 汽車音響架構簡介。
將車輛音訊設定檔放入 vendor\etc\
或
裝置上的 system\etc\
,vendor\etc\
是車輛音訊服務第一次搜尋檔案的位置車輛
音訊服務會讀取 car_audio_configuration.xml
來判斷音訊
此外還會從 0 自動調整資源配置
您完全不必調整資源調度設定
汽車音響區:
- 每個音訊區域都包含不重複的音訊區間 ID。
- 每個音訊區域都可以對應到一個乘客區域。
每個可用區的音訊動作各自獨立:
- 音訊焦點
- 音訊路由
- 降低其他應用程式音量
汽車音量群組:
含有音量群組的所有音訊裝置都是由 Nest 操控 增減不變所有裝置的音訊增益設定 群組中的元素必須相同
音訊環境與音訊裝置的差異。這可用來建構音訊 以及將音訊用量對應至輸出裝置
所有音訊情境都應在區域內表示。這樣一來, ,以便為各種音訊屬性正確設定音訊轉送功能
音訊情境
為簡化 AAOS 音訊的設定,我們將類似使用方式分組
放入 CarAudioContexts
。這些音訊情境會用於
CarAudioService
:定義轉送、音量群組、音訊焦點和降低其他應用程式
以自動化做法管理成本以下列出 AAOS 中的靜態音訊環境。
下表說明音訊情境和使用方式之間的對應關係。醒目顯示 資料列的新系統用途。
CarAudioContext | 相關聯的屬性使用資訊 |
---|---|
音樂 | UNKNOWN GAME |
導航 | ASSISTANCE_NAVIGATION_GUIDANCE |
語音指令 | ASSISTANT |
來電響鈴 | NOTIFICATION_RINGTONE |
致電 | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
鬧鐘 | ALARM |
通知 | NOTIFICATION NOTIFICATION_* |
系統音效 | ASSISTANCE_SONIFICATION |
緊急 | EMERGENCY |
安全 | SAFETY |
VEHICLE_STATUS | VEHICLE_STATUS |
公告 | ANNOUNCEMENT |
啟用 AAOS 轉送
如要使用 AAOS 轉送,您必須將 audioUseDynamicRouting
標記設為
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
當 false
、轉送和許多 CarAudioService
都停用時,AAOS 就會下降
改回 AudioService
的預設行為。
主要可用區
根據預設,所有音訊都會轉送至主要可用區。只有一個主要可用區
會由屬性指示設定中的
isPrimary="true"
。系統會自動為主要可用區指派
Audiomanager.PRIMARY_AUDIO_ZONE
。
範例設定 (第 2 版)
舉例來說,某輛車可能有兩個區域,一個主要區域和後座
以及娛樂系統在此情境下,您可以設計
car_audio_configuration.xml
第 2 版,如下所示:
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="music"/>
<context context="announcement"/>
</device>
<device address="bus3_call_ring_out">
<context context="call_ring"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
<group>
<device address="bus1_navigation_out">
<context context="navigation"/>
</device>
<device address="bus2_voice_command_out">
<context context="voice_command"/>
</device>
</group>
<group>
<device address="bus4_call_out">
<context context="call"/>
</device>
</group>
<group>
<device address="bus5_alarm_out">
<context context="alarm"/>
</device>
</group>
<group>
<device address="bus7_system_sound_out">
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
</device>
</group>
</volumeGroups>
</zone>
<zone name="rear seat zone" audioZoneId="1">
<volumeGroups>
<group>
<device address="bus100_rear_seat">
<context context="music"/>
<context context="navigation"/>
<context context="voice_command"/>
<context context="call_ring"/>
<context context="call"/>
<context context="alarm"/>
<context context="notification"/>
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
<context context="announcement"/>
</device>
</group>
</volumeGroups>
</zones>
</audioZoneConfiguration>
在此範例中,主要可用區區分了部分音訊情境
不同的裝置讓 HAL 能夠套用不同的後續處理
並利用車輛的硬體混合每部裝置的輸出內容
這些裝置已分成多個音量群組:媒體、導航、
通話、鬧鐘和系統音效。如果系統設定為
useFixedVolume
,那麼各群組的音量就會傳遞至 HAL
以便套用至這些裝置的輸出內容。
以主要可用區來說,建議將系統音效與其他 聲音。這樣一來,系統就能優先處理車輛聲音。 車輛音訊服務已用來區分 例如集中註意力和鴨子管理例如針對緊急求救事件 要求的優先順序高於其他焦點要求。
為簡單起見,在次要可用區中,所有音訊情境範例都如下 同時轉送到單一裝置和一個音量群組
乘客區域音訊設定
在 Android 11 中,導入了 car_audio_configuration.xml
兩個新欄位:audioZoneId
和 occupantZoneId
您可以使用「audioZoneId
」
控制音訊區域管理您可以使用 occupantZoneId
來設定
都根據使用者 ID 轉送
返回上方音訊設定,但使用新欄位來代表 佔用區域 ID 和音訊區域 ID 對應,新的設定不含 音量群組定義可以按照下列方式設定。
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
...
</zone>
<zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
...
</zone>
</zones>
</audioZoneConfiguration>
上述設定定義了主要可用區與佔用可用區 0 的對應關係
和 audioZoneId
1 到 occupantZoneId
1.一般來說,
可以設定乘客區域和音訊區域。不過,對應必須
一對一定義這兩個新欄位的規則已列於下方。
主要可用區的
audioZoneId
一律為PRIMARY_AUDIO_ZONE
ID。如果 已定義isPrimary="true"
,則不需使用audioZoneId
。audioZoneId
和occupantZoneId
號碼不得重複。audioZoneId
和occupantZoneId
只能有一對一對應。
Android 14 車輛音訊設定
在 Android 14 中,AAOS 導入了原始設備製造商 (OEM) 外掛程式服務。 讓您更主動管理車輛監督的音訊行為 音訊服務除了新外掛程式服務外,下列變更也會: :
- 原始設備製造商 (OEM) 定義的車輛音訊結構定義
- 非主要可用區動態設定
原始設備製造商 (OEM) 定義的車輛音訊情境
如要啟用彈性的音訊設定,請在 Android 中
14,車輛音訊服務
分組方式與上述的靜態音訊環境不同。
可在 car_audio_configuration.xml
中定義這個原始設備製造商 (OEM) 定義的結構定義
第 3 版檔案。
而是使用目前定義的靜態音訊環境。一般 原始設備製造商 (OEM) 定義的車輛音訊結構定義格式如下所示。
原始設備製造商 (OEM) 的結構定義則都須有 name
和音訊屬性清單
則分配給結構定義的使用情況在上例中,有兩種結構定義
定義:
<carAudioConfiguration version="3">
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
media
背景資訊包含AUDIO_USAGE_MEDIA
和AUDIO_USAGE_UNKNOWN
game
結構定義只包含AUDIO_USAGE_GAME
必須在 car_audio_configuration.xml
頂端定義結構定義
檔案。定義 OEM 的情境後,其他車輛音訊設定
就能照常以下規則適用於汽車音訊情境:
原始設備製造商 (OEM) 結構定義定義為選用項目。靜態音訊環境為
請勿重複命名背景資訊。
請勿將音訊屬性用途指派給多個情境。
AudioAttributes
中定義的所有音訊使用方式都應用於建構 相關資訊
嚴格說來,android.audio.policy.configuration.V7_0.AudioUsage
音訊使用的字串表示法,必須在原始設備製造商 (OEM) 音訊情境中使用
定義日後,新版音訊屬性的使用情況將指派給此
最適當的背景資料來減少從 Android 裝置遷移資料時出現的錯誤
移至另一個版本
為了進一步擴充 OEM 外掛程式,我們導入了 OEM 定義的結構定義 音訊服務,也可在不提供原始設備製造商 (OEM) 外掛程式服務的情況下使用。音訊 類似於靜態音訊服務的行為:
音訊焦點互動。音訊屬性可用來決定最佳效果 比對行為。適用對象 詳情請參閱「音訊焦點」。
音訊音量控制音訊屬性可用來判斷最佳比對結果:
- 以原始設備製造商 (OEM) 定義情境為基礎的音量群組。
- 來自設定的靜態磁碟區清單優先順序。
「降低其他應用程式音量」行為:
目前音訊焦點的音訊屬性用途將用於映射到 輸出汽車音訊設定中定義的音訊裝置資訊 檔案。
音訊屬性用於將對應的靜態內容對應至鴨子。 根據靜態音訊折疊矩陣
動態音訊區設定
在 Android 14 中,納入動態音訊區域。 定義音訊區域的汽車音訊設定結構定義 而且更新到第 3 版您必須完成設定,才能使用新的結構定義 每個可用區
<carAudioConfiguration version="3">
<!-- optional OEM context -->
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
</oemContexts>
<zones>
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="primary zone config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="media"/>
<context context="game"/>
<context context="announcement"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
...
</zoneConfigs>
</zone
</zones>
詳情請參閱
device/generic/car/emulator/audio/car_audio_configuration.xml
。距離開始還有
在 Android 14 中,主要可用區只能有一個 (1)
此外還會從 0 自動調整資源配置
您完全不必調整資源調度設定非主要可用區可以有多項設定。下列
汽車音訊設定有下列規則:
主要音訊可用區「只能」進行一項設定。
非主要音訊區域可以有多項設定。
每個音訊區域和音訊區域設定的名稱均不得重複。
在單一音訊區域內,音訊設定可能有所不同:
- 磁碟區群組的設定必須相同。
- 音訊情境指派設定不得相同。
音訊輸出裝置名稱在所有區域或設定中均不得重複。A 罩杯 在音訊設定或區域中,裝置名稱「只能」顯示一次。
屬於同一音量群組的音訊裝置,應該要有相同的音訊 取得組態
請務必為每個音訊指定所有音訊情境 (原始設備製造商 (OEM) 或靜態音訊) 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定
前瞻相容性
儘管新版本的 car_audio_configuration.xml
已推出
仍可在新版 Google Workspace 中
AAOS。原始設備製造商 (OEM) 更新至新版 Android 後,即可重複使用
car_audio_configuration.xml
檔案。
若要使用需要
car_audio_configuration.xml
,必須更新版本。正嘗試使用
包含該檔案版本不支援資訊的舊版檔案
會在車輛服務啟動時擲回 IllegalStateException
。例外狀況
訊息內含會使用哪些資訊,以及
所需最低版本