動態條形音箱模式

有了 Android 14 架構支援,原始設備製造商 (OEM) 就能設定機上盒 (STB) 和 OTT 裝置,讓內建或外接喇叭成為連線裝置的音箱。Android 14 的動態單件式環繞劇院模式 (DSM) 支援單件式環繞劇院的 HDMI 消費性電子產品控制 (CEC) 屬性,例如音訊回傳通道 (ARC) 和系統音訊控制。

這項功能僅適用於 Android TV CEC 播放裝置。

需求條件

如要採用音箱功能,原始設備製造商必須符合本節列出的裝置和系統 UI 需求。

裝置需求

如要支援 DSM,機上盒或 OTT 裝置必須符合下列條件:

  • 裝置必須搭載 Android 14。
  • 啟用 DSM 後,裝置必須按照 HDMI CEC 規格 (例如 ARC) 運作,如同單件式環繞劇院。
  • 裝置必須能透過內建或連線的音箱播放音效。
  • 如果裝置不是作用中的來源,裝置上的所有媒體都必須暫停,以限制耗電量。

系統 UI 需求

如要支援 DSM,OEM 在設計系統 UI 時必須符合下列規定:

  • 使用者介面標籤必須包含 ARC 或「音訊回傳通道」的參照。
  • 使用者介面必須通知使用者將裝置連接至電視的 ARC 連接埠,以建立 ARC 連線。
  • 如果 HDMI 網路中連接了其他單件式環繞劇院或影音接收器 (AVR),UI 必須告知使用者這項功能可能無法正常運作。
  • UI 必須告知使用者,切換設定時螢幕可能會閃爍。
  • 如果裝置沒有內建喇叭,系統預設必須停用 DSM。

建議的最佳做法是使用「螢幕和音效」選單,做為啟用或停用 ARC 的使用者設定位置,如「SysUI 實作」所示。

實作架構

Android 架構中實作了 CEC 聲霸功能,以及邏輯位址 5 的動態分配。架構會在啟用音箱設定時分配邏輯位址,讓裝置動態成為音箱。音箱設定停用時,架構會取消分配邏輯位址。

根據系統 UI 上的使用者輸入內容,HdmiControlManager 會將 CEC_SETTING_NAME_SOUNDBAR_MODE 設為 SOUNDBAR_MODE_ENABLEDSOUNDBAR_MODE_DISABLEDCEC_SETTING_NAME_SOUNDBAR_MODE 的預設值為 SOUNDBAR_MODE_DISABLED

HdmiControlService 會監聽 CEC_SETTING_NAME_SOUNDBAR_MODE 設定的變更,並執行下列操作:

  • 驗證是否有本機播放裝置,以及是否支援 ARC 屬性。
  • 觸發邏輯位址分配,新增或移除本機音訊裝置。
  • 如果裝置熱插拔,請確保設定狀態會保留。

請參閱下列聲明範例,瞭解如何設定及取得音箱模式的狀態:

    /**
     * Name of a setting deciding whether the Soundbar mode feature is enabled.
     * Before exposing this setting make sure the hardware supports it, otherwise, you may
     * experience multiple issues.
     *
     * @see HdmiControlManager#setSoundbarMode(int)
     */
    public static final String CEC_SETTING_NAME_SOUNDBAR_MODE = "soundbar_mode";
    /**
     * Soundbar mode feature enabled.
     */
    public static final int SOUNDBAR_MODE_ENABLED = 1;
    /**
     * Soundbar mode feature disabled.
     */
    public static final int SOUNDBAR_MODE_DISABLED = 0;

   /**
     * Set the status of Soundbar mode feature.
     *
     * This allows to enable/disable Soundbar mode on the playback device.
     * The setting's effect will be available on devices where the hardware supports this feature.
     * If enabled, an audio system local device will be allocated and try to establish an ARC
     * connection with the TV. If disabled, the ARC connection will be terminated and the audio
     * system local device will be removed from the network.
     */
    public void setSoundbarMode(@SoundbarMode int value) {
    }

    /**
     * Get the current status of Soundbar mode feature.
     *
     * Reflects whether Soundbar mode is currently enabled on the playback device.
     * If enabled, an audio system local device will be allocated and try to establish an ARC
     * connection with the TV. If disabled, the ARC connection will be terminated and the audio
     * system local device will be removed from the network.
     */
    public int getSoundbarMode() {}

原始設備製造商 (OEM) 實作

