Modo de barra de sonido dinámica

Gracias a la compatibilidad con el framework de Android 14, los OEMs pueden configurar decodificadores (STB) y dispositivos de transmisión libre (OTT) con bocinas integradas o conectadas para que funcionen como barras de sonido para dispositivos conectados. El modo de barra de sonido dinámico (DSM) en Android 14 admite los atributos de control de productos electrónicos de consumo (CEC) de HDMI para barras de sonido, como el canal de retorno de audio (ARC) y el control de audio del sistema.

Esta función solo se orienta a dispositivos de reproducción CEC de Android TV.

Requisitos

Para adoptar la función de barra de sonido, los OEMs deben cumplir con los requisitos del dispositivo y de la IU del sistema que se indican en esta sección.

Requisitos del dispositivo

Para admitir DSM, el STB o el dispositivo OTT deben cumplir con los siguientes requisitos:

  • El dispositivo debe ejecutar Android 14.
  • Cuando DSM está habilitado, el dispositivo debe comportarse como una barra de sonido según las especificaciones HDMI CEC, como ARC.
  • El dispositivo debe poder reproducir sonido en las bocinas integradas o conectadas.
  • Cuando el dispositivo no es una fuente activa, todo el contenido multimedia se debe pausar en él, lo que limita su consumo de energía.

Requisitos de la IU del sistema

Para admitir DSM, los OEMs deben cumplir con los siguientes requisitos cuando diseñen la IU del sistema:

  • La etiqueta de la IU debe incluir una referencia a ARC o al canal de retorno de audio (ARC).
  • La IU debe informar al usuario que conecte el dispositivo al puerto ARC de la TV para establecer la conexión ARC.
  • La IU debe informar al usuario que la función podría no funcionar como se espera si otra barra de sonido o receptor de audio y video (AVR) está conectado a la red HDMI.
  • La IU debe informar al usuario que la pantalla podría parpadear cuando se active el parámetro de configuración.
  • Si el dispositivo no tiene bocinas integradas, DSM debe estar inhabilitado de forma predeterminada.

Como práctica recomendada, sugerimos usar el menú Pantalla y sonido como la ubicación para la configuración del usuario a fin de habilitar o inhabilitar ARC, como se muestra en Implementación de SysUI.

Implementación del framework

La implementación de la funcionalidad de la barra de sonido de CEC y la asignación dinámica de la dirección lógica 5 existen en el framework de Android. El framework asigna la dirección lógica cuando se habilita la configuración de la barra de sonido para que el dispositivo se convierta en una barra de sonido de forma dinámica. Cuando se inhabilita la configuración de la barra de sonido, el framework desaloca la dirección lógica.

Según la entrada del usuario en la IU del sistema, HdmiControlManager configura CEC_SETTING_NAME_SOUNDBAR_MODE en SOUNDBAR_MODE_ENABLED o SOUNDBAR_MODE_DISABLED. El valor predeterminado de CEC_SETTING_NAME_SOUNDBAR_MODE se establece en SOUNDBAR_MODE_DISABLED.

HdmiControlService escucha el cambio en la configuración de CEC_SETTING_NAME_SOUNDBAR_MODE para hacer lo siguiente:

  • Valida si existe un dispositivo de reproducción local y si se admite la propiedad ARC.
  • Activa la asignación de direcciones lógicas para agregar o quitar el dispositivo de audio local.
  • Asegúrate de que se conserve el estado de la configuración si el dispositivo se conecta y desconecta.

