O que determina qual aplicativo atua com um comando AVRCP bluetooth?

18

Antecedentes: Eu tenho um fone de ouvido Bluetooth A2DP / AVRCP ( Nokia BH-505 ) que uso ativamente para ouvir podcasts e música. Claro, eu os ouço com aplicativos diferentes. O fone de ouvido bluetooth possui alguns botões de "comando" (AVRCP), relevantes para o áudio específico: "próxima faixa", "faixa anterior" e "reproduzir / pausar"

Atualmente, sempre que pressiono um dos comandos, um dos tocadores de música que eu instalei ( Meridian ) sempre recebe o comando - mesmo quando não está ativo. Portanto, quando clico em "reproduzir / pausar" com a intenção de pausar um podcast ( DoggCatcher ), o Meridian é ativado e começa a tocar música junto com o podcast.

Ambos os jogadores estão configurados para usar o fone de ouvido: DoggCatcher tem "Bind to headset" ativado e Meridian tem "Headset Buttons" ativado. Atualmente, estou usando o estoque não raiz Android 2.2.1 no GT-S5570, mas pode estar fazendo root e atualizando para o 2.3 CyanogenMod (ou algo semelhante) no futuro.

Ignorando os detalhes, minha pergunta sobre isso é mais geral:

  • Como o Android determina qual aplicativo reage a esses comandos? Estou interessado mesmo em uma resposta muito técnica.

No lado prático, estou interessado em:

  • Preciso mexer nas configurações de cada aplicativo para determinar qual aplicativo aceita os comandos ou existe alguma maneira geral de determinar isso?
  • Existe uma maneira de configurar isso para que o aplicativo realmente ativo receba automaticamente sempre a prioridade? (como foi solicitado parcialmente em outra pergunta )

Como esta pergunta difere de perguntas semelhantes:

Ilari Kajaste
fonte
11
Eu consegui encontrar algumas boas informações relacionadas a este a partir de um blog do desenvolvedor Android - discutindo a maneira correta de que este deve ser implementado por aplicações em 2.2: "Permitir que as aplicações para jogar bonito (r) uns com os outros: Manipulação de botões de controle remoto"
Ilari Kajaste
Em 2016 este ainda é um problema -.- Mover-se de iOS esta pode ser a parte mais irritante de android para mim até agora: /
Squazz

Respostas:

11

O roteador de botão de mídia , já mencionado em uma das perguntas vinculadas, tenta descobrir qual aplicativo está tocando música e despachar os eventos do AVRCP para ele. Além disso, lista todos os aplicativos instalados, que declaram ouvir os eventos do AVRCP.

O que torna o AVRCP complicado: alguns aplicativos, como o Music Unlimited da Sony , parecem não declarar android.intent.action.MEDIA_BUTTONem seu manifesto. Por esse (ou talvez outro) motivo, eles não podem ser controlados pelo roteador de botão de mídia. Eu sei que, por exemplo, o Music Unlimited pode ser controlado via AVRCP desde que eu o li em um comentário do usuário e também consegui executá-lo uma vez, mas infelizmente não é reproduzível. Portanto, nesses casos, parece que precisamos aguardar a atualização de um aplicativo com uma implementação limpa do tratamento de eventos do AVRCP.

De acordo com o wiki do roteador do botão de mídia, "O manuseio da intenção do botão de mídia é feito por meio de transmissões ordenadas, e cada aplicativo define sua própria prioridade para receber". Portanto, talvez seja possível escrever um aplicativo que exiba essas prioridades e, com efeito, permitir que você determine qual aplicativo será iniciado. No entanto, não conheço esse aplicativo.

Silas
fonte
0

Talvez isso ajude um pouco:

Samsung S5 -> receptor Bluetooth + conectores para fone de ouvido

Estou usando o Samsung S5, primeiro com o aplicativo 7digital para baixar e tocar música. Então mudei e usei o Cloudplayer. Mas sempre que o Clouplayer está sendo reproduzido e eu pressiono o botão de pausa / reprodução no meu receptor Bluetooth, meu aplicativo 7digital começa a tocar música. Não foi possível alterar nenhuma configuração para alterar a reprodução / pausa do bluetooth no Cloudplayer. Excluí todas as minhas músicas baixadas pelo 7digital e tentei novamente. Problema resolvido! A reprodução / pausa está de alguma forma vinculada ao Cloudplayer agora.

Chihwah Li
fonte
0

Não é um problema com o seu dispositivo BT. Quando emparelhado com o seu telefone, o Bluetooth Headset reproduz um fluxo A2DP ativo iniciado no Celular. Se for um reprodutor de mídia padrão no seu telefone, ele pode reagir a todos os comandos de controle do AVRCP, como reproduzir pausa, pular, fw etc. Agora, quando você reproduz algo na web ou algum outro reprodutor que não implementa todos esses controles sobre o AVRCP, por BT Headset ainda é um fluxo A2DP ativo chegando. Ele enviará as mensagens do Controle AVRCP para o seu telefone. Agora, é o seu telefone que deve rotear esses comandos para o respectivo aplicativo na maioria dos casos, para a fonte de transmissão A2DP ativa ou, no seu caso, seu telefone ainda está encaminhando comandos AVRCP para o music player padrão.

Sua melhor aposta seria tentar configurar seu celular, desde que a fonte que você está reproduzindo suporte ao controle AVRCP. Se não, então você não pode fazer nada. Nesse caso, definitivamente o Mobile deve permitir que esses comandos AVRCP sejam manipulados pela sua fonte de streaming A2DP ativa.

Rizwan Ul Haq
fonte