如要支援動態單件式環繞劇院功能,原始設備製造商必須確保硬體支援這項功能。OEM 必須設定裝置實作系統 UI,才能提供使用者輸入所需的介面。

裝置實作

如要在裝置上支援音箱功能,請按照下列步驟操作:

  1. 在 Android 14 上開啟播放裝置。
  2. 在驅動程式中實作 HDMI ARC 連接埠。
  3. 請勿變更 config.xml 中的 config_cecSoundbarModeEnabled_defaultconfig_cecSoundbarModeDisabled_default 的 RRO 值,config_cecSoundbarModeEnabled_defaultconfig_cecSoundbarModeDisabled_default 讓這項功能預設保持停用狀態。

  4. 確認裝置內建或已連接喇叭,可播放音訊,並編輯音訊政策設定

  5. 將系統屬性 persist.sys.hdmi.property_arc_support 設為 true,表示支援 ARC。

  6. 系統 UI 中公開設定,以便切換音箱模式。

  7. 如要進行偵錯,請使用下列 adb 指令開啟或關閉音箱功能 (1 為開啟,0 為關閉):

adb shell cmd hdmi_control cec_setting set soundbar_mode <1/0>

SysUI 實作

本節說明建議的模擬 UI 流程,用於開啟及關閉 DSM。「音訊輸出」設定位於「顯示和音效」選單下方,如圖 1 所示:

dsm_audio_output

圖 1. 「顯示和音效」選單中的音訊輸出設定。

如要使用 DSM,請務必開啟「啟用 HDMI-CEC」設定。只有在啟用 HDMI-CEC 的情況下,才能啟用「ARC」設定。如圖 2 所示,如果停用 HDMI-CEC,則「ARC」設定會無法使用並停用。在下列 UI 流程中,使用者關閉「顯示器和音效」選單中的「啟用 HDMI-CEC」設定並選取「Home 音箱」時,「ARC」設定會停用。使用者可以啟用「播放電視音訊」設定,方法是啟用「啟用 HDMI-CEC」

dsm_ui_disable_arc

圖 2. 停用 ARC 選項的 UI。

啟用 HDMI-CEC 設定後,使用者可以透過「音訊輸出」下方的「ARC」設定開啟及關閉 DSM。如要開啟 DSM,使用者必須按照圖 3 的 UI 流程操作。在下列使用者介面流程中,如要啟用音箱模式,使用者會選取「家用音箱」,然後選取並確認「ARC」設定。如要關閉 DSM,使用者必須關閉「ARC」設定。

dsm_ui_enable_arc

圖 3. 啟用 DSM 的使用者介面。

驗證

原始設備製造商可以執行音訊測試,確保播放裝置的揚聲器會播放來自電視或連線至電視面板的其他裝置的音效。

手動驗證

請使用下列情境手動驗證預期行為:

  • 已啟用 ARC 設定:
    • 電視會自動靜音。
    • 電視音訊會轉送至裝置的喇叭。
  • 「ARC」設定已停用:
    • 電視會停止將音訊傳送到該裝置。
    • 電視會開始播放音訊。
  • ARC 設定已啟用,且裝置連接至電視的非 ARC 連接埠:
    • 裝置不會播放電視音效。
  • 裝置連線前,「ARC」設定已啟用,且邏輯位址 5 已由其他裝置使用:
    • 裝置會像純播放裝置一樣運作,而非音箱。
  • ARC 設定已啟用、裝置正在使用邏輯位址 5,且網路中已連線其他音訊系統:
    • 裝置的音箱行為不會有任何異動。
  • ARC 設定已啟用,裝置連接至非 ARC 連接埠時會使用邏輯位址 5,而另一個音訊系統連接至 ARC 連接埠:
    • 由於第二個音訊系統使用未註冊的邏輯位址,因此無法與電視建立 ARC 連線。
  • ARC 設定已啟用,且裝置已熱插拔:
    • 裝置會像啟用這項設定時一樣正常運作。

CTS 驗證

CtsHdmiCecHostTestCases 音箱設定停用時,必須通過驗證。HdmiCecSoundbarModeTest.java 測試套件中的 CtsHdmiCecHostTestCases 測試會測試 DSM 功能。

雖然這不是認證要求,但請啟用音箱設定執行 CtsHdmiCecHostTestCases,驗證實作項目。

如要執行 HDMI CEC 的 Android CTS 測試,請參閱「Android TV 裝置的 CEC CTS 測試」。