Como usar o app de teste do controlador de mídia

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:

Ciclo de vida da ação de mídia

Figura 1. Ciclo de vida da ação de mídia

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 um MediaSessionCompat legado ou no MediaSession Media3 quando acessado por um app externo por meio de um MediaControllerCompat 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 um MediaSessionCompat legado ou do MediaSession do Media3 quando acessado por um app externo por um MediaController 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

Página de lançamento do MCT
Figura 2. Página de lançamento do 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.

Página de controle
Figura 3. Página de controle

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:

  1. Use o menu suspenso Foco de áudio para selecionar uma das três sugestões de duração AUDIOFOCUS_GAIN, AUDIOFOCUS_GAIN_TRANSIENT ou AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK.
  2. Pressione o botão para solicitar o foco.
  3. Pressione o botão novamente para liberar o foco.

Como testar os controles de transporte

Como testar os controles de transporte
Figura 4. 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

O botão de teste
Figura 5. O botão de teste

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

Estado da MCT

O estado do controle de mídia
Figura 6. O estado do controle de mídia

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

Página de seleção de teste
Figura 7. Página de seleção do 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

Resultado de teste bem-sucedido
Figura 8. Um resultado de teste bem-sucedido

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.

Página de início do MCT na TV

Figura 9. Página de início da MCT na TV

A seleção de um app leva você à tela de teste, que mostra uma lista de testes de verificação à direita.

Página "Testes de verificação" na TV

Figura 10. Página "Testes de verificação" na TV

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.

Página de informações de teste na TV

Figura 11. Página de informações do teste na TV

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.