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 dinâmico de soundbar (DSM) no Android 14 é compatível com os 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 precisa atender aos seguintes requisitos:

  • O dispositivo precisa ter o Android 14.
  • Quando o DSM está ativado, o dispositivo precisa se comportar como uma soundbar seguindo as especificações HDMI CEC, como ARC.
  • O dispositivo precisa ser capaz de tocar 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 soundbar ou receptor audiovisual (AVR) estiver conectado à rede HDMI.
  • A interface precisa informar ao usuário que a tela pode piscar ao ativar/desativar a configuração.
  • Se o dispositivo não tiver alto-falantes integrados, o DSM precisará ser desativado por padrão.

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

Implementação do framework

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

Com base na entrada do usuário na interface 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.

O 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.
  • Aciona a alocação de endereço lógico para adicionar ou remover o dispositivo de áudio local.
  • Verifique se o estado da configuração é preservado se o dispositivo for conectado a quente.

Confira a amostra a seguir de declarações para definir e receber o status do modo de soundbar:

    /**
     * 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âmica, 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 de dispositivos

Para oferecer suporte ao recurso de soundbar em um dispositivo:

  1. Abra 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 permaneça 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 é compatível.

  6. Exponha a configuração para ativar/desativar o modo de soundbar na interface do sistema.

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

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

Implementação da 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 fica indisponível e desativada se o HDMI-CEC estiver desativado, conforme 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 Tocar áudio da televisão ao ativar Ativar HDMI-CEC.

dsm_ui_disable_arc

Figura 2. Interface para a opção ARC desativada.

Quando a configuração 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 ativar o DSM, o usuário segue o fluxo da interface do usuário na figura 3. No fluxo da interface a seguir, para ativar o modo de soundbar, o usuário seleciona Alto-falante doméstico e confirma a configuração ARC. Para desativar o DSM, o usuário desativa a configuração ARC.

dsm_ui_enable_arc

Figura 3. UI para ativar o DSM.

Validação

Os OEMs podem fazer 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 cenários a seguir para validar manualmente o comportamento esperado:

  • A configuração ARC está ativada:
    • A TV se silencia.
    • O som da TV é encaminhado para os alto-falantes do dispositivo.
  • A configuração ARC está desativada:
    • A TV para de encaminhar o áudio para o dispositivo.
    • A TV começa a tocar o áudio.
  • A configuração ARC está ativada e o dispositivo está conectado a uma porta não ARC da 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 da conexão:
    • O dispositivo se comporta como um dispositivo de reprodução pura, não como uma soundbar.
  • 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 à rede:
    • Não há mudanças no comportamento da soundbar do dispositivo.
  • A configuração ARC está ativada, o endereço lógico 5 está sendo usado pelo dispositivo conectado a uma porta 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 ele usa um endereço lógico não registrado.
  • A configuração ARC está ativada, e o dispositivo é conectado a quente:
    • O dispositivo segue o comportamento normal, como quando a configuração está ativada.

Validação do CTS

CtsHdmiCecHostTestCases é obrigatório quando a configuração da soundbar 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 soundbar ativada para validar sua implementação.

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