O que determina qual aplicativo atua para um comando Bluetooth AVRCP?

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:

Comentários

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *