O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
This page was translated by the Cloud Translation API.
Switch to English

Estrutura de entrada de TV

Ícone de HAL da Android TV

O Android TV Input Framework (TIF) simplifica a entrega de conteúdo ao vivo para o 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 pesquisas e recomendações de TV ao vivo por meio de metadados publicados pela TV Input.

A estrutura não busca 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 gerenciador de entrada de TV. O TIF funciona com o aplicativo de TV, um aplicativo de sistema que não pode ser substituído por um aplicativo de terceiros, para acessar canais integrados e sintonizadores de IP. O aplicativo de TV se comunica com módulos de entrada de TV fornecidos pelo fabricante do dispositivo ou outras partes por meio do Gerenciador de entrada de TV.

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
  • Aplicativo de TV ( com.android.tv.TvActivity ): o aplicativo que gerencia a interação do usuário
  • Gerenciador de entrada de TV ( 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 ( tv_input module): uma definição de hardware que permite que as entradas de TV do sistema acessem o hardware específico da TV quando implementado
  • Controle dos pais: a tecnologia que permite o bloqueio de canais e programas
  • HDMI-CEC: a tecnologia que permite o controle remoto de vários dispositivos via HDMI
  • Estrutura do sintonizador: uma estrutura para entrada de TV com sintonizador integrado
  • MediaCas: uma estrutura para acesso condicional
  • Tuner Resource Manager: um serviço para gerenciar os recursos 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 uma visão detalhada da arquitetura do Android TV Input Framework.

Visão geral da arquitetura Android TIF
Figura 1. Arquitetura do Android TV Input Framework (TIF)

Fluxo

Aqui está como a arquitetura é exercida:

  1. O usuário vê e interage com o aplicativo de TV, um aplicativo do sistema que não pode ser substituído por um aplicativo de terceiros.
  2. O aplicativo de TV exibe o conteúdo AV da entrada da TV.
  3. O aplicativo de TV não pode falar diretamente com as entradas de TV. O Gerenciador de entrada de TV identifica o estado das entradas de TV para o aplicativo de TV. Consulte o Gerenciador de entrada de TV abaixo para obter mais detalhes sobre essas limitações.

Permissões

  • Apenas as entradas de TV signatureOrSystem e o aplicativo de TV têm acesso total ao banco de dados do Provedor de TV e podem receber KeyEvents.
  • Apenas as entradas de TV do sistema podem acessar o HAL de entrada de TV por meio do serviço TV Input Manager. As entradas de TV são acessadas um a um 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 READ / WRITE apenas para linhas de pacote correspondentes.
  • Entradas de TV de terceiros podem exibir seu próprio conteúdo ou conteúdo de 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 integrado.
  • TV_INPUT_HARDWARE permissão TV_INPUT_HARDWARE para um aplicativo de entrada de TV de hardware sinaliza ao serviço de TV Input Manager para notificar o serviço de TV Input na inicialização para chamar o serviço de TV Input Manager 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 ser capaz de 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" internamente para "gênero canônico". As entradas de TV são responsáveis ​​por preencher "gênero de transmissão" com o valor do padrão de transmissão subjacente, e o campo "gênero canônico" será automaticamente preenchido com o gênero associado correto de android.provider.TvContract.Genres . Por exemplo, com o padrão de transmissão ATSC A / 65 e programa com gênero 0x25 (significando "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.

Provedor de Android TV
Figura 2. Provedor de Android TV

Apenas aplicativos na partição do sistema privilegiado podem ler todo o banco de dados do provedor de TV.

As entradas de TV passthrough não armazenam canais e programas.

Além dos campos padrão para canais e programas, o banco de dados do Provedor de TV também oferece um campo do tipo BLOB, COLUMN_INTERNAL_PROVIDER_DATA , em cada tabela que as entradas de TV podem usar para armazenar dados arbitrários. Esses dados BLOB podem incluir informações personalizadas, como a frequência do sintonizador associado, e podem ser fornecidos em um buffer de protocolo ou em outra forma. Um campo Pesquisável está disponível para tornar determinados canais indisponíveis na pesquisa (por exemplo, para atender aos requisitos específicos do país para proteção de conteúdo).

Exemplos de campos 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 de sistema como o aplicativo de TV. Essas tabelas têm 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 o ID do stream de transporte de um canal ( COLUMN_TRANSPORT_STREAM_ID ), o ID da rede original ( COLUMN_ORIGINAL_NETWORK_ID ) e o ID do serviço ( COLUMN_SERVICE_ID ).
  • Dados internos : campos que são para o uso personalizado de entradas de TV.
    Alguns campos, como COLUMN_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 restringido de 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 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 o canal de ser visto 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 completa 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 está 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 (app) que possui essa linha, verificado em Consulta, Inserir, Atualizar via TvProvider.java. Uma entrada de TV pode acessar apenas as informações que escreveu e está isolada das informações fornecidas por outras entradas de TV.
  • Permissões de LEIA, GRAVAÇÃO via AndroidManifest.xml (requer consentimento do usuário) para determinar os canais disponíveis.
  • Apenas os aplicativos signatureOrSystem podem adquirir a permissão ACCESS_ALL_EPG_DATA para acessar o banco de dados inteiro.

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 dos pais. As sessões do TV Input Manager devem ser criadas individualmente com as entradas de TV. O Gerenciador de entrada de TV permite o acesso às entradas de TV instaladas para que os aplicativos possam:

  • Liste as entradas de TV e verifique seu status
  • Crie sessões e gerencie ouvintes

Para sessões, uma entrada de TV pode ser ajustada pelo aplicativo de TV apenas para URIs que ele adicionou ao banco de dados do provedor de TV, exceto para entradas de TV de passagem, que podem ser ajustadas para usar 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 evitando 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 enquanto ajuda 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 têm um AndroidManifest.xml e são instalados (via Play, pré-instalados ou sideloaded). 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 embutido, podem ser fornecidas apenas pelo fabricante, pois falam diretamente com o hardware subjacente. Outros, como IPTV, deslocamento de lugar 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 de TV.

Exemplo de entrada passthrough

Entrada do sistema Android TV
Figura 3. Entrada do sistema Android TV

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, ela 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 do utilitário android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) . O aplicativo de TV se comunica com o Gerenciador de entrada de TV para acessar a entrada de TV HDMI.

