O Android oferece uma experiência do usuário avançada e otimizada para apps em dispositivos de tela grande, como TVs de alta definição. Você pode ampliar o público do seu app desenvolvendo-o para o 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. Essa abordagem significa que você pode criar novos apps para TV com base no que já sabe sobre a criação de apps para Android ou estender seus apps atuais para que também sejam executados em dispositivos de TV.
No entanto, o modelo de interação do usuário para aparelhos de 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 facilmente 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 processar 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 fornece uma interface Player que define recursos básicos, como a capacidade de reproduzir, pausar, buscar e mostrar informações da faixa. O ExoPlayer é a implementação padrão dessa interface na Media3.
Em comparação com a API MediaPlayer do Android, ele 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, e ele pode ser atualizado pelas atualizações de aplicativos da Google Play Store. Para mais informações, consulte ExoPlayer da Media3.
Usar a Media3 MediaSession
As sessões de mídia oferecem uma maneira universal para o sistema interagir com o player de áudio ou vídeo do seu app. Uma das principais características que distinguem a Media3 das APIs de mídia anteriores é que não há mais necessidade de conectores entre os componentes.
A nova classe MediaSession usa 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 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 ao 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();
Tratamento 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 player para a sessão. Isso ajuda a garantir que os usuários sempre vejam as informações atualizadas sobre a mídia em reprodução, inclusive no card "Tocando agora".
Controlar e anunciar a reprodução
Na 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. Ela permite rotear comandos de fontes externas para o player que faz o trabalho de reproduzir sua mídia. Clientes externos podem usar um controlador de mídia para emitir comandos de reprodução para o app de mídia. Eles são recebidos pela sessão de mídia, que 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 a MediaSession.
Evitar interrupções no app
O uso da MediaSession permite evitar interrupções desnecessárias, como:
Reprodução inesperada e contínua ao desligar a TV ou trocar as entradas da TV. Isso também causa alto consumo de energia para o hardware da TV. Com a
MediaSession, seu 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 das APIs
MediaSessionpermite a reprodução contínua em um serviço em segundo plano.Interação restrita com conteúdo que impede os usuários de controlar a reprodução. Por exemplo, retornar ao app se ele estiver reproduzindo música em segundo plano ou oferecer suporte a comandos de voz. Com
MediaSessionno app, os usuários podem usar comandos de voz para buscar e pular músicas ou episódios.
Considerações adicionais
Ao estender seu app de mídia para o Android 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 assistivas possam ajudar usuários com baixa visão, é importante oferecer suporte à acessibilidade em jornadas de descoberta de conteúdo para apps de TV.
Por exemplo, preste atenção extra ao fornecer orientações de navegação e rotular elementos corretamente, e ajude a garantir que os apps de 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 o Android TV funcionam em dispositivos com o 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 a 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 da Media3.
Como base, seu app precisa oferecer suporte ao Google Cast. Ele permite estender seus apps Android, iOS e Chrome para ativar o streaming de áudio e vídeo para TVs Android, dispositivos Chromecast e dispositivos do Google Assistente. Para mais informações, consulte a documentação do Google Cast.
Você também pode ajudar os usuários a:
Descobrir conteúdo em várias plataformas oferecendo um feed de ações de mídia ou integrando o recurso "Assistir a seguir".
Aproveitar a voz e o engajamento oferecendo suporte à vinculação de contas e à sincronização de direitos, oferecendo transmissão por voz e ativando o Cast Connect.
Pagar com mais facilidade integrando a Faturação do Google Play e oferecendo assinaturas sem atrito.
Criar o framework de entrada de 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 a partir 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.