Qu'est-ce qui détermine quelle application agit sur une commande Bluetooth AVRCP?

18

Contexte: J'ai un casque Bluetooth A2DP / AVRCP ( Nokia BH-505 ) que j'utilise activement pour écouter des podcasts et de la musique. Bien sûr, je les écoute avec différentes applications. Le casque bluetooth possède des boutons de "commande" (AVRCP), pertinents pour l'audio - en particulier: "piste suivante", "piste précédente" et "lecture / pause"

Actuellement, chaque fois que j'appuie sur l'une des commandes, l'un des lecteurs de musique que j'ai installés ( Meridian ) reçoit toujours la commande - même lorsqu'il n'est pas actif. Ainsi, lorsque je clique sur "lecture / pause" dans l'intention de suspendre un podcast ( DoggCatcher ), Meridian est activé à la place et commence à jouer de la musique avec le podcast.

Les deux joueurs devraient utiliser le casque: DoggCatcher a activé la fonction "Lier au casque" et Meridian les boutons "Casque" sont activés. J'utilise actuellement Android 2.2.1 stock non rooté sur GT-S5570 mais je peux être en train de rooter et de mettre à niveau vers 2.3 CyanogenMod (ou similaire), à ​​l'avenir.

Ignorant les détails, ma question à ce sujet est plus générale:

  • Comment Android détermine-t-il quelle application réagit à ces commandes? Je suis intéressé même par une réponse très technique.

Sur le plan pratique, je suis intéressé par:

  • Dois-je jouer avec les paramètres de chaque application pour déterminer quelle application prend les commandes, ou existe-t-il un moyen général de le déterminer?
  • Existe-t-il un moyen de configurer cela pour que l'application qui est réellement active obtienne automatiquement toujours la priorité? (comme cela a été demandé en partie dans une autre question )

En quoi cette question diffère des questions similaires:

Ilari Kajaste
la source
1
J'ai réussi à trouver de bonnes informations à ce sujet sur un blog de développeur Android - discutant de la manière appropriée que cela devrait être implémenté par les applications en 2.2: "Permettre aux applications de jouer bien (r) les unes avec les autres: gérer les boutons de la télécommande"
Ilari Kajaste
En 2016, c'est toujours un problème -.- En passant d'iOS, cela pourrait être la partie la plus irritante d'Android pour moi jusqu'à présent: /
Squazz

Réponses:

11

media-button-router , déjà mentionné dans l'une de vos questions liées, essaie de comprendre quelle application joue actuellement de la musique et de lui envoyer les événements AVRCP. En outre, il répertorie toutes les applications installées, qui déclarent écouter les événements AVRCP.

Ce qui rend AVRCP compliqué: Certaines applications, comme Sony Unlimited Music , semblent ne pas déclarer android.intent.action.MEDIA_BUTTONdans leur manifeste. Pour cette raison (ou peut-être une autre), ils ne peuvent pas être contrôlés via un routeur à bouton multimédia. Je sais que par exemple Music Unlimited peut être contrôlé via AVRCP car je l'ai lu dans un commentaire d'utilisateur et j'ai également pu le faire fonctionner une fois mais malheureusement il n'est pas reproductible. Donc, dans ces cas, il semble que nous devons attendre la mise à jour d'une application avec une implémentation propre de la gestion des événements AVRCP.

Selon le wiki de media-button-router "La gestion de l'intention des boutons multimédias se fait par le biais de diffusions ordonnées, et chaque application définit sa propre priorité de réception." Il pourrait donc être possible d'écrire une application qui affiche ces priorités et, en fait, vous permettrait de déterminer quelle application va démarrer. Cependant, je ne connais pas une telle application.

Silas
la source
0

Peut-être que cela aidera un peu:

Samsung S5 -> Récepteur Bluetooth + prises téléphoniques intra-auriculaires

J'utilise Samsung S5, d'abord avec l'application 7digital pour télécharger et jouer de la musique. Ensuite, j'ai changé et utilisé Cloudplayer. Mais chaque fois que Clouplayer joue et que j'appuie sur le bouton pause / lecture de mon récepteur Bluetooth, mon application 7digital commencera à jouer de la musique. Je n'ai pu modifier aucun paramètre pour modifier la lecture / pause Bluetooth vers Cloudplayer. J'ai ensuite supprimé toute ma musique 7digital téléchargée et réessayé. Problème résolu! La lecture / pause est en quelque sorte liée à Cloudplayer maintenant.

Chihwah Li
la source
0

Ce n'est pas un problème avec votre appareil BT. Lorsqu'il est couplé avec votre téléphone, le casque Bluetooth lit le flux A2DP actif lancé à partir du téléphone mobile. S'il s'agit d'un lecteur multimédia standard sur votre téléphone, il peut réagir à toutes les commandes de contrôle AVRCP comme lecture pause saut, fw etc. BT Headset est toujours un flux A2DP actif à venir. Il enverra des messages de contrôle AVRCP sur votre téléphone. C'est maintenant votre téléphone qui est censé acheminer ces commandes vers l'application respective dans la plupart des cas vers la source de streaming A2DP active ou dans votre cas, votre téléphone transfère toujours les commandes AVRCP au lecteur de musique par défaut.

Le mieux serait d'essayer de configurer votre mobile à condition que la source que vous jouez prenne en charge le contrôle AVRCP. Si ce n'est pas le cas, de toute façon, vous ne pouvez rien faire. Si c'est le cas, alors définitivement Mobile devrait permettre à ces commandes AVRCP d'être gérées par votre source de streaming A2DP active.

Rizwan Ul Haq
la source