Exemplo de sintonizador integrado

Entrada de sintonizador integrado para Android TV
Figura 4. Entrada do sintonizador integrado para Android TV

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

Exemplo de entrada de terceiros

Entrada de terceiros para Android TV
Figura 5. Entrada de terceiros da Android TV

Neste exemplo, a entrada STB TV externa é fornecida por um terceiro. Uma vez que 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.

Por meio do Gerenciador de entrada de TV, a entrada de TV STB externa pode falar com a entrada de TV HDMI e solicitar que ela 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)

Android TV KeyEvents
Figura 6. KeyEvents da Android TV

O diagrama acima mostra como os botões de um controle remoto são passados ​​para uma entrada de TV específica para exibição de imagem na 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 InputDispatcher e InputReader pipeline de entrada padrão do Android como KeyEvents . Estes, por sua vez, acionam eventos no aplicativo de TV se ele estiver em foco.

Apenas as 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 devem ser consumidos e deve permitir que o aplicativo de TV manipule as chaves que ele 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, desambiguar KeyEvents entrada 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.

Exemplo de botão vermelho da Android TV
Figura 7. Exemplo de botão vermelho da Android TV

Ele descreve o fluxo de um aplicativo de botão vermelho, comum na Europa para permitir que os usuários acessem aplicativos interativos em suas televisões. Um aplicativo pode ser entregue por meio deste 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 de esportes.

Consulte a seção Aplicativo de transmissão para saber como os aplicativos de transmissão interagem com o aplicativo de TV.

Neste exemplo:

  1. O aplicativo da TV está em foco e recebe todas as chaves.
  2. KeyEvents (por exemplo, o botão vermelho) é passado para a entrada de TV ativa como InputEvents.
  3. A entrada de TV do sistema se integra com a pilha MHEG-5 e tem permissão de sistema RECEIVE_INPUT_EVENT .
  4. Ao receber o código de ativação (por exemplo, botão vermelho), a entrada da TV ativa o aplicativo de transmissão.
  5. A entrada de TV consome KeyEvents como InputEvents e o aplicativo de transmissão é o foco e lida com InputEvents até ser dispensado.

Nota : Entradas de TV de terceiros nunca recebem chaves.

Entrada de TV HAL

O HAL de entrada de TV auxilia no desenvolvimento de entradas de TV para acessar hardware específico de TV. Assim como acontece com outros HALs Android, o HAL de entrada de TV ( tv_input ) está disponível na árvore de origem do AOSP e o fornecedor desenvolve sua implementação.

