O Android oferece uma experiência do usuário avançada e otimizada para apps executados 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. Essa abordagem significa que você pode criar novos apps de TV com base no que já sabe sobre a criação de apps para Android ou estender os apps atuais para que também sejam executados em dispositivos de TV.
No entanto, o modelo de interação do usuário para TV é substancialmente diferente do modelo para smartphones e tablets. Para que seu app seja bem-sucedido em dispositivos de TV, é preciso criar novos layouts que possam ser claramente entendidos a uma distância de 3 metros e oferecer uma navegação que funcione apenas com um botão direcional e um botão de seleção.
Para mais informações sobre considerações como o processamento de controles de hardware de TV, a criação de layouts de TV e a criação de navegação de TV, consulte Criar apps de TV.
Usar o ExoPlayer da Media3
O Jetpack Media3 oferece uma interface Player que define recursos básicos, como a capacidade de tocar, pausar, buscar e mostrar informações da faixa. O ExoPlayer é a implementação padrão dessa interface no 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 armazenamento em buffer de mídia.
É possível personalizar e estender o ExoPlayer, que pode ser atualizado por meio de atualizações do app Google 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 app. Uma das principais características que diferenciam a Media3 das APIs de mídia anteriores é que não é mais necessário usar 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 muito 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úsica, você precisa
implementar o MediaSession. Para fazer isso, inicialize um Player e forneça-o para
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úsica.
A sessão de mídia é fundamental para controlar a reprodução. Ele permite rotear comandos de fontes externas para o player que reproduz sua mídia. Os clientes externos podem usar um controlador de mídia para emitir comandos de reprodução para seu 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 uma MediaSession.
Evite interrupções no app
O uso de MediaSession permite evitar interrupções desnecessárias, como:
Reprodução inesperada e contínua ao desligar a TV ou trocar 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 é interrompida inesperadamente ao sair do app ou desligar a tela da TV. O uso de APIs
MediaSessionpermite 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
MediaSessionno seu 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úsica para o Android para TV, é preciso considerar problemas de acessibilidade, como impulsionar o engajamento, como permitir que os usuários encontrem conteúdo, além de 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 atenção especial ao fornecer orientações de navegação e rotular elementos corretamente, além de 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.
O primeiro passo 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 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 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 que você estenda seus apps Android, iOS e apps do Chrome para permitir o streaming de áudio e vídeo para Android TVs, dispositivos Chromecast e dispositivos com o 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 oferecendo suporte à vinculação de contas e à sincronização de direitos, oferecendo transmissão por voz e ativando o Cast Connect.
Pague com mais facilidade integrando o Google Play Faturamento e oferecendo assinaturas sem complicações.
Criar o TV Input Framework
Assistir programas de TV ao vivo e outros conteúdos contínuos baseados em canais é uma parte importante da experiência de TV. Os usuários estão acostumados a selecionar e assistir programas na TV navegando pelos canais. O framework de entrada de TV cria canais para publicar conteúdo de vídeo ou música no guia de programação de TV.
O framework de entrada de TV oferece 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, e fontes de software, como vídeos transmitidos pela Internet. Para mais informações, consulte Criar serviços de entrada de TV.