21 votes

Qu'est-ce qui détermine l'application qui répond à une commande AVRCP Bluetooth ?

Le contexte : J'ai une oreillette 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. L'oreillette Bluetooth dispose de quelques boutons de "commande" (AVRCP), relatifs à 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 s'il n'est pas actif. Ainsi, lorsque je clique sur "play/pause" dans l'intention de mettre en pause un podcast ( DoggCatcher ), le Meridian est activé et commence à jouer de la musique en même temps que le podcast.

Les deux joueurs sont réglés pour utiliser le casque : DoggCatcher a activé l'option "Bind to headset" et Meridian a activé l'option "Headset Buttons". J'utilise actuellement la version stock Android 2.2.1 non enracinée sur le GT-S5570, mais il est possible que je l'enracine et le mette à niveau vers la version 2.3 CyanogenMod (ou autre) à l'avenir.

Ignorant les spécificités, ma question à ce sujet est plus générale :

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

Sur le plan pratique, je m'intéresse à :

  • Dois-je modifier 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 ?
  • Y a-t-il un moyen de configurer ceci de sorte que l'application qui est réellement actif aurait-elle toujours automatiquement la priorité ? (comme cela a été demandé en partie dans une autre question )

En quoi cette question diffère-t-elle des questions similaires ?

11voto

Silas Points 276

media-button-routeur Déjà mentionné dans l'une de vos questions, essaie pour savoir quelle application est en train de lire de la musique et lui envoyer les événements AVRCP. En outre, il dresse la liste de toutes les applications installées, qui déclarer pour écouter les événements AVRCP.

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

Selon wiki de media-button-router "Le traitement de l'intention du bouton média se fait par le biais de diffusions ordonnées, et chaque application définit sa propre priorité de réception." Il serait donc peut-être possible d'écrire une application qui affiche ces priorités et qui, en fait, vous permettrait de déterminer quelle application va démarrer. Cependant, je ne connais pas une telle application.

1voto

Ils ont finalement ajouté une section pour répondre à cette question exacte : https://developer.Android.com/guide/topics/media-apps/mediabuttons.html

0voto

Sniper Points 1480

Peut-être que cela vous aidera un peu :

Samsung S5 --> Récepteur Bluetooth + Bouchons de téléphone intra-auriculaires

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

0voto

Rizwan Ul Haq Points 1

Ce n'est pas un problème avec votre appareil BT. Lorsqu'elle est couplée avec votre téléphone, l'oreillette Bluetooth lit le flux A2DP actif initié par le téléphone mobile. Si c'est un lecteur multimédia standard sur votre téléphone, il peut réagir à toutes les commandes de contrôle AVRCP comme play pause skip, fw etc. Maintenant, lorsque vous jouez quelque chose sur le Web ou un autre lecteur qui ne met pas en œuvre tous ces contrôles sur AVRCP, pour le casque BT, c'est toujours un flux A2DP actif à venir. Il enverra des messages de contrôle AVRCP à 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 achemine toujours les commandes AVRCP vers le lecteur de musique par défaut.

Votre meilleure chance serait d'essayer de configurer votre mobile, à condition que la source que vous lisez prenne en charge le contrôle AVRCP. Si ce n'est pas le cas, vous ne pouvez rien faire. Si c'est le cas, alors le mobile devrait définitivement permettre à ces commandes AVRCP d'être traitées par votre source de streaming A2DP active.

-2voto

Benjamin Points 1

Cette application serait "Media Button Router". https://play.google.com/store/apps/details?id=com.harleensahni.Android.mbr

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X