Histórico: eu tenho um fone de ouvido bluetooth A2DP / AVRCP ( Nokia BH -505 ) que uso ativamente para ouvir podcasts e música. Claro, eu escuto isso com aplicativos diferentes. O fone de ouvido bluetooth tem alguns botões de “comando” (AVRCP), relevantes para áudio – em específico: “próxima faixa”, “faixa anterior” e “reproduzir / pausar”
Atualmente, sempre que pressiono qualquer um dos comandos , um dos reprodutores de música que instalei ( Meridian ) sempre obtém o comando – mesmo quando não está ativo. Quando clico em “reproduzir / pausar” com a intenção de pausar um podcast ( DoggCatcher ), em vez disso, o Meridian é ativado e começa a tocar música junto com o podcast.
Ambos os jogadores estão configurados para estar usando o fone de ouvido: DoggCatcher tem “Vincular ao fone de ouvido” ativado e Meridian tem “Botões de fone de ouvido” ativado. No momento, estou usando Android 2.2.1 sem raiz no GT-S5570, mas posso estar fazendo root e atualizando para 2.3 CyanogenMod ( ou semelhante), no futuro.
Ignorando os detalhes, minha pergunta sobre isso é mais geral:
- Como o Android determina qual aplicativo obtém para reagir a esses comandos? Estou interessado até mesmo em uma resposta muito técnica.
Do lado prático, estou interessado em:
- Preciso mexer nas configurações de cada aplicativo para determinar qual aplicativo recebe os comandos ou há alguma maneira geral de determinar isso?
- Há uma maneira de configurar isso para que o aplicativo que “está realmente ativo sempre receba automaticamente a prioridade? (como foi perguntado parcialmente em outra pergunta )
Como esta pergunta difere de perguntas semelhantes:
-
“Como definir o comportamento do botão” Reproduzir “no Bluetooth remoto” – apenas um foco prático e diferente, até agora sem respostas e Também estou interessado em respostas que exigiriam enraizamento ou firmware personalizado (especialmente CyanogenMod).
-
Alterar aplicativo padrão para manipulação controles de fone de ouvido – um problema exato que foi corrigido, mas não de uma forma que respondesse às minhas perguntas, embora dê algumas dicas de como as coisas funcionam.
-
Como posso fazer com que o botão dos meus fones de ouvido controle algo diferente do player de música padrão? – questão parcialmente semelhante no lado prático, mas sem foco em explicar como ele realmente funciona, e a única resposta está focada na parte que não estou perguntando (fazer apenas um aplicativo receber os comandos).
-
por que todos os aplicativos de som obtêm eventos de botão bluetooth, todos de uma vez – muito semelhante, mas perguntando sobre um problema específico (todos dos reprodutores de mídia recebendo o comando AVRCP)
Comentários
- Consegui encontrar algumas informações boas relacionadas a isso de um blog de desenvolvedor Android – discutindo a maneira adequada que deve ser implementado por aplicativos em 2.2: ” Permitindo que os aplicativos funcionem bem (r) uns com os outros: Manuseio dos botões do controle remoto ”
- Em 2016, isso ainda é um problema -. – Mudar do iOS pode ser a parte mais irritante do Android para mim até agora: /
- Relacionado? android.stackexchange.com/q/218823/693
Resposta
media-button-router , já mencionado em uma de suas perguntas vinculadas, tenta descobrir qual aplicativo está reproduzindo música no momento e enviar os eventos AVRCP para ele. Além disso, ele lista todos os aplicativos instalados, que declaram ouvir eventos AVRCP.
O que torna o AVRCP complicado: Alguns aplicativos, como Sony “s Music Unlimited , parece não declarar android.intent.action.MEDIA_BUTTON
em seu manifesto. Por esta (ou talvez alguma outra) razão, eles não podem” ser controlados pela mídia- botão roteador. Eu sei disso, por exemplo O Music Unlimited pode ser controlado via AVRCP, já que li em um comentário do usuário e também consegui executá-lo uma vez , mas infelizmente não é reproduzível. Então, nesses casos, parece que precisamos aguarde a atualização de um aplicativo com uma implementação limpa de manipulação de eventos AVRCP.
De acordo com o wiki do media-button-router “ “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 de recebimento.” Portanto, talvez seja possível escrever um aplicativo que exiba essas prioridades e, na verdade, seria permitem que você determine qual aplicativo será iniciado. No entanto, eu não sei sobre esse aplicativo.
Resposta
Eles finalmente adicionaram uma seção para responder a esta pergunta exata: https://developer.android.com/guide/topics/media-apps/mediabuttons.html
Resposta
Talvez isso ajude um pouco:
Samsung S5 -> receptor Bluetooth + plugues de fone de ouvido
Estou usando o Samsung S5, primeiro com o aplicativo 7digital para baixar e reproduzir música. Então mudei e usei o Cloudplayer. Mas toda vez que o Clouplayer está tocando e eu pressiono o botão pausar / reproduzir no meu receptor Bluetooth, meu aplicativo 7digital começa a tocar música. Não consegui alterar nenhuma configuração para alterar a reprodução / pausa do bluetooth em direção ao Cloudplayer. Em seguida, apaguei todas as minhas músicas baixadas da 7digital e tentei novamente. Problema resolvido! Reproduzir / pausar está de alguma forma vinculado ao Cloudplayer agora.
Resposta
Não é um problema com seu dispositivo BT. Quando emparelhado com o seu telefone, o fone de ouvido Bluetooth reproduz fluxo A2DP ativo iniciado do telefone móvel. Se for algum reprodutor de mídia padrão em seu telefone, ele pode reagir a todos os comandos de controle AVRCP como reproduzir, pausar, pular, fw etc. Agora, quando você reproduz algo na web ou algum outro reprodutor que não implementa todos esses controles sobre AVRCP, para BT Headset ainda é um fluxo A2DP ativo chegando. Ele enviará mensagens de 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 streaming A2DP ativa ou, no seu caso, o telefone ainda está encaminhando comandos AVRCP para o reprodutor de música padrão.
Seu a melhor aposta seria tentar configurar seu celular, desde que a fonte que você está reproduzindo seja compatível com o controle AVRCP. Se isso não acontecer, você não poderá fazer nada. Em caso afirmativo, o Mobile deve permitir que esses comandos AVRCP sejam controlados por sua fonte de streaming A2DP ativa.
Resposta
Este aplicativo seria “Media Button Router” https://play.google.com/store/apps/details?id=com.harleensahni.android.mbr