Os apps de mídia que interagem por voz com o Google Assistente em smartphones, carros, TVs e fones de ouvido Android são ativados pelas APIs de sessão de mídia do Android e usam ações de mídia. O ciclo de vida da ação de mídia pode ser difícil de acompanhar. Até mesmo uma simples solicitação de reprodução de pesquisa tem muitas etapas intermediárias em que algo pode dar errado, conforme mostrado na linha do tempo simplificada:
O app Media Controller Test (MCT) permite testar as complexidades da reprodução de mídia no Android e ajuda a verificar a implementação da sessão de mídia.
O app de teste do controle de mídia está disponível em duas versões:
- O app cliente é implementado em cima do
MediaControllerCompat
legado. Isso permite testar o app de sessão de mídia criado com base em umMediaSessionCompat
legado ou noMediaSession
Media3 quando acessado por um app externo por meio de umMediaControllerCompat
legado. Encontre o código-fonte da versão legada no GitHub. - O app cliente é implementado sobre o
MediaController
Media3 mais recente. Isso permite testar o app de sessão de mídia criado em cima de umMediaSessionCompat
legado ou doMediaSession
do Media3 quando acessado por um app externo por umMediaController
do Media3. Encontre o código-fonte da versão Media3 no GitHub.
O MCT mostra informações sobre a MediaController
do app, como
PlaybackState
e metadados, e pode ser usado para testar controles de mídia entre apps.
O MCT também inclui um framework
de testes de verificação que
permite automatizar os testes de controle de qualidade.
Para usar o MCT, seu app precisa ter um serviço de navegação de mídia e você precisa permitir que o MCT se conecte a ele. Consulte Como criar um serviço de navegador de mídia para mais informações.
Como iniciar a MCT

Ao iniciar o MCT, duas listas vão aparecer:
- MediaSessions ativas: essa lista fica inicialmente vazia quando você inicia a MCT e mostra a mensagem "Nenhum app de mídia encontrado. A permissão NotificationListener é necessária para procurar sessões de mídia ativas." Clique em Configurações para acessar a tela de permissões e ative a permissão para o MCT.
- Implementações do MediaBrowserService: esta lista mostra apps que implementaram um serviço de navegador de mídia. Se você tiver implementado um serviço de navegador de mídia, seu app vai aparecer nessa lista, mas só poderá usar o MCT se tiver configurado o app para aceitar todas as conexões ou adicionar o MCT à lista de permissões. Consulte Como controlar as conexões de cliente com onGetRoot() para mais informações.
Testar manualmente um app para smartphone
Se você permitiu que o MCT se conectasse ao serviço de navegação de mídia do app, ele vai aparecer na lista de implementações de lista de serviços de navegação de mídia. Encontre-o e clique em Controle para iniciar o app em segundo plano.
Caso contrário, primeiro inicie o app em segundo plano e clique em Control quando ele aparecer na lista de sessões de mídia ativas.
Testar, preparar e jogar
Quando o MCT começa a controlar o app, ele mostra os metadados da sessão atual do app: a mídia selecionada no momento e as ações que a sessão está preparado para processar.

A parte de cima da página de controles do MCT contém um menu suspenso em que você pode selecionar Search, URI, Media ID ou None, além de um campo de texto para especificar os dados de entrada associados à pesquisa, ao URI ou ao Media ID, se você selecionar uma dessas opções.
Os botões Prepare e Play logo abaixo do campo de texto executam as
chamadas apropriadas (onPrepare()
, onPrepareFromSearch()
, onPrepareFromUri()
,
onPrepareFromMediaId()
, onPlay()
, onPlayFromSearch()
, onPlayFromUri()
,
onPlayFromMediaId()
) dependendo da ação selecionada.
Como testar a seleção de áudio
Um app de mídia bem comportado precisa ser capaz de processar a seleção de áudio. Você pode testar a seleção de áudio executando outro app de áudio com o seu. A página de controles do MCT inclui um botão que solicita e libera a seleção de áudio.
Para testar o foco de áudio, siga estas etapas:
- Use o menu suspenso Foco de áudio para selecionar uma das três sugestões de duração
AUDIOFOCUS_GAIN
,AUDIOFOCUS_GAIN_TRANSIENT
ouAUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
. - Pressione o botão para solicitar o foco.
- Pressione o botão novamente para liberar o foco.
Como testar os controles de transporte

