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

Os apps de música que interagem por voz com o Google Assistente em smartphones, carros, TVs e fones de ouvido Android usam a tecnologia de 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 seguir. Mesmo uma solicitação de reprodução de pesquisa simples 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 das ações 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.

A MCT mostra informações sobre o MediaController do app, como o PlaybackState e os metadados, e pode ser usada para testar controles de mídia entre apps. A MCT também inclui uma estrutura 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 navegador 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 ver 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: inicialmente, essa lista fica vazia quando você inicia o MCT, e a mensagem "Nenhum app de mídia foi encontrado. A permissão do listener de notificações é necessária para procurar sessões de mídia ativas. Clique em Settings para acessar a tela de permissões e ativar a permissão para o MCT.
  • Implementações do MediaBrowserService: esta 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 o MCT se você tiver configurado o app para aceitar todas as conexões ou permitido o MCT. Consulte Como controlar conexões de clientes com onGetRoot() para mais informações.

Testar manualmente um app para smartphones

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

Caso contrário, é necessário iniciar o app primeiro em segundo plano e, depois, clicar em Control quando ele aparecer na lista de sessões de mídia ativas.

Preparação e reprodução de testes

Quando o MCT começa a controlar seu app, ele mostra os metadados da sessão atual do app: a mídia selecionada e as ações que a sessão está preparada para processar.

A página de controle
Figura 3. a página "Controle"

A parte superior da página de controles de MCT contém um menu suspenso em que você pode selecionar Pesquisar, URI, ID da mídia ou Nenhum, além de um campo de texto para especificar os dados de entrada associados ao ID de pesquisa, URI ou mídia, se você selecionar uma dessas opções.

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

Testando a seleção de áudio

Um app de música bem comportado precisa ser capaz de lidar com a foco de áudio. Você pode testar a seleção de áudio executando outro app de áudio junto com seu app. A página de controles de MCT inclui um botão que solicita e libera a seleção de áudio.

Para testar a seleção de áudio, siga estas etapas:

  1. Use o menu suspenso Audio Focus 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. testar 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 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 seu jogador 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 REPRODUZIR, ele deve ser desativado, e os botões PAUSAR e PARAR serão ativados.

Deslize para a esquerda novamente para abrir as ações opcionais. Cada ação tem um controle que mostra se está ou não ativa. Se ela estiver ativa, realize a ação clicando nela.

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 conferir as visualizações que permitem subir e descer na hierarquia de conteúdo do app ou pesquisar na árvore de conteúdo.

Testar manualmente um app de vídeo

Use o modo de tela dividida para testar os controladores de apps de vídeo. Primeiro, abra seu app de vídeo em uma janela e, em seguida, abra o MCT no modo de tela dividida.

Executando testes de verificação

O framework de testes de verificação oferece testes de um clique que podem ser executados para garantir que seu app de música responda corretamente a uma solicitação de reprodução.

Testar um app para smartphones

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

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

Estado do 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 analisáveis e formatados. O botão à direita atualiza a visualização para mostrar as informações mais atuais.

Como selecionar um teste

Página "Seleção de teste"
Figura 7. Página "Seleção de teste"

Ao deslizar para a esquerda, você verá a visualização de testes de verificação, em que é possível conferir uma lista rolável dos testes disponíveis. Se um teste usa uma consulta, como o teste de pesquisa mostrado na Figura 7, há um campo de texto para inserir a string de consulta.

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

  • Reproduzir
  • Jogar pela pesquisa
  • Reproduzir com o ID de mídia
  • Reproduzir de URI
  • Pausar
  • Parar
  • Pular para próxima
  • Pular para o anterior
  • Pular para a fila
  • Procurar em

Resultados dos testes

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

A área de resultados na parte inferior da visualização está inicialmente vazia. Os resultados serão mostrados 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 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ê verá uma lista de apps de mídia instalados. Um app só vai aparecer na lista se implementar um serviço de navegação de mídia.

Página de lançamento do MCT na TV

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

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

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

Figura 10. 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 saber mais, consulte os registros de MCT no Logcat.

Página de informações do 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. Pressione Enter para executar o teste.

Para facilitar a entrada de texto, também é possível usar 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

É possível enviar uma solicitação de envio com mais testes que você considera úteis. Para saber como criar novos testes, acesse a Wiki do GitHub sobre a MTC (em inglês) e as instruções de teste de verificação.

Leia as instruções de contribuição.

Outros recursos

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

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