A interface multimídia de alta definição de controle de eletrônicos de consumo (HDMI-CEC) permite que produtos de consumo mulitmedia se comuniquem e e trocam informações entre si. O HDMI-CEC oferece suporte a muitos recursos, como transmissão de controle remoto e controle de áudio do sistema, mas um dos mais populares é o One Touch Play. Com o One Touch Play, um dispositivo de fonte de mídia pode ligar a TV e alternar automaticamente a porta de entrada para não precisar procurar pela TV. controle remoto para trocar do Chromecast para o Blu-ray player.
Com o Android 12, o controle de energia da tela conectada por HDMI é alinhado ao controle de energia da tela interna. Quando um dispositivo de reprodução HDMI é ativado, ele tenta para ativar a smart TV e se tornar a fonte ativa no momento pela reprodução com um toque do HDMI CEC. Se o dispositivo entrar em suspensão enquanto for a fonte ativa, ele tentará desligar a TV conectada.
O suporte a HDMI-CEC geralmente é opcional. No entanto, a maioria dos fabricantes adotou o HDMI-CEC para que os dispositivos funcionem com os de outras empresas. Cada fabricante implementa o padrão HDMI-CEC de maneiras diferentes. Por isso, os dispositivos nem sempre se entendem e os recursos com suporte variam entre eles. Por causa dessa variação, os consumidores não podem presumem que dois produtos que alegam suporte ao CEC são totalmente compatíveis.
O suporte a HDMI-CEC 2.0 ajuda a melhorar a compatibilidade entre dispositivos HDMI se o dispositivo de envio e o de recebimento forem compatíveis com essa versão do padrão.
Solução
Com o lançamento do Android TV Input Framework (TIF), o HDMI-CEC
reúne todos os dispositivos conectados e minimiza os problemas de compatibilidade.
O Android criou um serviço do sistema chamado HdmiControlService
para
e aliviar esses aspectos problemáticos.
Ao oferecer HdmiControlService
como parte do ecossistema
Android, o Android espera oferecer:
- Uma implementação padrão do HDMI-CEC para todos os fabricantes, o que reduz a incompatibilidade de dispositivos. Antes, os fabricantes precisavam desenvolver as próprias implementações de HDMI-CEC ou usam soluções de terceiros.
- um serviço que já foi bem testado em vários dispositivos HDMI-CEC no mercado. O Android tem conduzido pesquisas rigorosas sobre compatibilidade problemas encontrados entre os produtos e coletar conselhos úteis de dispositivos desenvolvedores experientes na tecnologia. O serviço CEC foi projetado para manter um equilíbrio saudável entre o padrão e as modificações desse padrão para que que ele funciona com os produtos que as pessoas já usam.
Design em geral
O HdmiControlService
está conectado ao restante do sistema da seguinte forma:
TV Input Framework (TIF), serviço de áudio e serviço de energia para implementar a
vários recursos especificados pelo padrão.
Consulte o diagrama a seguir para conferir uma representação da mudança de um controlador CEC personalizado para uma implementação da camada de abstração de hardware HDMI-CEC mais simples (HAL).

Figura 1. Serviço de controle HDMI aparelho de substituição
Implementação
Consulte o diagrama a seguir para conferir uma visão detalhada do serviço de controle HDMI.

