動的サウンドバー モード

Android 14 フレームワーク サポートを使用すると、スピーカー搭載またはスピーカーに接続されたセットトップ ボックス(STB)デバイスとオーバー ザ トップ(OTT)デバイスで、接続済みのデバイスのサウンドバーを設定できます。Android 14 の動的サウンドバー モード(DSM)は、Audio Return Channel(ARC)や System Audio Control などのサウンドバーの HDMI Consumer Electronics Control(CEC)属性をサポートしています。

この機能は Android TV CEC 再生デバイスのみを対象としています。

要件

サウンドバー機能を導入するには、OEM はこのセクションに記載されているデバイスとシステム UI の要件を満たす必要があります。

デバイスの要件

DSM をサポートするには、STB / OTT デバイスは次の要件を満たす必要があります。

  • Android 14 を搭載したデバイスが必要です。
  • DSM を有効にすると、デバイスは ARC などの HDMI CEC 仕様に沿って、サウンドバーのように動作する必要があります。
  • デバイスは搭載スピーカーまたは接続済みスピーカーで音を再生できる機能を備えている必要があります。
  • デバイスがアクティブ ソースでないときには、デバイスのすべてのメディアは一時停止され、電力消費を抑える必要があります。

システム UI 要件

DSM をサポートするには、OEM は次の要件を満たして、システム UI を設計する必要があります。

  • UI ラベルには ARC または Audio Return Channel(ARC)への参照を含める必要があります。
  • UI はユーザーに通知して、デバイスをテレビの ARC ポートに接続し、ARC 接続を確立する必要があります。
  • UI は別のサウンドバーまたはオーディオ ビデオ レシーバー(AVR)が HDMI ネットワークに接続されている場合、この機能が想定どおり機能しない可能性があることをユーザーに通知する必要があります。
  • UI は設定を切り替えるときに画面がちらつく可能性があることをユーザーに通知する必要があります。
  • デバイスにスピーカーが搭載されていない場合、DSM はデフォルトで無効にする必要があります。

ベスト プラクティス: SysUI 実装で示しているとおり、ユーザー設定は [ディスプレイと音] メニューに配置して、ARC の有効化と無効化ができるようにすることをおすすめします。

フレームワーク実装

CEC サウンドバー機能の実装と論理アドレス 5 の動的割り当ては Android フレームワークに含まれています。サウンドバー設定が有効になると、フレームワークは論理アドレスを割り当て、デバイスのサウンドバーが動的になります。サウンドバー設定が無効になると、フレームワークは論理アドレスの割り当てを解除します。

システム UI でのユーザー入力に基づき、HdmiControlManagerCEC_SETTING_NAME_SOUNDBAR_MODESOUNDBAR_MODE_ENABLED または SOUNDBAR_MODE_DISABLED に設定します。CEC_SETTING_NAME_SOUNDBAR_MODE のデフォルト値は SOUNDBAR_MODE_DISABLED に設定されています。

HdmiControlServiceCEC_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.xmlconfig_cecSoundbarModeEnabled_defaultconfig_cecSoundbarModeDisabled_default の RPO 値は変更せず、機能がデフォルトで無効のままとなるようにします。

  4. デバイスにスピーカーが搭載されているか、スピーカーに接続されており、音を再生でき、オーディオ ポリシー構成を編集できることを確認します。

  5. システム プロパティの persist.sys.hdmi.property_arc_supporttrue に設定し、ARC がサポートされていることを示します。

  6. 設定を公開して、システム UI のサウンドバー モードを切り替えます。

デバッグのために、次の adb コマンドを使用して、サウンドバー機能をオンまたはオフにします(オンの場合は 1、オフの場合は 0 にします)。

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

SysUI 実装

このセクションでは DSM の切り替えで推奨されるモックの UI フローについて説明します。図 1 で示すとおり、[オーディオ出力] 設定は [ディスプレイと音] メニューの下にあります。

dsm_audio_output

図 1. [ディスプレイと音] メニューの下にあるオーディオ出力設定

DSM が機能するためには、[HDMI-CEC を有効にする] 設定をオンに切り替える必要があります。[ARC] 設定は HDMI-CEC が有効な場合にのみ、有効にできます。図 2 で示すとおり、HDMI-CEC が無効の場合、[ARC] 設定はグレー表示され、無効となります。次の 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] 設定が有効で、論理アドレス 5 が ARC ポート以外に接続されたデバイスで使用されており、他のオーディオ システムが ARC ポートに接続されている場合:
    • 2 つ目のデバイスは未登録の論理アドレスを使用しているため、テレビとの ARC 接続は確立されない。
  • [ARC] 設定が有効で、デバイスはホットプラグ接続されている場合:
    • デバイスは設定が有効な場合と同様に正常な動作をする。

CTS 検証

サウンドバー設定が無効な場合、CtsHdmiCecHostTestCases に合格する必要があります。CtsHdmiCecHostTestCases テストスイートの HdmiCecSoundbarModeTest.java テストは、DSM 機能をテストします。

認証は必須ではありませんが、サウンドバー設定を有効にして CtsHdmiCecHostTestCases を実行し、実装を検証します。

HDMI CECS の Android CTS テスト実行については、Android TV デバイスの CEC CTS テストをご覧ください。