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 forma 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 TV é 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, por exemplo, como lidar com controladores de hardware de TV, criar layouts para TV e criar navegação para 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 distinguem a Media3 das APIs de mídia anteriores é que não há mais a 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úsica, você precisa
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 saber mais sobre reprodução, por exemplo, como personalizar o comportamento do comando de reprodução, consulte Controlar e anunciar a reprodução usando o MediaSession.
Evite 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 o
MediaSession
, seu app pode informar à plataforma que está reproduzindo mídia, e a plataforma pode informar 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 oferecendo 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, é necessário 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 mais atenção em fornecer orientações de navegação e rotular elementos corretamente e garanta que 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 audiodescrições, 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.
Você precisa usar MediaSession
para fornecer 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.