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 usam as APIs de sessão de mídia do Android e as ações de mídia. O ciclo de vida da ação de mídia pode ser difícil de acompanhar. Até mesmo uma solicitação simples de reprodução de pesquisa tem muitas etapas intermediárias em que algo pode dar errado, como mostrado na linha do tempo simplificada:

O ciclo de vida da ação de mídia

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

O app de teste do controle de mídia (MCT, na sigla em inglês) 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 controlador de mídia está disponível em duas versões:

  • O app cliente é implementado com base no MediaControllerCompat legado. Is legada permite testar o app de sessão de mídia criado com base em um MediaSessionCompat legado ou no MediaSession do Media3 quando acessado por um app externo usando um MediaControllerCompat legado. Encontre o código-fonte da versão legada no GitHub.
  • O app cliente é implementado com base no MediaController mais recente do Media3. Isso permite testar o app de sessão de mídia criado com base em um MediaSessionCompat legado ou no MediaSession do Media3 quando acessado por um app externo usando um MediaController do Media3. Encontre o código-fonte da versão do Media3 no GitHub.

O MCT mostra informações sobre o MediaController do app, como PlaybackState e metadados, e pode ser usado para testar controles de mídia entre apps. A MCT também inclui um framework de teste 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 o MCT

Página de lançamento do MCT
Figura 2. Página de lançamento do MCT

Ao iniciar a MCT, você verá duas listas:

  • Active MediaSessions: essa lista fica vazia quando você inicia o MCT, e a mensagem "No media apps found. A permissão de listener de notificações é necessária para procurar sessões de mídia ativas." Clique em Configurações para acessar a tela de permissões e ativar a permissão para a MCT.
  • Implementações do MediaBrowserService: essa lista mostra os 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ó será possível usar a MCT se você tiver configurado o app para aceitar todas as conexões ou se tiver colocado a MCT na lista de permissões. Consulte Como controlar conexões de cliente com onGetRoot() para mais informações.

Testar manualmente um app Telefone

Se você permitiu que o MCT se conectasse ao serviço de navegação de mídia do seu app, ele vai aparecer na lista de implementações de serviço de navegação de mídia. Encontre-o lá e clique em Control para iniciar o app em segundo plano.

Caso contrário, primeiro inicie o app em segundo plano e clique em Controlar quando ele aparecer na lista de sessões de mídia ativas.

Como testar a preparação e a reprodução

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á preparada para processar.

A página de controle
Figura 3. A página de controle

A parte de cima da página de controles do MCT contém um menu suspenso em que é possível selecionar Pesquisa, URI, código da mídia ou Nenhum, além de um campo de texto para especificar os dados de entrada associados à pesquisa, ao URI ou ao código da mídia, se você selecionar uma dessas opções.

Os botões Prepare e Play logo abaixo do campo de texto realizam as chamadas apropriadas (onPrepare(), onPrepareFromSearch(), onPrepareFromUri(), onPrepareFromMediaId(), onPlay(), onPlayFromSearch(), onPlayFromUri(), onPlayFromMediaId()) dependendo da ação selecionada.

Como testar o foco de áudio

Um app de música bem-comportado precisa ser capaz de processar a seleção de áudio. Para testar o foco de áudio, execute outro app de áudio junto com o seu. A página de controles do MCT inclui um botão que solicita e libera o foco 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 dicas 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 controles de transporte

Como testar controles de transporte
Figura 4. Como testar os controles de transporte

Deslize para a esquerda para mostrar a visualização da interface da MCT. Essa visualização tem os botões de transporte padrão do controlador de mídia e mostra a imagem e os dados do programa da sessão. Os botões de transporte desativados estã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 precisa mudar conforme o esperado. Por exemplo, quando você pressiona o botão PLAY, ele precisa ser desativado, e os botões PAUSE e STOP precisam ser ativados.

Deslize para a esquerda novamente para ver as 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, pode deslizar para a esquerda mais duas vezes para acessar visualizações que permitem navegar pela hierarquia de conteúdo do app ou pesquisar na árvore de conteúdo.

Como 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 teste de verificação oferece testes de um clique que podem ser executados para garantir que o app de música responda corretamente a uma solicitação de reprodução.

Como testar um app Telefone

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 app de mídia.

Estado do MCT

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, o PlaybackState, os metadados e a fila. Há dois botões no canto superior direito da barra de ferramentas. O botão à esquerda alterna entre registros analisáveis e formatados. 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. A página de seleção de testes

Ao deslizar para a esquerda, você chega à visualização de testes de verificação, onde pode ver uma lista rolável de testes disponíveis. Se um teste usar uma consulta, como o teste de reprodução de pesquisa mostrado na Figura 7, haverá um campo de texto para inserir a string de consulta.

A MCT inclui testes para as seguintes ações de mídia, e mais testes são adicionados continuamente ao projeto:

  • Reproduzir
  • Tocar na Pesquisa
  • Reproduzir do ID da mídia
  • Tocar do URI
  • Pausar
  • Parar
  • Pular para a próxima
  • Pular para a anterior
  • Pular para o item da fila
  • Procurar

Resultados do teste

Resultado de um teste bem-sucedido
Figura 8. Resultado de um teste bem-sucedido

A área de resultados na parte de baixo da visualização fica vazia no início. Ele vai mostrar os resultados quando você executar um teste. Por exemplo, para executar o teste de reprodução de pesquisa, insira uma consulta de pesquisa no campo de texto e clique em Run Test. 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ê verá uma lista de apps de música instalados. Um app só vai aparecer nessa lista se implementar um serviço de navegador de mídia.

A página de lançamento do MCT na TV

Figura 9. A página de lançamento do MCT na TV

Ao selecionar um app, você acessa a tela de teste, que mostra uma lista de testes de verificação à direita.

A página de testes de verificação na TV

Figura 10. A página de 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, confira os registros do MCT no Logcat.

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

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

Os testes que exigem uma consulta são marcados com um ícone de teclado. Ao clicar em um desses testes, um campo de entrada para a consulta é aberto. Clique em Enter para executar o teste.

Para facilitar a entrada de texto, use um comando adb:

adb shell input text your-query

Você pode usar "%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 MCT no GitHub e consulte as instruções do teste de verificação.

Para mais informações, consulte as instruções de contribuição.

Outros recursos

O MCT precisa ser usado em conjunto com apps que implementam APIs de mídia. Consulte o Universal Android Music Player para ver um exemplo desse tipo de app.

Correções de bugs e melhorias são sempre bem-vindas. Consulte as instruções de contribuição.