
O Android TV Input Framework (TIF) simplifica a entrega de conteúdo ao vivo para a Android TV. O Android TIF fornece uma API padrão para os fabricantes criarem módulos de entrada para controlar a Android TV e permite a pesquisa e recomendações de TV ao vivo por meio de metadados publicados pela TV Input.
A estrutura não visa implementar padrões de TV ou requisitos regionais, mas torna mais fácil para os fabricantes de dispositivos atender aos padrões regionais de transmissão de TV digital sem reimplementação. A documentação nesta seção também pode ser útil para desenvolvedores de aplicativos de terceiros que desejam criar entradas de TV personalizadas.
Componentes
A implementação do Android TV Input Framework inclui um TV Input Manager. O TIF funciona com o TV App, um aplicativo do sistema que não pode ser substituído por um aplicativo de terceiros, para acessar canais integrados e sintonizadores de IP. O TV App se comunica com os módulos de entrada de TV fornecidos pelo fabricante do dispositivo ou outras partes por meio do TV Input Manager.
O TV Input Framework consiste em:
- Provedor de TV (
com.android.providers.tv.TvProvider
): um banco de dados de canais, programas e permissões associadas - TV App (
com.android.tv.TvActivity
): o aplicativo que lida com a interação do usuário - TV Input Manager (
android.media.tv.TvInputManager
): permite que as entradas de TV se comuniquem com o aplicativo de TV - Entrada de TV: um aplicativo que representa sintonizadores físicos ou virtuais e portas de entrada
- TV Input HAL (módulo
tv_input
): uma definição de hardware que permite que as entradas de TV do sistema acessem o hardware específico da TV quando implementadas - Parental Control: a tecnologia para permitir o bloqueio de canais e programas
- HDMI-CEC: a tecnologia para permitir o controle remoto de vários dispositivos via HDMI
- Tuner Framework: uma estrutura para entrada de TV com sintonizador embutido
- MediaCas: um framework para acesso condicional
- Tuner Resource Manager: um serviço para gerenciar o recurso de hardware para entrada de TV, MediaCas e entrada de sintonizador integrado
Esses componentes são abordados em detalhes abaixo. Consulte o diagrama a seguir para obter uma visão detalhada da arquitetura do Android TV Input Framework.

Fluxo
Aqui está como a arquitetura é exercida:
- O usuário vê e interage com o TV App, um aplicativo do sistema que não pode ser substituído por um aplicativo de terceiros.
- O aplicativo de TV exibe o conteúdo AV da entrada de TV.
- O aplicativo de TV não pode falar diretamente com as entradas de TV. O TV Input Manager identifica o estado das entradas de TV para o aplicativo de TV. Consulte Gerenciador de entrada de TV abaixo para obter mais detalhes sobre essas limitações.
Permissões
- Somente entradas de TV
signatureOrSystem
e aplicativo de TV têm acesso total ao banco de dados do provedor de TV e podem receber eventos de chave. - Somente entradas de TV do sistema podem acessar o HAL de entrada de TV por meio do serviço Gerenciador de entrada de TV. As entradas de TV são acessadas individualmente por meio das sessões do Gerenciador de entrada de TV.
- Entradas de TV de terceiros têm acesso bloqueado por pacote ao banco de dados do provedor de TV e podem LER/GRAVAR apenas para linhas de pacote correspondentes.
- As entradas de TV de terceiros podem exibir seu próprio conteúdo ou o conteúdo das entradas de TV de passagem do fabricante do dispositivo, como HDMI1. Eles não podem exibir conteúdo de entradas de TV sem passagem, como um sintonizador de IPTV ou integrado.
- Permissão
TV_INPUT_HARDWARE
para um aplicativo de entrada de TV de hardware, sinaliza o TV Input Manager Service para notificar o serviço de entrada de TV na inicialização para chamar o TV Input Manager Service e adicionar suas entradas de TV. Essa permissão permite que um aplicativo de entrada de TV de hardware suporte várias entradas de TV por serviço de entrada de TV, além de poder adicionar e remover dinamicamente suas entradas de TV compatíveis.
Provedor de TV
O banco de dados do provedor de TV armazena os canais e programas das entradas de TV. O provedor de TV também publica e gerencia as permissões associadas para que as entradas de TV possam ver apenas seus próprios registros. Por exemplo, uma entrada de TV específica pode ver apenas os canais e programas que forneceu e está proibida de acessar quaisquer outros canais e programas de entradas de TV.
O provedor de TV mapeia "gênero de transmissão" para "gênero canônico" internamente. As entradas de TV são responsáveis por preencher o "gênero de transmissão" com o valor no padrão de transmissão subjacente, e o campo "gênero canônico" será preenchido automaticamente com o gênero associado correto de android.provider.TvContract.Genres
. Por exemplo, com padrão de transmissão ATSC A/65 e programa com gênero 0x25 (que significa “esportes”), a entrada de TV preencherá o “gênero de transmissão” com a string “esportes” e o provedor de TV preencherá o campo “gênero canônico” com o valor mapeado android.provider.TvContract.Genres.SPORTS
.
Veja o diagrama abaixo para uma visão detalhada do provedor de TV.