App 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 (TV ao vivo) é fornecido junto com a plataforma Android, que pode ser usado no estado em que se encontra, personalizado, estendido ou substituído por 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 app 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 realizar as seguintes tarefas:

Instalação e configuração

  • Auto-detectar entradas de TV
  • Deixe as entradas de TV iniciarem a configuração do canal
  • Controlar as configurações dos pais
  • Editar canais

Vendo

  • Acesse e navegue em todos os canais de TV
  • Acesse a barra de informações do programa de TV
  • Exibir dados do Guia de programação eletrônico (EPG)
  • Suporta várias faixas de áudio e legendas
  • Fornecer desafio de PIN de controle dos pais
  • Permitir sobreposição de interface de usuário de entrada de TV para o padrão de TV (HbbTV, etc.)
  • Preencher resultados de pesquisa de canais e programas de TV
  • Exibir cartões de vinculação de aplicativos
  • Suporte a APIs de timeshifting
  • Lida com a funcionalidade DVR e suporta APIs de gravação de TV

Este conjunto de recursos aumentará de acordo com as novas versões do Android em que 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 os aplicativos instalados forneçam canais de software para a 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 à exibiçã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; Se substituir o aplicativo de TV do sistema, os fabricantes de dispositivos devem garantir que seus próprios aplicativos forneç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 junto com o serviço de TV ao vivo padrão do dispositivo. A promessa das APIs do desenvolvedor é que os usuários serão capazes de encontrar canais (uma vez instalados) dentro de 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 Android.

As seções a seguir mostram como o aplicativo de TV ao vivo 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 as entradas de terceiros sejam ações mínimas de navegação longe do aplicativo de TV principal.

O aplicativo de TV ao vivo de referência fornece o menu Fontes de canais para acessar as entradas.

Vá para as configurações
Figura 8. Vá para Configurações .

Vá para a fonte do canal em Configurações
Figura 9. Vá para Fontes de canal em Configurações.

Selecione sua fonte na lista.
Figura 10. Selecione sua fonte na lista.

Adicione canais de sua fonte
Figura 11. Adicione canais de sua fonte.

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 para a Configuração:

Notificação que mostra novas fontes de canais disponíveis.
Figura 12. Notificação que mostra que novas fontes de canais estão disponíveis.

Se o usuário agir por meio da notificação, ele pode selecionar para configurar suas fontes, conforme mostrado na Figura 10.

Consulte Definir seu serviço de entrada de TV para as expectativas do desenvolvedor nesta área.

Personalize a lista de canais

Os fabricantes de dispositivos podem fornecer uma IU para ocultar determinados canais e permitir que os usuários gerenciem seus próprios EPGs. A TV ao vivo inclui esse recurso.

Abra a lista de canais em Configurações.
Figura 13. Abra a lista de canais em Configurações .

Personalize sua lista de canais.
Figura 14. Personalize sua lista de canais.

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.

Os canais de entradas de terceiros devem ser apresentados como parte do EPG de experiência de TV ao vivo padrão do dispositivo. A separação visual ou categorias separadas para canais de terceiros podem ser usadas (consulte a seção do aplicativo de TV do CDD do Android) - o que importa é que os usuários podem encontrar os canais que instalaram.

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 (consulte com.android.tv.search.TvProviderSearch ) que 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 oferecer suporte às APIs de mudança de tempo de estrutura do Android. Além disso, os fabricantes devem implementar controles de reprodução no aplicativo de TV, o que permite aos usuários pausar, retomar, retroceder e avançar a reprodução.

Para entradas de TV que suportam time shifting, o aplicativo de TV precisa exibir os controles de reprodução.

Controles de reprodução
Figura 15. 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 pós-venda que podem ser conectados a um dispositivo Android TV.

Além de gravar conteúdo ao vivo, o aplicativo de TV também lida com conflitos de recursos. Por exemplo, se o dispositivo tiver dois sintonizadores, ele 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 deve apresentar uma notificação ou solicitar que o usuário programe 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 gostaria de gravar todos os episódios futuros de uma série quando solicitar a gravação de um episódio.

Consulte o diagrama a seguir para ver uma possível implementação de DVR na Android TV.