Figura 2. Detalhes do serviço de controle HDMI
Estes são os principais ingredientes para uma implementação adequada de HDMI-CEC para Android:
- Uma classe de gerenciador
HdmiControlManager
fornece apps privilegiados com a API. Serviços do sistema, como o serviço de gerenciamento de entrada de TV e o serviço de áudio, podem usar o serviço diretamente. - O serviço foi projetado para permitir a hospedagem de mais de um tipo de dispositivo.
- O HDMI-CEC é conectado ao hardware por uma camada de abstração de hardware (HAL) para simplificar o processamento de diferenças do protocolo e dos mecanismos de sinalização entre os dispositivos. A definição de HAL está disponível para fabricantes de dispositivos usar para implementar a camada HAL.
Observação: os fabricantes de dispositivos precisam adicionar o
linha seguinte para PRODUCT_COPY_FILES
em device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
O dispositivo precisa ser de coletor ou fonte HDMI,
os fabricantes de dispositivos precisam definir ro.hdmi.device_type
device.mk
para que o HdmiControlService
funcione corretamente.
Para dispositivos de origem HDMI, como over-the-top (OTT) ou conversor (STB), defina:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
Para dispositivos de sink HDMI, como TVs de painel, defina:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- Um controlador CEC proprietário fornecido pelo fabricante do dispositivo não pode coexistir
com
HdmiControlService
. Ele precisa ser desativado ou removido. Comum requisitos para isso vêm da necessidade de lidar com configurações específicas do fabricante, comandos O gerenciador de comandos específico do fabricante deve ser incorporado ao o serviço estendendo-o/modificando-o. Este trabalho é deixado para o dispositivo fabricante e não seja especificado pelo Android. Qualquer mudança feita no serviço para comandos específicos do fabricante não pode interferir na forma como os comandos padrão são processados, ou o dispositivo não será compatível com o Android. - O acesso ao serviço HDMI-CEC é protegido com o nível de proteção
SignatureOrSystem
. Somente os componentes do sistema ou os apps colocados em/system/priv-app
podem acessar o serviço. Isso é feito para proteger contra abuso por apps com intenção maliciosa.
O Android oferece suporte ao tipo TV/Display(0)
, Playback
device(4)
, que pode emitir o comando "One Touch Play" para se tornar o ativo
e Audio System (5)
, que processa o modo de áudio do sistema e o ARC.
Outros tipos de dispositivos (sintonizador e gravador) não são compatíveis no momento.
HAL do HDMI-CEC
A API HAL HDMI-CEC permite que o HdmiControlService
use o
recurso de hardware para enviar/receber comandos HDMI-CEC, configurar as configurações necessárias
e (opcionalmente) se comunicar com o microprocessador na plataforma que
vai assumir o controle CEC enquanto o sistema Android estiver no modo de espera.
Versão | Recursos | Arquivos HAL |
---|---|---|
1.0 | Configure os dados da HAL (endereços, recursos). Enviar comandos HDMI-CEC. Registre o callback para receber comandos HDMI-CEC e eventos de hotplug. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | Apresentação dos tipos de HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
Teste
As implementações de dispositivos HDMI-CEC são testadas e verificadas por testes CTS de acordo com a Documentação do HDMI-CEC CTS.
HDMI-CEC 2.0
Os dispositivos Android de origem (reprodução) e coletor (painel de TV) oferecem suporte a HDMI-CEC 2.0. HDMI-CEC 2.0 oferece melhor interoperabilidade entre dispositivos HDMI melhorias na passagem de controle remoto e testes de certificação mais abrangentes. Em geral, as interações do HDMI-CEC 2.0 com outros dispositivos são mais eficientes, resultando em menos tráfego do HDMI-CEC e interações mais rápidas.
Para que um dispositivo seja compatível com HDMI-CEC 2.0, o dispositivo e a configuração do usuário precisam ser
configurado para usar HDMI-CEC 2.0. A implementação da HAL também precisa relatar a compatibilidade com HDMI-CEC 2.0
em chamadas para IHdmiCec#getCecVersion
.
Configuração do CEC
O comportamento HDMI-CEC pode ser configurado no tempo de build (por OEMs que usam RROs) e no tempo de execução
(por HdmiControlManager
@SystemApi).
Exemplos de configurações do HDMI-CEC:
Configuração | Opção |
---|---|
Se o HDMI-CEC está ativado ou desativado. | Ativado Desativadas |
Escopo das mensagens de controle de energia do HDMI-CEC enviadas por um dispositivo de reprodução. | Para TV somente Para TV e sistema de áudio Transmissão Nenhuma |
Para cada configuração disponível e permitida, as opções podem ser consultadas por apps no momento da execução.