動態條形音箱模式

借助 Android 14 框架支持,具有內建或連接揚聲器的機上盒 (STB) 和 OTT 設備可以配置為連接設備的條形音箱。 Android 14 中的動態條形音箱模式 (DSM) 支援條形音箱的 HDMI 消費性電子控制 (CEC) 屬性,例如音訊回傳通道 (ARC) 和系統音訊控制。

此功能僅針對 Android TV CEC 播放裝置。

要求

要採用條形音箱功能,OEM 必須符合本節中列出的裝置和系統 UI 要求。

設備要求

為了支援 DSM,STB/OTT 設備必須滿足以下要求:

  • 該設備必須運行 Android 14。
  • 啟用 DSM 後,設備的行為必須像條形音箱一樣遵循 HDMI CEC 規範,例如 ARC。
  • 該設備必須能夠在內建或連接的揚聲器上播放聲音。
  • 當設備不是活動來源時,設備上的所有媒體都必須暫停,以限制其功耗。

系統使用者介面要求

為了支援 DSM,OEM 在設計系統 UI 時必須滿足以下要求:

  • UI 標籤必須包含對ARC音訊回傳通道 (ARC) 的引用。
  • UI 必須通知使用者將裝置連接到電視的 ARC 連接埠以建立 ARC 連線。
  • UI 必須通知用戶,如果 HDMI 網路中連接了另一個條形音箱或音訊/視訊接收器 (AVR),則該功能可能無法如預期運作。
  • UI 必須通知使用者切換設定時畫面可能會閃爍。
  • 如果裝置沒有內建揚聲器,則必須預設為停用 DSM。

最佳實務:我們建議使用「顯示和聲音」選單作為使用者設定啟用或停用ARC 的位置,如SysUI 實作中所示。

框架實施

Android 框架中存在 CEC soundbar 功能的實作和邏輯位址 5 的動態分配。當啟用條形音箱設定時,框架會指派邏輯位址,以便裝置動態成為條形音箱。當條形音箱設定被停用時,框架會取消分配邏輯位址。

根據系統 UI 上的使用者輸入, HdmiControlManagerCEC_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.
     *
     * <p>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.
     *
     * <p>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 必須確保硬體支援此功能。 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. 系統 UI中公開設定以切換條形音箱模式。

為了進行調試,請使用以下adb命令打開或關閉條形音箱功能( 1表示打開, 0表示關閉):

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

系統UI實現

本節介紹用於開啟和關閉 DSM 的建議模擬 UI 流程。音訊輸出設定在「顯示與聲音」選單下,如圖1所示:

dsm_audio_output

圖 1. “顯示和聲音”選單下的音訊輸出設定。

若要使 DSM 運作,必須開啟啟用 HDMI-CEC設定。僅當啟用 HDMI-CEC 時才能啟用ARC設定。如果停用 HDMI-CEC, ARC設定將變灰並停用,如圖 2 所示。在以下 UI 流程中,當使用者在“顯示和聲音”選單中關閉“啟用 HDMI-CEC”設定並選擇“家庭揚聲器”時, ARC設定將顯示為灰色並被停用。設定已停用。使用者可以透過啟用啟用 HDMI-CEC來啟用播放電視音訊設定。

dsm_ui_disable_arc

圖 2.停用 ARC 選項的 UI。

當 HDMI-CEC 設定啟用時,使用者可以使用音訊輸出下的ARC設定來開啟和關閉 DSM。若要開啟 DSM,使用者按照圖 3 中的 UI 流程進行操作。在以下 UI 流程中,要啟用條形音箱模式,使用者選擇「家庭揚聲器」 ,然後選擇並確認ARC設定。要關閉 DSM,用戶需要關閉ARC設定。

dsm_ui_enable_arc

圖 3.啟用 DSM 的 UI。

驗證

OEM 可以執行音訊測試,以確保播放裝置的揚聲器播放來自電視或連接到電視面板的其他裝置的聲音。

手動驗證

使用以下場景手動驗證預期行為:

  • ARC設定已啟用:
    • 電視自動靜音。
    • 電視聲音被傳送到設備的揚聲器。
  • ARC設定已停用:
    • 電視停止將音訊路由到設備。
    • 電視開始播放音訊。
  • ARC設定已啟用,且裝置已連接至電視的非 ARC 連接埠:
    • 設備不播放電視的聲音。
  • 在連接裝置之前, ARC設定已啟用且邏輯位址 5 已被另一個裝置使用:
    • 該設備的行為就像一個純粹的播放設備,而不是條形音箱。
  • ARC 設定已啟用,裝置正在使用邏輯位址 5,並且網路中連接了另一個音訊系統:
    • 設備的條形音箱行為沒有改變。
  • ARC設定已啟用,連接到非 ARC 連接埠的裝置正在使用邏輯位址 5,並且另一個音訊系統連接到 ARC 連接埠:
    • 未與第二音訊系統的電視建立 ARC 連接,因為它使用未註冊的邏輯位址。
  • ARC設定已啟用,且裝置已熱插拔:
    • 啟用該設定後,設備將遵循正常行為。

CTS驗證

當條形音箱設定停用時,需要透過CtsHdmiCecHostTestCasesCtsHdmiCecHostTestCases測試套件中的HdmiCecSoundbarModeTest.java測試用於測試 DSM 功能。

儘管不是認證要求,但請在啟用條形音箱設定的情況下執行CtsHdmiCecHostTestCases來驗證您的實作。

請參閱Android TV 裝置的 CEC CTS 測試,以執行 HDMI CEC 的 Android CTS 測試。