Gravação de vídeo digital na Android TV
Figura 16. Gravação de vídeo digital na Android TV

  1. 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.
  2. O aplicativo de TV recebe uma solicitação iniciada pelo usuário para gravar um programa de TV.
  3. O aplicativo de TV armazena a programação de gravação em seu banco de dados interno.
  4. Quando chega a hora de gravar, o aplicativo de TV passa uma solicitação para sintonizar o canal associado à gravação.
  5. O serviço de entrada de TV recebe essa solicitação, responde se há ou não recursos apropriados e sintoniza o canal.
  6. Em seguida, o aplicativo de TV passa uma solicitação para iniciar a gravação ao Gerenciador de entrada de TV.
  7. O serviço de entrada de TV recebe essa solicitação e começa a gravar.
  8. O serviço de entrada de TV armazena os dados de vídeo reais em seu armazenamento, que pode ser externo ou em nuvem.
  9. Quando chega a hora de terminar a gravação, o aplicativo de TV passa a solicitação de interrupção da gravação para o Gerenciador de entrada de TV.
  10. Assim que o serviço de entrada de TV 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 Android CDD e 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, Pesquisa, Controle dos Pais e outros requisitos no contexto de entradas de terceiros.
  • Consulte Definir seu serviço de entrada de TV para as expectativas do desenvolvedor nesta área.

Controle dos pais

O controle dos pais permite que um usuário bloqueie canais e programas indesejados, mas ignora o bloqueio inserindo um código PIN.

A responsabilidade pela funcionalidade de controle dos pais é compartilhada entre o aplicativo de TV, serviço de gerenciador de entrada de TV, provedor de TV e 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 apresenta 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 do TV Input Framework com quaisquer outros mecanismos que eles possam incluir.

Provedor de TV

Cada linha de canal possui um campo COLUMN_LOCKED que é usado para bloquear a visualização de canais específicos sem inserir um código PIN. O campo do programa COLUMN_CONTENT_RATING se destina à exibição e não é usado para reforçar o controle dos pais.

Gerenciador de entrada de TV

O Gerenciador de entrada de TV armazena todos os TvContentRating bloqueados e responde a isRatingBlocked() para avisar se o conteúdo com a classificação dada deve ser bloqueado.

Entrada de TV

A entrada de TV verifica se o conteúdo atual deve ser bloqueado chamando isRatingBlocked() no Gerenciador de entrada de TV quando a classificação do conteúdo exibido muda (na mudança de programa ou canal) ou as configurações de controle dos pais mudam (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 habilita o áudio e o vídeo e notifica o aplicativo de TV de que o conteúdo atual é permitido chamando notifyContentAllowed() .

App 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, incluindo 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 gerenciador de entrada de TV 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 incentivados a:

  • Faça o teste de controle dos pais do CTS Verifier em relação ao aplicativo de TV ao vivo de referência para 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 as 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. É 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 lógicas de negócios mais complexas. Ao fornecer uma implementação padrão, o Android busca mitigar os problemas de compatibilidade reduzindo implementações fragmentadas e suporte seletivo a recursos. O HDMI Control Service usa os serviços Android existentes, 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.

Integração CEC na Android TV
Figura 17. Integração CEC na Android TV

  1. O barramento CEC recebe um comando da fonte atualmente ativa para mudar para uma fonte diferente.
  2. O driver passa o comando para o HDMI-CEC HAL.
  3. O HAL notifica todos os ActiveSourceChangeListeners .
  4. O serviço de controle HDMI é notificado da mudança de fonte via ActiveSourceChangeListener .
  5. O serviço Gerenciador de entrada de TV gera uma intenção para o aplicativo de TV alternar a fonte.
  6. O aplicativo de TV então cria uma Sessão de gerenciador de entrada de TV para a entrada de TV que está sendo alternada e chama setMain nessa sessão.
  7. A Sessão do gerenciador de entrada de TV passa essas informações para a entrada de TV HDMI.
  8. A entrada HDMI TV solicita a configuração da superfície da banda lateral.
  9. O TV Input Manager Service gera um comando de controle de roteamento correspondente ao serviço de controle HDMI quando a superfície é ajustada.

Diretrizes de integração de TV

Aplicativo de transmissão

Como cada país possui 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 de TV regionais, 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:

  1. O aplicativo da TV está em foco, recebendo todas as chaves.
  2. O aplicativo de TV passa as chaves (por exemplo, botão vermelho) para o dispositivo de entrada de TV.
  3. O dispositivo de entrada de TV se integra internamente com a pilha de TV legada.
  4. 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.
  5. Um aplicativo de transmissão se concentra no aplicativo de TV e controla as ações do usuário.

Para pesquisa / recomendação por voz, o aplicativo de transmissão pode oferecer suporte à pesquisa dentro do aplicativo para pesquisa por voz.