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-alvo 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. Isso significa que você pode criar novos apps para TV com base no que já sabe sobre a criação de apps para Android ou adaptar seus apps existentes para serem executados na 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 lidar com controladores de hardware de TV, criar layouts de TV e criar navegação de TV, consulte Criar apps para TV.
Usar o ExoPlayer da Media3
O Jetpack Media3 oferece 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, 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, e ele pode ser atualizado por atualizações de aplicativos da Play Store. Para mais informações, consulte ExoPlayer da Media3.
Usar o MediaSession
da Media3
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 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 uma interação muito mais simples 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 o 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();
Tratamento automático de estados
A biblioteca Media3 atualiza automaticamente a sessão de mídia usando o estado do player. Assim, não é necessário processar manualmente o mapeamento do jogador 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. Ao conectar a sessão de mídia ao player, um app pode anunciar a reprodução de mídia externamente e receber 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 sua mídia. Clientes externos podem usar um controle de mídia para emitir comandos de reprodução para seu app de mídia. Esses comandos 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 MediaSession.
Evitar interrupções no app
Usar MediaSession
evita interrupções desnecessárias, como:
Reprodução inesperada e contínua ao desligar a TV ou mudar as entradas dela. 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 das 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, voltar ao app se ele estiver tocando música em segundo plano ou oferecer suporte a comandos de voz. Com o
MediaSession
no seu app, os usuários podem usar comandos de voz para buscar e pular músicas ou episódios.
Outras considerações
Ao estender seu app de mídia para o Android TV, você precisa considerar questões 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 ajudar usuários com baixa visão, é importante oferecer acessibilidade nas jornadas de descoberta de conteúdo para apps de TV.
Por exemplo, preste mais atenção ao fornecer orientação de navegação e rotular corretamente os elementos, além de 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 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ê siga 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 base, seu app precisa ser compatível com o Google Cast. Ele permite estender seus apps Android, iOS e Chrome para ativar o streaming de áudio e vídeo em Android TVs, dispositivos Chromecast e com 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 recurso "Assistir a seguir".
Aproveite a voz e o engajamento ao oferecer suporte à vinculação de conta e sincronização de direitos, transmissão por voz e ativação do Cast Connect.
Pague com mais facilidade integrando o Google Play Faturamento e oferecendo assinaturas sem problemas.
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.