O Android oferece uma experiência rica ao usuário otimizada para apps em execução em dispositivos de tela grande, como televisões de alta definição. É possível ampliar o público-alvo do app desenvolvendo-o para Android TV. Este documento fornece orientações sobre como fazer isso de maneira eficaz.
Criar apps para TV
Os apps para TV têm a mesma estrutura dos apps para smartphones e tablets. Com essa abordagem, você pode criar novos apps de TV com base no que já sabe sobre a criação de apps para Android ou estender seus apps existentes para serem executados em dispositivos de TV.
No entanto, o modelo de interação do usuário para TVs é substancialmente diferente do modelo de smartphones e tablets. Para que o app funcione bem em aparelhos de TV, é preciso desenvolver novos layouts que possam ser claramente compreendidos a três metros de distância e oferecer uma navegação que funcione com apenas um controle direcional e um botão de seleção.
Para mais informações sobre considerações, como como gerenciar controles de hardware de TV, criar layouts de TV e criar navegação na TV, consulte Criar apps para TV.
Usar o ExoPlayer da Media3
O Jetpack Media3 oferece uma interface de player que define recursos básicos, como a capacidade de reproduzir, pausar, procurar e exibir informações da faixa. O ExoPlayer é a implementação padrão dessa interface na Media3.
Em comparação com a API MediaPlayer do Android, ela adiciona outras conveniências, como suporte a vários protocolos de streaming, renderizadores de áudio e vídeo padrão e componentes que processam o buffer de mídia.
É possível personalizar e estender o ExoPlayer, que pode ser atualizado com as atualizações de apps da Play Store. Para mais informações, consulte ExoPlayer da Media3.
Usar a Media3 MediaSession
As sessões de mídia oferecem uma maneira universal de o sistema interagir com o player de áudio ou vídeo do app. Uma das principais características que diferenciam a Media3 das APIs de mídia anteriores é que não há mais necessidade de conectores entre componentes.
A nova classe MediaSession
recebe qualquer classe que implemente a interface
Player. O ExoPlayer e o MediaController são classes que implementam essa
interface. Isso facilita a interação entre os componentes.
Para mais informações, consulte A interface do player.
Para mais informações sobre como criar um app de reprodução de mídia, consulte Criar um player de mídia básico usando o ExoPlayer.
Para criar a melhor experiência para os usuários finais do seu app de mídia, é necessário
implementar MediaSession
. Para fazer isso, inicialize um Player
e forneça-o a
MediaSession.Builder
desta forma:
Kotlin
val player = ExoPlayer.Builder(context).build() val mediaSession = MediaSession.Builder(context, player).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build(); MediaSession mediaSession = new MediaSession.Builder(context, player).build();
Processamento automático de estado
A biblioteca Media3 atualiza automaticamente a sessão de mídia usando o estado do player. Portanto, não é necessário processar manualmente o mapeamento do jogador para a sessão. Isso ajuda a garantir que os usuários sempre tenham informações atualizadas na mídia em reprodução, incluindo no card "Tocando agora".
Controlar e anunciar a reprodução
No Media3, o player padrão é a classe ExoPlayer, que implementa a interface Player. Conectar a sessão de mídia ao player permite que um app anuncie a reprodução de mídia externamente e receba comandos de reprodução de fontes externas. A sessão de mídia delega esses comandos ao player do app de mídia.
A sessão de mídia é a chave para controlar a reprodução. Ele permite encaminhar comandos de fontes externas para o player que reproduz a mídia. Clientes externos podem usar um controle de mídia para emitir comandos de reprodução ao app de mídia. Eles são recebidos pela sessão de mídia, que, por fim, delega comandos ao player de mídia.
Para mais informações sobre a reprodução, como personalizar o comportamento do comando de reprodução, consulte Controlar e anunciar a reprodução usando uma MediaSession.
Evitar interrupções no app
O uso de MediaSession
evita interrupções desnecessárias, como:
Reprodução inesperada e contínua ao desligar a TV ou mudar as entradas da TV. Isso também causa um alto consumo de energia para o hardware da TV. Com
MediaSession
, o app pode informar à plataforma que está reproduzindo mídia, e a plataforma pode informar ao app que a reprodução pode ser interrompida.A reprodução de música para inesperadamente ao sair do app ou desligar a tela da TV. O uso de APIs
MediaSession
permite a reprodução contínua em um serviço em segundo plano.Interação restrita com o conteúdo, que impede os usuários de controlar a reprodução. Por exemplo, retornar ao app se ele estiver tocando música em segundo plano ou oferecer suporte a comandos de voz. Com
MediaSession
no app, os usuários podem usar comandos de voz para procurar e pular músicas ou episódios.
Outras considerações
Ao estender seu app de mídia para o Android para TV, você precisa considerar problemas de acessibilidade, como aumentar o engajamento, como permitir que os usuários encontrem conteúdo e como criar jogos e serviços de entrada de TV.
Acessibilidade da TV
Embora as tecnologias adaptativas possam e ajudem os usuários com baixa visão, é importante oferecer suporte à acessibilidade nas jornadas de descoberta de conteúdo para apps de TV.
Por exemplo, preste atenção ao fornecer orientações de navegação e rotular corretamente os elementos. Isso ajuda a garantir que os apps para TV funcionem bem com recursos de acessibilidade, como o TalkBack. Essas etapas podem melhorar significativamente a experiência de usuários com deficiência visual.
A primeira etapa para melhorar a acessibilidade é a conscientização. Para mais informações sobre dimensionamento de texto, layouts de teclado e descrições de áudio, consulte recursos de acessibilidade.
Práticas recomendadas para aumentar o engajamento no Google TV
Todos os apps criados para Android TV funcionam em dispositivos com Google TV. Para oferecer a melhor experiência do usuário no Google TV, recomendamos que você aplique as seguintes práticas recomendadas.
É necessário usar MediaSession
para oferecer uma maneira universal de interagir com
um player de áudio ou vídeo. Para mais informações sobre como implementar isso, consulte
Usar a MediaSession do Media3.
Como referência, seu app precisa oferecer suporte ao Google Cast. Ele permite que você estenda seus apps Android, iOS e Chrome para ativar o streaming de áudio e vídeo em TVs Android e dispositivos Chromecast e Google Assistente. Para mais informações, consulte a documentação do Google Cast.
Você também pode ajudar os usuários a:
Descubra conteúdo em várias plataformas oferecendo um feed de ações de mídia ou integrando o Assistir a seguir.
Aproveite a voz e o engajamento oferecendo suporte à vinculação de contas e à sincronização de direitos, além de oferecer transmissão por voz e ativar o Cast Connect.
Pague com mais facilidade integrando o faturamento do Google Play e oferecendo assinaturas sem complicações.
Criar o framework de entrada para TV
Assistir programas de TV ao vivo e outros conteúdos contínuos em canais é uma grande parte da experiência televisiva. Os usuários estão acostumados a escolher e assistir programas na TV navegando pelos canais. O TV Input Framework cria canais para publicar conteúdo de vídeo ou música no guia de programação da TV.
O TV Input Framework fornece um método unificado para receber e reproduzir conteúdo de vídeo ao vivo de fontes de hardware, como portas HDMI e sintonizadores integrados, bem como fontes de software, como streamings de vídeo pela Internet. Para mais informações, consulte Criar serviços de entrada de TV.