Modo soundbar dinâmico

Com o suporte do framework do Android 14, os OEMs podem configurar conversores (STBs) e dispositivos over-the-top (OTT) com alto-falantes integrados ou conectados como soundbars para dispositivos conectados. O modo de soundbar dinâmico (DSM) no Android 14 oferece suporte aos atributos de controle de eletrônicos de consumo (CEC) HDMI para soundbars, como canal de retorno de áudio (ARC) e controle de áudio do sistema.

Esse recurso é destinado apenas a dispositivos de reprodução CEC do Android TV.

Requisitos

Para adotar o recurso de soundbar, os OEMs precisam atender aos requisitos de dispositivo e interface do sistema listados nesta seção.

Requisitos do dispositivo

Para oferecer suporte ao DSM, o dispositivo STB ou OTT deve atender aos seguintes requisitos:

  • O dispositivo precisa ter o Android 14.
  • Quando o DSM está ativado, o dispositivo precisa se comportar como uma barra de som seguindo as especificações do HDMI CEC, como ARC.
  • O dispositivo precisa ser capaz de reproduzir som em alto-falantes integrados ou conectados.
  • Quando o dispositivo não é uma fonte ativa, toda a mídia precisa ser pausada nele, limitando o consumo de energia.

Requisitos da interface do sistema

Para oferecer suporte ao DSM, os OEMs precisam atender aos seguintes requisitos ao projetar a interface do sistema:

  • O rótulo da interface precisa incluir uma referência a ARC ou canal de retorno de áudio (ARC).
  • A interface precisa informar ao usuário para conectar o dispositivo à porta ARC da TV para estabelecer a conexão ARC.
  • A interface precisa informar ao usuário que o recurso pode não funcionar como esperado se outra barra de som ou outro receptor de áudio e vídeo (AVR) estiver conectado na rede HDMI.
  • A interface precisa informar ao usuário que a tela pode piscar ao alternar a configuração.
  • Se o dispositivo não tiver alto-falantes integrados, o DSM deverá estar desativado por padrão.

Como prática recomendada, recomendamos usar o menu Display & Sound como o local da configuração do usuário para ativar ou desativar o ARC, conforme mostrado na implementação do SysUI.

Implementação do framework

A implementação da funcionalidade da barra de som CEC e a alocação dinâmica do endereço lógico 5 estão presentes no framework do Android. O framework aloca o endereço lógico quando a configuração da soundbar está ativada, para que o dispositivo se torne uma soundbar dinamicamente. Quando a configuração da barra de som está desativada, o framework libera o endereço lógico.

Com base na entrada do usuário na IU do sistema, HdmiControlManager define CEC_SETTING_NAME_SOUNDBAR_MODE como SOUNDBAR_MODE_ENABLED ou SOUNDBAR_MODE_DISABLED. O valor padrão de CEC_SETTING_NAME_SOUNDBAR_MODE é definido como SOUNDBAR_MODE_DISABLED.

HdmiControlService detecta a mudança na configuração CEC_SETTING_NAME_SOUNDBAR_MODE para fazer o seguinte:

  • Valide se um dispositivo de reprodução local existe e se a propriedade ARC é compatível.
  • Acione a alocação de endereço lógico para adicionar ou remover o dispositivo de áudio local.
  • O estado da configuração precisa ser preservado se o dispositivo for conectado e desconectado.

Confira o exemplo de declarações a seguir para definir e receber o status do modo da barra de som:

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

Implementação de OEM

Para oferecer suporte ao recurso de soundbar dinâmico, os OEMs precisam garantir que o hardware seja compatível. Os OEMs precisam configurar o dispositivo e implementar a interface do sistema para fornecer a interface necessária para entradas do usuário.

Implementação do dispositivo