Somente aplicativos na partição privilegiada do sistema podem ler todo o banco de dados do provedor de TV.
As entradas de TV de passagem não armazenam canais e programas.
Além dos campos padrão para canais e programas, o banco de dados do TV Provider também oferece um campo do tipo BLOB, COLUMN_INTERNAL_PROVIDER_DATA
, em cada tabela que o TV Inputs pode usar para armazenar dados arbitrários. Esses dados BLOB podem incluir informações personalizadas, como frequência do sintonizador associado, e podem ser fornecidos em um buffer de protocolo ou outro formulário. Um campo Pesquisável está disponível para tornar determinados canais indisponíveis na pesquisa (como para atender aos requisitos específicos do país para proteção de conteúdo).
Exemplos de campo de banco de dados
O provedor de TV oferece suporte a dados estruturados em tabelas de canal ( android.provider.TvContract.Channels
) e programa ( android.provider.TvContract.Programs
). Essas tabelas são preenchidas e acessadas por entradas de TV e aplicativos do sistema, como o aplicativo de TV. Essas tabelas possuem quatro tipos de campos:
- Exibição: os campos de exibição contêm informações que os aplicativos podem querer tornar visíveis para o usuário, como o nome de um canal (
COLUMN_DISPLAY_NAME
) ou número (COLUMN_DISPLAY_NUMBER
) ou o título do programa que está sendo visualizado. - Metadados: Existem três campos para identificar o conteúdo, de acordo com os padrões relevantes, como ID do fluxo de transporte de um canal (
COLUMN_TRANSPORT_STREAM_ID
), ID da rede original (COLUMN_ORIGINAL_NETWORK_ID
) e ID do serviço (COLUMN_SERVICE_ID
). - Dados internos : Campos que são para uso personalizado de entradas de TV.
Alguns campos, comoCOLUMN_INTERNAL_PROVIDER_DATA
, são campos BLOB personalizáveis onde uma entrada de TV pode armazenar metadados arbitrários sobre seu canal ou programa. - Sinalizador: Os campos de sinalizador representam se um canal deve ser restrito para pesquisa, navegação ou visualização. Isso pode ser definido apenas no nível do canal. Todos os programas dependem da configuração do canal.
-
COLUMN_SEARCHABLE
: Restringir a pesquisa de alguns canais pode ser um requisito em certas regiões.COLUMN_SEARCHABLE = 0
significa que o canal não deve ser exposto nos resultados da pesquisa. -
COLUMN_BROWSABLE
: Visível apenas para aplicativos do sistema. Restringindo o canal de ser navegado por aplicativos.COLUMN_BROWSABLE = 0
significa que o canal não deve ser incluído na lista de canais. -
COLUMN_LOCKED
: Visível apenas para aplicativos do sistema. Restringindo a visualização do canal por contas inválidas sem inserir o código PIN.COLUMN_LOCKED = 1
significa que o canal deve ser protegido pelo controle dos pais.
Para obter uma lista mais exaustiva dos campos, consulte android/frameworks/base/media/java/android/media/tv/TvContract.java
Permissões e controle de acesso
Todos os campos são visíveis para qualquer pessoa com acesso à linha correspondente. Nenhum campo é diretamente acessível aos usuários; eles veem apenas o que o aplicativo de TV, os aplicativos do sistema ou as entradas de TV apresentam.
- Cada linha tem
PACKAGE_NAME
, o pacote (aplicativo) que possui essa linha, verificado em Consulta, Inserção, Atualização via TvProvider.java. Uma entrada de TV pode acessar apenas as informações que ela escreveu e é separada das informações fornecidas por outras entradas de TV. - LER, ESCREVER permissões via AndroidManifest.xml (requer o consentimento do usuário) para determinar os canais disponíveis.
- Somente aplicativos
signatureOrSystem
podem adquirir a permissãoACCESS_ALL_EPG_DATA
para acessar todo o banco de dados.
Gerenciador de entrada de TV
O TV Input Manager fornece uma API de sistema central para o Android TV Input Framework geral. Ele arbitra a interação entre aplicativos e entradas de TV e fornece funcionalidade de controle parental. As sessões do TV Input Manager devem ser criadas individualmente com as entradas de TV. O TV Input Manager permite acesso às entradas de TV instaladas para que os aplicativos possam:
- Listar entradas de TV e verificar seu status
- Criar sessões e gerenciar ouvintes
Para sessões, uma entrada de TV pode ser sintonizada pelo aplicativo de TV apenas para os URIs adicionados ao banco de dados do provedor de TV, exceto para entradas de TV de passagem que podem ser sintonizadas usando TvContract.buildChannelUriForPassthroughInput()
. Uma entrada de TV também pode ter seu volume definido. As entradas de TV fornecidas e assinadas pelo fabricante do dispositivo (aplicativos de assinatura) ou outros aplicativos instalados na partição do sistema terão acesso a todo o banco de dados do provedor de TV. Esse acesso pode ser usado para construir aplicativos para navegar e pesquisar em todos os canais e programas de TV disponíveis.
Um aplicativo pode criar e registrar um TvInputCallback
com o android.media.tv.TvInputManager
para ser chamado de volta na mudança de estado de uma entrada de TV ou na adição ou remoção de uma entrada de TV. Por exemplo, um aplicativo de TV pode reagir quando uma entrada de TV é desconectada exibindo-a como desconectada e impedindo sua seleção.
O TV Input Manager abstrai a comunicação entre o aplicativo de TV e as entradas de TV. A interface padrão do TV Input Manager e TV Input permite que vários fabricantes de dispositivos criem seus próprios aplicativos de TV, ajudando todas as entradas de TV de terceiros a funcionar em todos os aplicativos de TV.
Entradas de TV
Entradas de TV são aplicativos Android no sentido de que possuem um AndroidManifest.xml e são instalados (via Play, pré-instalados ou carregados lateralmente). A Android TV oferece suporte a aplicativos de sistema pré-instalados, aplicativos assinados pelo fabricante do dispositivo e entradas de TV de terceiros.
Algumas entradas, como a entrada HDMI ou a entrada do sintonizador integrado, podem ser fornecidas apenas pelo fabricante, pois falam diretamente com o hardware subjacente. Outros, como IPTV, place-shifting e STB externo, podem ser fornecidos por terceiros como APKs na Google Play Store. Depois de baixado e instalado, a nova entrada pode ser selecionada no aplicativo TV.
Exemplo de entrada de passagem

