多區域音訊轉送

車輛音訊服務根據核心音訊動態音訊政策決定要採用哪些音訊 更是如此

  • 為每位乘客分別播放音訊,稱為多區域音訊 每個可用區都支援並行播放音效

  • 動態音訊區設定。

  • 乘客主要區域音訊投放。

  • 乘客的音訊鏡像。

在各種用途中,汽車音訊服務都會使用動態音訊政策: 自動將音訊轉送至指定的輸出裝置。

多區域音訊

多區域音訊可讓多位使用者同時與 AAOS 互動。A 罩杯 一組輸出裝置會與一個可用區相關聯,每個可用區都會維護音訊 關注焦點和音量乘客可以在開車時聆聽自己的音訊 會監聽主要可用區中的另一個來源 (通常是主要車櫃)。

多可用區音訊架構

汽車音響服務架構

圖 1. 汽車音響服務架構。

車輛音訊區域是音訊輸出、音訊焦點和其他元件的抽象化機制 音訊設定,而且所有設定都可單獨管理。為了轉送流量 每個可用區都定義為一組音訊輸出匯流排裝置, 音訊政策設定。每種音訊區域定義的裝置不盡相同。 在圖 1 中,公車裝置 (1 到 5) 屬於區域零,公車裝置為 6 到 8 8 屬於區域 1,而 9 到 11 的公車裝置屬於第二區。

汽車音訊設定

通常,輸出裝置會指派至一個音訊區域。每個音訊區 定義於 car_audio_configuration.xml。下列程式碼片段顯示汽車 圖 1 的音訊設定:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneId="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId」是由以下公司管理的汽車服務定義: CarOccupantZoneManager。車輛用於車輛,為以下地點的使用者定義對應關係 車輛前往特定座位的位置。CarOccupantZoneService 也定義了 會將使用者區域對應至螢幕、其他週邊裝置,以及使用者 使用者登入螢幕。音訊區域的特色如下:

  • 音訊區域 ID 和乘客區域 ID。

    • 將音訊區域地圖設定為佔用區域 (座位、顯示器和其他週邊裝置)
    • 登入時指派給哪個使用者 ID 會獲派音訊區域
  • 音訊設定清單。每項音訊設定都有一組 音量群組每個音量群組都有一組音訊匯流排裝置。

    • 變更音量後,群組中的所有音訊裝置都會控制在以下位置: 使用這個層即可

    • 系統會為每部音訊裝置指派一份音訊屬性清單。這個 這些資訊會用來建構音訊政策組合,並採用不同的方式 指派的音訊屬性

這項設定可讓系統將不同的音訊屬性使用方式轉送至 不同的輸出裝置視用途而定 聲音可以同時播放舉例來說,您可以選擇 車內 (主要區域) 透過所有揚聲器播放媒體音效,同時播放導航音效 接收到最接近駕駛座的揚聲器在音訊並行播放的情況下 主要車廂在導航至 驅動程式庫。

多區域音訊乘客登入工作流程

以下序列圖表顯示在發生下列情況時,啟用音訊轉送的流程 乘客登入其螢幕:

圖片

圖 2.

在此序列中,使用者登入會經由 乘客區域服務。

  1. 車輛音訊服務 (針對特定音訊區域) 使用 使用 AudioPolicy#removeUserIdDeviceAffinity API 移除使用者裝置 興趣相似目標對象。這個 API 採用使用者 ID,在這個例子中 內容。

  2. AudioPolicy#setUserIdDeviceAffinity API 會將新使用者指派給 這個區域會納入 User-ID 和所有裝置的特定可用區 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定

動態可用區設定

在 Android 14 中,動態可用區設定 協助原始設備製造商 (OEM) 為乘客設定不同的裝置組合。 這可讓位於後座的乘客在後座之間切換 頭部喇叭和後座耳機週邊裝置。

在此情況下,您必須提供兩項設定。一個代表後座 以及耳機週邊裝置系統會轉送特定使用者的音訊 一次只會套用至一個設定

動態可用區設定
工作流程

圖 3. 動態可用區設定工作流程。

圖 3 插圖:動態區域設定架構 工作流程音訊區域 1 包含 Config 0Config 1 兩項設定, 與輸出裝置的喇叭和頭部相關

使用者登入後,系統就會自動為他們指派預設設定。 使用者選擇變更設定時 (通常是透過系統 UI), 車輛音訊服務會執行兩種設定之間的切換作業。在本 輸出裝置會在 Z1 喇叭和 Z1 頭部間切換。

下列程式碼片段顯示這項動態區域設定的設定。

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

透過車輛音訊管理員協助管理音訊設定 公開 API 來管理設定:

  • 某個可用區可用的查詢設定。
  • 查詢目前設有可用區設定。
  • 請改用其他設定。

