動態單件式環繞劇院模式

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

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

需求條件

如要採用條形音箱功能,原始設備製造商 (OEM) 必須符合本節所列的裝置和 System UI 需求。

裝置需求

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

  • 裝置必須搭載 Android 14。
  • 啟用 DSM 時,裝置必須按照 HDMI CEC 規格 (例如 ARC) 的做法,像單件式環繞劇院一樣運作。
  • 裝置必須能夠在內建或連接的喇叭上播放音效。
  • 當裝置不是有效來源時,所有媒體都必須在裝置上暫停,以限制其耗電量。

系統 UI 需求

如要支援 DSM,原始設備製造商在設計系統使用者介面時,必須符合下列規定:

  • UI 標籤必須包含 ARC音頻回傳通道 (ARC) 的參照。
  • 使用者介面必須通知使用者將裝置連接至電視的 ARC 連接埠,以建立 ARC 連線。
  • 如果 HDMI 網路中連接了其他單件式環繞劇院或影音接收器 (AVR),使用者介面必須通知使用者,這項功能可能無法正常運作。
  • 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 值,以便預設情況下繼續停用這項功能。

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

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

  6. 公開設定,在「System 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 設定。如果 HDMI-CEC 處於停用狀態,ARC 設定就無法使用,如圖 2 所示。在下列 UI 流程中,當使用者關閉「Display &Sound」選單中的「Enable HDMI-CEC」設定,然後選取「Home Speaker」時,「ARC」設定就會停用。使用者可透過啟用 [Enable HDMI-CEC] (啟用 HDMI-CEC) 功能來啟用「Play TV Audio」設定。

dsm_ui_disable_arc

圖 2. 已停用 ARC 選項的使用者介面。

啟用 HDMI-CEC 設定後,使用者可以使用「Audio output」下方的「ARC」設定開啟或關閉 DSM。如要開啟 DSM,使用者請按照圖 3 中的 UI 流程操作。在下列 UI 流程中,如要啟用條形音箱模式,使用者必須選取「Home Speaker」,然後選取並確認「ARC」設定。如要關閉 DSM,使用者必須關閉 ARC 設定。

dsm_ui_enable_arc

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

驗證

原始設備製造商 (OEM) 可以執行音訊測試,確保播放裝置的喇叭播放的音訊是來自電視,或其他連接到電視面板的裝置。

手動驗證

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

  • 已啟用 ARC 設定:
    • 電視會自動設為靜音。
    • 電視音訊會傳送到裝置的揚聲器。
  • ARC 設定已停用:
    • 電視會停止將音訊傳送至裝置。
    • 電視開始播放音訊。
  • 已啟用 ARC 設定,且裝置已連接至電視的非 ARC 連接埠:
    • 裝置不會播放電視音效。
  • ARC 設定已啟用,且在裝置連線前的其他裝置使用了邏輯位址 5:
    • 裝置的行為就像純播放裝置,而不是條形音箱。
  • ARC 設定已啟用,裝置正在使用邏輯位址 5,且網路中已連線另一個音訊系統:
    • 裝置的條形音箱行為沒有任何變化。
  • ARC 設定已啟用,連線非 ARC 通訊埠的裝置正在使用邏輯位址 5,另一個音訊系統則連線至 ARC 通訊埠:
    • 由於第二個音訊系統使用未註冊的邏輯位址,因此 ARC 連線無法與電視建立連線。
  • 已啟用 ARC 設定,且裝置已熱插拔:
    • 裝置會按照啟用設定時的正常行為運作。

CTS 驗證

停用條形音箱設定時,必須傳送 CtsHdmiCecHostTestCasesCtsHdmiCecHostTestCases 測試套件中的 HdmiCecSoundbarModeTest.java 測試會測試 DSM 功能。

雖然這不是認證要求,但請啟用條形音箱設定,並執行 CtsHdmiCecHostTestCases,驗證您的實作方式。

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