동적 사운드바 모드

Android 14 프레임워크 지원을 사용하면 스피커가 내장되어 있거나 연결되어 있는 셋톱 박스(STB)와 오버더톱(OTT) 기기를 연결된 기기의 사운드바로 구성할 수 있습니다. Android 14의 동적 사운드바 모드(DSM)는 ARC(Audio Return Channel) 및 시스템 오디오 제어와 같은 사운드바의 HDMI CEC(Consumer Electronics Control) 속성을 지원합니다.

이 기능은 Android TV CEC 재생 기기만 타겟팅합니다.

요구사항

사운드바 기능을 채택하려면 OEM은 이 섹션에 나열된 기기 및 시스템 UI 요구사항을 충족해야 합니다.

기기 요구사항

DSM을 지원하려면 STB/OTT 기기에서 다음 요구사항을 충족해야 합니다.

  • 기기에서 Android 14를 실행해야 합니다.
  • DSM이 사용 설정되면 기기는 ARC와 같은 HDMI CEC 사양에 따라 사운드바처럼 동작해야 합니다.
  • 기기는 내장 스피커나 연결된 스피커에서 사운드를 재생할 수 있어야 합니다.
  • 기기가 활성 소스가 아닌 경우 모든 미디어를 기기에서 일시중지하여 전력 소비를 제한해야 합니다.

시스템 UI 요구사항

DSM을 지원하려면 OEM은 시스템 UI를 설계하는 동안 다음 요구사항을 충족해야 합니다.

  • UI 라벨에는 ARC 참조나 ARC(Audio Return Channel)가 포함되어야 합니다.
  • UI는 사용자에게 기기를 TV의 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로 설정됩니다.

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_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가 사용 설정된 경우에만 사용 설정할 수 있습니다. ARC 설정은 HDMI-CEC가 그림 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은 오디오 테스트를 실행하여 재생 기기의 스피커가 TV에서 나오거나 TV 패널에 연결된 다른 기기에서 나오는 사운드를 재생하는지 확인할 수 있습니다.

수동 유효성 검사

다음 시나리오를 사용하여 예상 동작의 유효성을 수동으로 검사하세요.

  • ARC 설정이 사용 설정됩니다.
    • TV가 저절로 음소거됩니다.
    • TV 사운드가 기기의 스피커로 라우팅됩니다.
  • ARC 설정이 사용 중지됩니다.
    • TV에서 기기로의 오디오 라우팅을 중지합니다.
    • TV에서 오디오 재생을 시작합니다.
  • ARC 설정이 사용 설정되고 기기가 TV의 ARC가 아닌 포트에 연결됩니다.
    • 기기에서 TV의 사운드를 재생하지 않습니다.
  • 기기가 연결되기 전에 ARC 설정이 사용 설정되고 논리 주소 5가 다른 기기에서 사용 중입니다.
    • 기기가 사운드바가 아닌 순수 재생 기기처럼 동작합니다.
  • ARC 설정이 사용 설정되고 논리 주소 5를 기기에서 사용 중이며 다른 오디오 시스템이 네트워크에서 연결되어 있습니다.
    • 기기의 사운드바 동작에 변경사항이 없습니다.
  • ARC 설정이 사용 설정되고 논리 주소 5를 ARC가 아닌 포트에 연결된 기기에서 사용 중이며 다른 오디오 시스템이 ARC 포트에 연결되어 있습니다.
    • ARC 연결이 TV에서 두 번째 오디오 시스템용으로 설정되지 않습니다. 등록되지 않은 논리 주소를 사용하기 때문입니다.
  • ARC 설정이 사용 설정되고 기기가 핫플러그됩니다.
    • 기기가 설정이 사용 설정될 때처럼 일반 동작을 따릅니다.

CTS 유효성 검사

CtsHdmiCecHostTestCases는 사운드바 설정이 사용 중지될 때 통과하는 데 필요합니다. CtsHdmiCecHostTestCases 테스트 모음의 HdmiCecSoundbarModeTest.java 테스트는 DSM 기능을 테스트합니다.

인증 요구사항은 아니지만 사운드바 설정을 사용 설정한 상태에서 CtsHdmiCecHostTestCases를 실행하여 구현을 검증합니다.

HDMI CEC용 Android CTS 테스트를 실행하려면 Android TV 기기용 CEC CTS 테스트를 참고하세요.