Neste exemplo, a entrada de TV fornecida pelo fabricante do dispositivo é confiável e tem acesso total ao provedor de TV. Como uma entrada de TV de passagem, não registra nenhum canal ou programa com o provedor de TV. Para obter o URI usado para fazer referência à entrada de passagem, use o método utilitário android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
. O TV App se comunica com o TV Input Manager para acessar a entrada HDMI da TV.
Exemplo de afinador integrado

Neste exemplo, a entrada de TV do sintonizador integrado fornecida pelo fabricante do dispositivo é confiável e tem acesso total ao provedor de TV.
Exemplo de entrada de terceiros

Neste exemplo, a entrada STB TV externa é fornecida por terceiros. Como essa entrada de TV não pode acessar diretamente a entrada de vídeo HDMI, ela deve passar pelo Gerenciador de entrada de TV e usar a entrada de TV HDMI fornecida pelo fabricante do dispositivo.
Através do Gerenciador de entrada de TV, a entrada de TV STB externa pode se comunicar com a entrada de TV HDMI e solicitar que mostre o vídeo em HDMI1. Assim, a entrada de TV STB pode controlar a TV enquanto a entrada de TV HDMI fornecida pelo fabricante renderiza o vídeo.
Exemplo de imagem em imagem (PIP)

O diagrama acima mostra como os botões em um controle remoto são passados para uma entrada de TV específica para exibição de imagem em imagem (PIP). Esses pressionamentos de botão são interpretados pelo driver de hardware fornecido pelo fabricante do dispositivo, convertendo scancodes de hardware em códigos-chave do Android e passando-os para as funções InputReader
e InputDispatcher
do pipeline de entrada padrão do Android como KeyEvents . Estes, por sua vez, acionam eventos no aplicativo de TV se ele estiver em foco.
Somente entradas de TV do sistema são elegíveis para receber InputEvents
e somente se tiverem a permissão de sistema RECEIVE_INPUT_EVENT
. A entrada de TV é responsável por determinar quais InputEvents consumir e deve permitir que o aplicativo de TV manipule as chaves que não precisa consumir.
O aplicativo de TV é responsável por saber qual entrada de TV do sistema está ativa, ou seja, selecionada pelo usuário, e por eliminar a ambiguidade dos KeyEvents
recebidos e encaminhá-los para a sessão correta do TV Input Manager, chamando dispatchInputEvent()
para passar o evento para a entrada de TV associada .
Exemplo de entrada MHEG-5
O diagrama a seguir mostra uma visão mais detalhada de como KeyEvents
são roteados por meio do Android TIF.