Deslize para a esquerda para mostrar a visualização da interface do MCT. Essa visualização tem os botões de transporte padrão do media player e mostra a imagem e os dados do programa da sessão. Os botões de transporte desativados são circulados em laranja. Todos os outros estão ativos.
Teste o player usando os botões de transporte. O estado dos botões de transporte deve mudar conforme o esperado. Por exemplo, quando você pressiona o botão PLAY, ele é desativado, e os botões PAUSE e STOP são ativados.
Deslize para a esquerda novamente para acessar uma visualização que mostra ações opcionais. Cada ação tem um controle que mostra se ela está ativa ou não. Se estiver ativo, você poderá realizar a ação clicando nele.
Se você se conectou pela lista de apps que têm um serviço de navegador de mídia, é possível deslizar para a esquerda duas vezes para acessar visualizações que permitem navegar pela hierarquia de conteúdo do app ou pesquisar a árvore de conteúdo.
Testar manualmente um app de vídeo
Use o modo de tela dividida para testar os controles de apps de vídeo. Primeiro, abra o app de vídeo em uma janela e, em seguida, abra o MCT no modo de tela dividida.
Como executar testes de verificação
O framework de testes de verificação oferece testes de um clique que podem ser executados para garantir que o app de mídia responda corretamente a uma solicitação de reprodução.
Como testar um app para smartphone

Para acessar os testes de verificação, clique no botão Testar ao lado do seu app de mídia.
Estado da MCT

A próxima visualização mostra informações detalhadas sobre o MediaController
do MCT,
por exemplo, PlaybackState
, metadados e fila. Há dois botões no canto superior direito da barra de ferramentas. O botão à esquerda alterna entre registros formatados
e paráveis. O botão à direita atualiza a visualização para mostrar as
informações mais recentes.
Como selecionar um teste

Ao deslizar para a esquerda, você chega à visualização de testes de verificação, onde é possível ver uma lista rolável dos testes disponíveis. Se um teste usa uma consulta, como o teste de reprodução na pesquisa mostrado na Figura 7, há um campo de texto para inserir a string de consulta.
O MCT inclui testes para as seguintes ações de mídia, e mais testes são sempre adicionados ao projeto:
- Reproduzir
- Tocar na pesquisa
- ID de mídia do recurso "Play From"
- Tocar de URI
- Pausar
- Parar
- Pular para a próxima
- Pular para a anterior
- Pular para o item da fila
- Procurar
Resultados dos testes

A área de resultados na parte de baixo da visualização está inicialmente vazia. Ele vai mostrar os resultados quando você executar um teste. Por exemplo, para executar o teste de reprodução na pesquisa, digite uma consulta no campo de texto e clique em Executar teste. A captura de tela a seguir mostra um resultado de teste bem-sucedido.
Como testar um app para Android TV
Ao iniciar o MCT no Android TV, você vai encontrar uma lista de apps de mídia instalados. Um app só vai aparecer nessa lista se implementar um serviço de navegador de mídia.
A seleção de um app leva você à tela de teste, que mostra uma lista de testes de verificação à direita.
Quando você executa um teste, o lado esquerdo da tela mostra informações sobre o MediaController selecionado. Para mais detalhes, verifique os registros do MCT no Logcat.
Os testes que exigem uma consulta são marcados com um ícone de teclado. Clicar em um desses testes abre um campo de entrada para a consulta. Clique em Enter para executar o teste.
Para facilitar a entrada de texto, você também pode usar um comando adb
:
adb shell input text your-query
Use "%s" para adicionar um espaço entre as palavras. Por exemplo, o comando a seguir adiciona o texto "hello world" ao campo de entrada.
adb shell input text hello%sworld
Como criar um teste
Você pode enviar uma solicitação de pull com mais testes que achar úteis. Para saber como criar novos testes, acesse o Wiki do GitHub do MCT e confira as instruções do teste de verificação.
Leia as instruções de contribuição.
Outros recursos
O MCT é destinado a ser usado com apps que implementam APIs de mídia. Consulte o Universal Android Music Player para conferir um exemplo desse tipo de app.
Correções de bugs e melhorias são sempre bem-vindas. Consulte as instruções de contribuição.