系統 UI 應用程式或服務可以使用這些 API 來管理 如圖 4 所示。Query API 將兩者公開給乘客看。 使用者可以輕觸 所需設定

動態可用區設定
工作流程

圖 4. 動態可用區設定工作流程。

主要區域乘客音訊投放

主要區域乘客音訊投放功能是在 Android 14 中導入的功能, 可讓乘客將媒體音訊投放至主要可用區。在本 以便將乘客的媒體音訊投放到主要車廂 驅動程式仍完全掌控

下圖顯示了 乘客媒體音訊投放。

動態可用區設定
工作流程

圖 5. 動態可用區設定工作流程。

圖顯示駕駛人使用的媒體輸出裝置與 乘客,只有在乘客投放到主要可用區時才會發生這種情況 模式。動態音訊政策也可用來管理 但系統不會對驅動程式的裝置相依性套用任何變更。適用對象 輸出裝置清單的乘客會變更如下:

  • 乘客的媒體輸出裝置已從裝置清單中移除
  • 驅動程式的媒體輸出裝置已新增至裝置清單
  • 乘客音訊區域的其餘輸出裝置仍會保留在裝置清單中

這張新的裝置清單是由 AudioPolicy#setUserIdDeviceAffinity API。傳遞到 API 的參數是 和乘客使用者 ID 清單。音訊系統音訊 政策服務查詢要為媒體音軌選取的音訊組合 與乘客相關聯的媒體音訊組合 已選取可用區

主要可用區投放音訊的主要需求是主要可用區的媒體 輸出裝置與其他音訊屬性的使用情形區隔開來。否則,在 多個音訊屬性,其他音訊屬性則會新增至組合中。 混音選擇由音響系統完成混音後,連接的所有音效 系統會在主要車櫃中播放這個合輯。

乘客區音訊鏡像

音訊鏡像功能可讓乘客分享音訊。鏡像功能 重複的音訊資料,以便所有乘客都能聆聽 相同的音訊。在這個情況下,乘客將使用音訊焦點 片段與音訊的鏡像

音訊鏡像轉送

至少需要兩名乘客才能啟用音訊鏡像功能。身為 因此,如果音訊配置只有兩個乘客音訊區域,就需要 一個鏡像輸出裝置根據上述定義,兩個並行鏡像 並開始建立工作階段

下圖顯示多區域音訊鏡像的簡化圖表 兩名乘客之間兩位乘客的音訊會轉送至音訊鏡像 裝置,bus_1000。音訊 HAL 會將訊號複製到來源可用區。

動態可用區設定
工作流程

圖 6. 動態可用區設定工作流程。

「只有」乘客處於鏡像模式時,才會啟用路線規劃功能。如果 而不是將音訊區域的對應裝置指派給乘客。 首次為乘客啟用鏡像功能時, AudioPolicy#setUserIdDeviceAffinity API 會修改轉送:

  • 乘客的媒體輸出裝置已從裝置清單中移除。
  • 已將鏡像輸出裝置新增至裝置清單。
  • 乘客音訊區域的其餘輸出裝置會保留在裝置清單中。

使用裝置清單時,系統會使用更新後的裝置清單呼叫 API 乘客的使用者 ID。下圖提供 音訊鏡像工作流程

音訊鏡像工作流程

圖 7. 音訊鏡像工作流程。

圖 7 中,汽車音訊管理員用於管理音訊鏡像的 API 呼叫媒體系統服務具體來說,這個 API 可用來啟用音訊 為使用者 1 和使用者 2 (CarAudioManager#enableMirrorForAudioZones) 建立鏡像。

車輛音訊服務會將使用者的音訊路線設為 相同。車輛音訊服務也會將訊號傳送到音訊 HAL, 設定並將鏡像裝置的音訊複製到對應的 目前含有三個可用區

在上圖中,汽車音訊服務會傳送 mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

位置

bus_1000 是源公車,bus_10bus_20 是目的地 公車。

序列圖中不會顯示的信號是透過 AudioManager#setParameters API:可透過音訊傳遞至 HAL 課程中也會快速介紹 Memorystore 這是 Google Cloud 的全代管 Redis 服務

停用音訊鏡像後,系統會傳送以下訊號: mirroring_src=bus_1000;mirroring=off。HAL 可使用這個訊號 如未啟用音訊鏡像功能,則停用音訊重複功能。如何定義音訊 以鏡像裝置投放,汽車音訊設定檔含有一個名為 mirroringDevices,如以下程式碼片段所示。

在這個程式碼片段中,定義了兩部鏡像裝置:bus_1000bus_2000。 ,讓四名乘客使用音訊鏡像功能

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>