Ele retrata o fluxo de um aplicativo de botão vermelho, comum na Europa por permitir que os usuários acessem aplicativos interativos em suas televisões. Um aplicativo pode ser entregue por meio desse fluxo de transporte. Quando o botão é clicado, ele permite que os usuários interajam com esses aplicativos de transmissão. Por exemplo, você pode usar esses aplicativos de transmissão para acessar páginas da Web relacionadas ou placares esportivos.
Consulte a seção Aplicativo de transmissão para saber como os aplicativos de transmissão interagem com o aplicativo de TV.
Neste exemplo:
- O TV App está em foco e recebe todas as chaves.
-
KeyEvents
(por exemplo, o botão vermelho) é passado para a entrada de TV ativa comoInputEvents.
- A entrada de TV do sistema integra-se com a pilha MHEG-5 e tem a permissão de sistema
RECEIVE_INPUT_EVENT
. - Ao receber o código de ativação (por exemplo, botão vermelho), a entrada da TV ativa o aplicativo de transmissão.
- A entrada de TV consome
KeyEvents
comoInputEvents
e o aplicativo de transmissão é o foco e manipulaInputEvents
até ser descartado.
Observação : as entradas de TV de terceiros nunca recebem chaves.
Entrada de TV HAL
O HAL de entrada de TV ajuda no desenvolvimento de entradas de TV para acessar o hardware específico da TV. Como em outros HALs do Android, o TV Input HAL ( tv_input
) está disponível na árvore de origem AOSP e o fornecedor desenvolve sua implementação.
aplicativo de tv
O aplicativo de TV do sistema apresenta conteúdo de TV ao vivo para o usuário. Um aplicativo de TV de referência (Live TV) é fornecido juntamente com a plataforma Android, que pode ser usado como está, personalizado, estendido ou substituído pelos fabricantes de dispositivos. O código-fonte está disponível no Android Open Source Project e você pode começar a usá-lo no artigo do aplicativo Reference TV .
Os fabricantes de dispositivos podem estender seus aplicativos de TV para implementar o fabricante do dispositivo ou recursos específicos do país, no entanto, isso não está no escopo do TIF ou do aplicativo de TV de referência.
No mínimo, o aplicativo de TV do sistema precisa lidar com as seguintes tarefas:
Instalação e configuração
- Detecção automática de entradas de TV
- Deixe as entradas de TV iniciarem a configuração do canal
- Controlar as configurações dos pais
- Editar canais
Visualizando
- Acesse e navegue por todos os canais de TV
- Acessar a barra de informações do programa de TV
- Exibir dados do Guia de Programação Eletrônica (EPG)
- Suporta várias faixas de áudio e legendas
- Fornecer desafio de PIN de controle parental
- Permitir sobreposição de IU de entrada de TV para padrão de TV (HbbTV, etc.)
- Preencha os resultados da pesquisa para canais e programas de TV
- Exibir cartões de vinculação de aplicativos
- Suporte a APIs de timeshifting
- Lidar com a funcionalidade DVR e suportar APIs de gravação de TV
Esse conjunto de recursos aumentará de acordo com as novas versões do Android, nas quais as APIs TIF da plataforma são estendidas. O CTS Verifier fornece a cobertura do teste de compatibilidade.
Suporte para entradas de TV de terceiros
A Android TV fornece APIs de desenvolvedor para entradas de TV de terceiros, permitindo que aplicativos instalados forneçam canais de software na experiência de TV ao vivo. Para garantir uma implementação de dispositivo Android compatível, o aplicativo de TV do sistema tem algumas responsabilidades em relação à apresentação de entradas e canais de TV de terceiros para o usuário. O aplicativo de TV ao vivo de referência fornece uma implementação compatível; ao substituir o aplicativo de TV do sistema, os fabricantes de dispositivos devem garantir que seus próprios aplicativos ofereçam compatibilidade semelhante para atender às expectativas do desenvolvedor em todos os dispositivos Android TV.
O aplicativo de TV do sistema deve exibir entradas de terceiros juntamente com o serviço de TV ao vivo padrão do dispositivo. A promessa das APIs do desenvolvedor é que os usuários poderão encontrar canais (depois de instalados) em sua experiência de TV padrão.
A diferenciação visual entre canais integrados e canais de terceiros é permitida, conforme definido na seção Aplicativo de TV do CDD do Android.
As seções a seguir mostram como o aplicativo Live TV atende aos requisitos do CDD.
Nova configuração de canal
A adição de novas entradas/canais de terceiros começa com o usuário encontrando e instalando uma entrada de TV de uma loja de aplicativos, como o Google Play.
Algumas entradas de TV de terceiros adicionam canais automaticamente ao banco de dados TvProvider. No entanto, a maioria fornecerá uma atividade de configuração para permitir que o usuário configure seus canais, forneça detalhes de login e outras ações. O aplicativo de TV do sistema precisa garantir que o usuário possa ativar essa atividade de configuração, e é por isso que o CDD exige que entradas de terceiros sejam ações de navegação mínimas fora do aplicativo de TV principal.
O aplicativo de TV ao vivo de referência fornece o menu Channel Sources para acessar as entradas.