Consulta la siguiente muestra de declaraciones para configurar y obtener el estado del modo de barra de sonido:

    /**
     * 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() {}

Implementación de OEM

Para admitir la función de barra de sonido dinámica, los OEMs deben asegurarse de que el hardware la admita. Los OEM deben configurar el dispositivo y, luego, implementar la IU del sistema para proporcionar la interfaz requerida para las entradas del usuario.

Implementación de dispositivos

Para admitir la función de barra de sonido en un dispositivo, haz lo siguiente:

  1. Muestra el dispositivo de reproducción en Android 14.
  2. Implementa el puerto HDMI ARC en el controlador.
  3. No cambies los valores de RRO de config_cecSoundbarModeEnabled_default y config_cecSoundbarModeDisabled_default en config.xml para que la función permanezca inhabilitada de forma predeterminada.

  4. Asegúrate de que el dispositivo tenga bocinas integradas o conectadas para reproducir el audio y edita la configuración de la política de audio.

  5. Establece la propiedad del sistema persist.sys.hdmi.property_arc_support en true para indicar que se admite ARC.

  6. Expón la configuración para activar o desactivar el modo de la barra de sonido en la IU del sistema.

  7. Para la depuración, usa el siguiente comando adb a fin de activar o desactivar la función de la barra de sonido (1 para activar y 0 para desactivar):

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

Implementación de SysUI

En esta sección, se describe un flujo de IU simulado recomendado para activar y desactivar el DSM. La configuración de Audio output se encuentra en el menú Display & Sound, como se muestra en la Figura 1:

dsm_audio_output

Figura 1: Configuración de salida de audio en el menú Pantalla y sonido

Para que DSM funcione, la opción Enable HDMI-CEC debe estar activada. El parámetro de configuración ARC solo se puede habilitar si está habilitado HDMI-CEC. El parámetro de configuración ARC no está disponible y está inhabilitado si HDMI-CEC está inhabilitado, como se muestra en la Figura 2. En el siguiente flujo de IU, cuando el usuario desactiva el parámetro de configuración Habilitar HDMI-CEC en el menú Pantalla y sonido y selecciona Bocina doméstica, se inhabilita el parámetro de configuración ARC. El usuario puede habilitar el parámetro de configuración Reproducir audio de la televisión si habilita Habilitar HDMI-CEC.

dsm_ui_disable_arc

Figura 2: IU para la opción de ARC inhabilitada

Cuando el parámetro de configuración HDMI-CEC está habilitado, el usuario puede usar el parámetro de configuración ARC en Audio output para encender y apagar el DSM. Para encender el DSM, el usuario sigue el flujo de la IU que se muestra en la Figura 3. En el siguiente flujo de IU, para habilitar el modo de barra de sonido, el usuario selecciona Home Speaker y selecciona y confirma la configuración de ARC. Para desactivar DSM, el usuario desactiva el parámetro de configuración ARC.

dsm_ui_enable_arc

Figura 3: IU para habilitar DSM

Validación

Los OEM pueden realizar una prueba de audio para asegurarse de que las bocinas del dispositivo de reproducción reproduzcan sonido que se origine en la TV o en otros dispositivos conectados a la TV.

Validación manual

Usa las siguientes situaciones para validar de forma manual el comportamiento esperado:

  • Si se habilita la configuración de ARC:
    • La TV se silencia.
    • El sonido de la TV se envía a las bocinas del dispositivo.
  • El parámetro de configuración ARC está inhabilitado:
    • La TV deja de enrutar el audio al dispositivo.
    • La TV comenzará a reproducir audio.
  • El parámetro de configuración ARC está habilitado y el dispositivo está conectado a un puerto que no es de ARC a la TV:
    • El dispositivo no reproduce el sonido de la TV.
  • El parámetro de configuración ARC está habilitado y otro dispositivo está usando la dirección lógica 5 antes de que el dispositivo se conecte:
    • El dispositivo se comporta como un dispositivo de reproducción pura, no como una barra de sonido.
  • El parámetro de configuración de ARC está habilitado, el dispositivo usa la dirección lógica 5 y hay otro sistema de audio conectado a la red:
    • No hay cambios en el comportamiento de la barra de sonido del dispositivo.
  • El parámetro de configuración ARC está habilitado, el dispositivo conectado a un puerto que no es ARC está usando la dirección lógica 5 y otro sistema de audio está conectado al puerto ARC:
    • La conexión ARC no se establece con la TV para el segundo sistema de audio porque usa una dirección lógica no registrada.
  • La configuración de ARC está habilitada y el dispositivo se conecta y desconecta:
    • El dispositivo sigue el comportamiento normal como cuando el parámetro de configuración está habilitado.

Validación de CTS

Se requiere CtsHdmiCecHostTestCases para aprobar cuando la configuración de la barra de sonido está inhabilitada. La prueba HdmiCecSoundbarModeTest.java en el paquete de pruebas CtsHdmiCecHostTestCases prueba las funciones de DSM.

Aunque no es un requisito de certificación, ejecuta CtsHdmiCecHostTestCases con la configuración de la barra de sonido habilitada para validar tu implementación.

Consulta Pruebas de CTS de CEC para dispositivos Android TV para ejecutar las pruebas de CTS de Android para HDMI-CEC.