Para oferecer suporte ao recurso soundbar em um dispositivo:

  1. Ative o dispositivo de reprodução no Android 14.
  2. Implemente a porta HDMI ARC no driver.
  3. Deixe os valores de RRO de config_cecSoundbarModeEnabled_default e config_cecSoundbarModeDisabled_default inalterados em config.xml para que o recurso continue desativado por padrão.

  4. Verifique se o dispositivo tem alto-falantes integrados ou conectados para reproduzir o áudio e edite a configuração da política de áudio.

  5. Defina a propriedade do sistema persist.sys.hdmi.property_arc_support como true para indicar que o ARC tem suporte.

  6. Expor a configuração para alternar o modo da barra de som na interface do sistema.

  7. Para depuração, use o seguinte comando adb para ativar ou desativar o recurso soundbar (1 para ativar e 0 para desativar):

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

Implementação do SysUI

Esta seção descreve um fluxo de interface simulado recomendado para ativar e desativar o DSM. A configuração Saída de áudio está no menu Tela e som, conforme mostrado na Figura 1:

dsm_audio_output

Figura 1. Configuração de saída de áudio no menu "Tela e som".

Para que o DSM funcione, a configuração Ativar HDMI-CEC precisa estar ativada. A configuração ARC só pode ser ativada se o HDMI-CEC estiver ativado. A configuração ARC ficará indisponível e desativada se HDMI-CEC estiver desativado, como mostrado na Figura 2. No fluxo de interface a seguir, quando o usuário desativa a configuração Ativar HDMI-CEC no menu Tela e som e seleciona Alto-falante doméstico, a configuração ARC é desativada. O usuário pode ativar a configuração Play television audio ativando Enable HDMI-CEC.

kubectl_ui_disable_arc

Figura 2. Interface da opção ARC desativada.

Quando a configuração de HDMI-CEC está ativada, o usuário pode usar a configuração ARC em Saída de áudio para ativar e desativar o DSM. Para ativá-lo, o usuário segue o fluxo da interface na figura 3. No fluxo de interface a seguir, para ativar o modo de barra de som, o usuário seleciona Alto-falante doméstico, seleciona e confirma a configuração ARC. Para desativar o DSM, o usuário desativa a configuração ARC.

dsm_ui_enable_arc

Figura 3. Interface para ativar o DSM.

Validação

Os OEMs podem realizar um teste de áudio para garantir que os alto-falantes do dispositivo de reprodução toquem o som originado da TV ou de outros dispositivos conectados ao painel da TV.

Validação manual

Use os seguintes cenários para validar manualmente o comportamento esperado:

  • A configuração ARC está ativada:
    • O som da TV é desativado automaticamente.
    • O som da TV é encaminhado para os alto-falantes do dispositivo.
  • A configuração ARC está desativada:
    • A TV para de rotear o áudio para o dispositivo.
    • A TV começa a tocar áudio.
  • A configuração ARC será ativada e o dispositivo será conectado a uma porta não ARC para a TV:
    • O dispositivo não reproduz o som da TV.
  • A configuração ARC está ativada e o endereço lógico 5 está em uso por outro dispositivo antes que ele seja conectado:
    • O dispositivo se comporta como um dispositivo de reprodução puro, não como uma barra de som.
  • A configuração do ARC está ativada, o endereço lógico 5 está em uso pelo dispositivo e outro sistema de áudio está conectado na rede:
    • O comportamento da barra de som do dispositivo não mudou.
  • A configuração ARC está ativada, o endereço lógico 5 está em uso pelo dispositivo conectado a uma porta que não é ARC, e outro sistema de áudio está conectado à porta ARC:
    • A conexão ARC não é estabelecida com a TV para o segundo sistema de áudio porque usa um endereço lógico não registrado.
  • A configuração ARC está ativada e o dispositivo está conectado:
    • O dispositivo segue o comportamento normal quando a configuração está ativada.

Validação do CTS

CtsHdmiCecHostTestCases é necessário para passar quando a configuração da barra de som está desativada. O teste HdmiCecSoundbarModeTest.java no pacote de testes CtsHdmiCecHostTestCases testa as funcionalidades do DSM.

Embora não seja um requisito de certificação, execute CtsHdmiCecHostTestCases com a configuração da barra de som ativada para validar sua implementação.

Consulte Testes do CTS do CEC para dispositivos Android TV para executar os testes do CTS do Android para CEC HDMI.