Além disso, um cartão de notificação é mostrado na parte superior do menu do aplicativo de TV após a instalação de um novo TvInput, para levar o usuário diretamente ao Setup:

Se o usuário realizar uma ação por meio da notificação, ele poderá optar por configurar suas fontes, conforme mostrado na Figura 10.
Consulte Defina seu serviço de entrada de TV para conhecer as expectativas do desenvolvedor nesta área.
Personalize a lista de canais
Os fabricantes de dispositivos podem fornecer uma interface do usuário para ocultar determinados canais e permitir que os usuários gerenciem seus próprios EPGs. A TV ao vivo inclui esta facilidade.


EPG
Os desenvolvedores de entrada de terceiros precisam ter certeza de que os usuários podem navegar facilmente para seus canais durante o uso geral, em todos os dispositivos Android TV compatíveis.
Canais de entradas de terceiros devem ser apresentados como parte do EPG de experiência de TV ao vivo padrão do dispositivo. Separação visual ou categorias separadas para canais de terceiros podem ser usadas (consulte a seção Aplicativo de TV do CDD do Android) — o importante é que os usuários possam encontrar os canais que instalaram.
Procurar
Os fabricantes devem implementar o aplicativo de TV para incluir resultados de pesquisa para solicitações de pesquisa global, a fim de garantir a melhor experiência do usuário. A TV ao vivo fornece uma implementação (veja qual fornece resultados de entradas de terceiros (necessárias para compatibilidade de plataforma), bem como entradas integradas.
mudança de tempo
Para dispositivos com Android 6.0 e superior, o aplicativo de TV deve ser compatível com as APIs de mudança de horário da estrutura do Android . Além disso, os fabricantes devem implementar controles de reprodução no aplicativo de TV, que permitem aos usuários pausar, retomar, retroceder e avançar rapidamente a reprodução.
Para entradas de TV que suportam time shifting, o aplicativo de TV precisa exibir os controles de reprodução.

DVR
Para dispositivos com Android 7.0 e superior, o aplicativo de TV deve ser compatível com as APIs de gravação de TV da estrutura do Android , para oferecer suporte, listar e reproduzir programas gravados.
Isso permite que os fabricantes de dispositivos conectem seus subsistemas DVR ao TIF e reduzam drasticamente o esforço de integração necessário para habilitar ou integrar a funcionalidade DVR em um dispositivo de TV. Ele também permite que terceiros forneçam sistemas DVR de reposição que podem ser conectados a um dispositivo Android TV.
Além de gravar conteúdo ao vivo, o TV App também lida com conflitos de recursos. Por exemplo, se o dispositivo tiver dois sintonizadores, pode gravar dois programas ao mesmo tempo. Se o usuário pedir para gravar três, o aplicativo de TV deve lidar com o conflito e exibir uma notificação ou solicitar que o usuário agende uma prioridade para essas solicitações.
Os aplicativos de TV também podem implementar uma lógica mais sofisticada, como perguntar a um usuário se ele deseja gravar todos os episódios futuros de uma série quando ele solicita a gravação de um episódio.
Consulte o diagrama a seguir para ver uma possível implementação de DVR na Android TV.

- O serviço de entrada de TV informa ao aplicativo de TV quantos sintonizadores estão disponíveis para que o aplicativo de TV possa lidar com possíveis conflitos de recursos.
- O aplicativo de TV recebe uma solicitação iniciada pelo usuário para gravar um programa de TV.
- O TV App armazena a programação de gravação em seu banco de dados interno.
- Na hora de gravar, o App de TV passa uma solicitação para sintonizar o canal associado à gravação.
- O Serviço de Entrada de TV recebe essa solicitação, responde se há recursos adequados ou não e sintoniza o canal.
- Em seguida, o TV App passa uma solicitação para iniciar a gravação para o TV Input Manager.
- O TV Input Service recebe esta solicitação e inicia a gravação.
- O TV Input Service armazena os dados de vídeo reais em seu armazenamento, que pode ser armazenamento externo ou armazenamento em nuvem.
- Quando é hora de terminar a gravação, o TV App passa a solicitação de parada de gravação para o TV Input Manager.
- Depois que o TV Input Service recebe a solicitação, ele interrompe a gravação e adiciona seus metadados associados ao provedor de TV para que o aplicativo de TV possa mostrar a gravação aos usuários quando solicitado.
Para obter mais informações sobre a implementação de recursos de gravação em seu serviço de entrada de TV, consulte este artigo de gravação de TV .
recursos úteis
- O CDD do Android e as APIs de desenvolvedor documentadas são as referências definitivas.
- O CTS Verifier exercita as APIs como parte do programa de teste de compatibilidade. Executar isso na TV ao vivo pode ser uma maneira útil de ver o EPG, a pesquisa, o controle dos pais e outros requisitos no contexto de entradas de terceiros.
- Consulte Defina seu serviço de entrada de TV para conhecer as expectativas do desenvolvedor nesta área.
Controle dos pais
O controle dos pais permite que um usuário bloqueie canais e programas indesejados, mas contorne o bloqueio inserindo um código PIN.
A responsabilidade pela funcionalidade de controle dos pais é compartilhada entre o aplicativo de TV, o serviço Gerenciador de entrada de TV, o provedor de TV e a entrada de TV.
O controle dos pais é obrigatório e é coberto pelo CTS Verifier.
Vários países definiram sistemas de classificação que as entradas de TV podem usar por meio da API TVContentRating . Além disso, as entradas de TV podem registrar seus próprios sistemas de classificação personalizados, conforme demonstrado pelo teste CTS Verifier, que introduz uma classificação 'falsa'. Para países onde existe um sistema de classificação padrão, os fabricantes de dispositivos são encorajados a combinar o controle dos pais da estrutura de entrada de TV com quaisquer outros mecanismos que possam incluir.
provedor de TV
Cada linha de canal tem um campo COLUMN_LOCKED
que é usado para impedir a exibição de canais específicos sem inserir um código PIN. O campo do programa COLUMN_CONTENT_RATING
destina-se à exibição e não é usado para impor o controle dos pais.
Gerenciador de entrada de TV
O TV Input Manager armazena cada TvContentRating
bloqueado e responde a isRatingBlocked()
para avisar se o conteúdo com a classificação fornecida deve ser bloqueado.
Entrada de TV
A entrada de TV verifica se o conteúdo atual deve ser bloqueado chamando isRatingBlocked()
no TV Input Manager quando a classificação do conteúdo exibido mudou (na mudança de programa ou canal) ou as configurações de controle dos pais foram alteradas (em ACTION_BLOCKED_RATINGS_CHANGED
e ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
) . Se o conteúdo deve ser bloqueado, a entrada de TV desativa o áudio e o vídeo e notifica o aplicativo de TV de que o conteúdo atual está bloqueado chamando notifyContentBlocked(TvContentRating)
. Se o conteúdo não deve ser bloqueado, a entrada de TV ativa o áudio e o vídeo e notifica o aplicativo de TV de que o conteúdo atual é permitido chamando notifyContentAllowed()
.
aplicativo de tv
Para honrar as APIs de controle dos pais e, portanto, criar uma plataforma compatível, o aplicativo de TV do sistema precisa fornecer uma maneira para os usuários gerenciarem o controle dos pais, inclusive para quaisquer classificações personalizadas registradas por aplicativos específicos.
O aplicativo de TV mostra uma IU de código PIN quando é notificado por uma entrada de TV de que o conteúdo atual está bloqueado ou quando o usuário tenta visualizar um canal bloqueado.
O aplicativo de TV não armazena diretamente as configurações de controle dos pais. Quando o usuário altera as configurações de controle dos pais, cada TvContentRating
bloqueado é armazenado pelo TV Input Manager e os canais bloqueados são armazenados pelo provedor de TV.
O aplicativo de TV precisa declarar a permissão android.permission.MODIFY_PARENTAL_CONTROLS
para alterar as configurações de controle dos pais.
Os fabricantes de dispositivos são encorajados a:
- Exercite o teste de controle dos pais do CTS Verifier no aplicativo de TV ao vivo de referência para obter uma demonstração dos requisitos de compatibilidade.
- Use o aplicativo de TV ao vivo como referência para seu próprio aplicativo de TV: em particular, consulte a fonte ContentRatingsManager e RatingSystemsFragment e como eles lidam com classificações personalizadas.
HDMI-CEC
O HDMI-CEC permite que um dispositivo controle outro, permitindo assim que um único controle remoto controle vários aparelhos em um home theater. Ele é usado pela Android TV para acelerar a configuração e permitir o controle distante de várias entradas de TV por meio do aplicativo de TV central. Por exemplo, ele pode alternar entradas, ligar ou desligar dispositivos e muito mais.
O Android TIF implementa HDMI-CEC como o serviço de controle HDMI para que os fabricantes de dispositivos precisem apenas desenvolver drivers de baixo nível que interajam com o leve Android TV HAL, ignorando a lógica de negócios mais complexa. Ao fornecer uma implementação padrão, o Android busca mitigar os problemas de compatibilidade reduzindo as implementações fragmentadas e o suporte seletivo a recursos. O HDMI Control Service usa os serviços existentes do Android, incluindo entrada e energia.
Isso significa que as implementações HDMI-CEC existentes precisarão ser reprojetadas para interoperar com o Android TIF. Recomendamos que a plataforma de hardware contenha um microprocessador para receber a ativação do CEC e outros comandos.

- O barramento CEC recebe um comando da fonte atualmente ativa para alternar para uma fonte diferente.
- O driver passa o comando para o HDMI-CEC HAL.
- O HAL notifica todos os
ActiveSourceChangeListeners
. - O HDMI Control Service é notificado sobre a mudança de fonte via
ActiveSourceChangeListener
. - O serviço TV Input Manager gera uma intenção para que o aplicativo de TV troque a fonte.
- O aplicativo de TV cria uma sessão do gerenciador de entrada de TV para a entrada de TV que está sendo alternada e chama
setMain
nessa sessão. - A sessão do gerenciador de entrada de TV passa essas informações para a entrada de TV HDMI.
- A entrada da TV HDMI solicita para definir a superfície da banda lateral.
- O TV Input Manager Service gera um comando de controle de roteamento correspondente de volta ao HDMI Control Service quando a superfície é definida.
Diretrizes de integração de TV
aplicativo de transmissão
Como cada país tem requisitos específicos de transmissão (MHEG, teletexto, HbbTV e mais), espera-se que os fabricantes forneçam suas próprias soluções para o aplicativo de transmissão, por exemplo:
- MHEG: pilha nativa
- Teletexto: pilha nativa
- HbbTV: solução HbbTV da Vewd Software
Na versão Android L, a Android TV espera que os fabricantes de dispositivos usem integradores de sistemas ou as soluções Android para pilhas regionais de TV, passem a superfície para pilhas de software de TV ou passem o código-chave necessário para interagir com pilhas legadas.
Veja como o aplicativo de transmissão e o aplicativo de TV interagem:
- O App TV está em foco, recebendo todas as chaves.
- O aplicativo de TV passa chaves (por exemplo, botão vermelho) para o dispositivo de entrada de TV.
- O dispositivo de entrada de TV integra-se internamente com a pilha de TV herdada.
- Ao receber um código de ativação (por exemplo, botão vermelho), o dispositivo de entrada de TV ativa os aplicativos de transmissão.
- Um aplicativo de transmissão tem foco no aplicativo de TV e lida com as ações do usuário.
Para pesquisa/recomendação por voz, o aplicativo de transmissão pode oferecer suporte à pesquisa no aplicativo para pesquisa por voz.