什么决定哪个应用程序对蓝牙AVRCP命令起作用?


18

背景:我有一台A2DP / AVRCP蓝牙耳机(诺基亚BH-505),可用于收听播客和音乐。当然,我会使用不同的应用程序收听这些内容。蓝牙耳机具有一些与音频相关的“命令”(AVRCP)按钮-具体而言:“下一首”,“上一首”和“播放/暂停”

目前,只要我按任意一个命令,我安装的一个音乐播放器(Meridian)都会得到该命令-即使它不处于活动状态也是如此。因此,当我单击“播放/暂停”打算暂停播客(DoggCatcher)时,子午线被激活并开始与播客一起播放音乐。

两个玩家都设置为使用耳机:DoggCatcher的“绑定到耳机”已打开,子午线的“耳机按钮”已打开。我目前在GT-S5570上使用无根的股票Android 2.2.1,但将来可能会生根并升级到2.3 CyanogenMod(或诸如此类)。

忽略细节,我对此的疑问更为笼统:

  • Android如何确定哪个应用程序可以对这些命令做出反应?我对一个非常技术性的答案也很感兴趣。

在实用方面,我感兴趣:

  • 我是否必须摆弄每个应用程序的设置来确定哪个应用程序使用命令,或者是否有一些通用的方法来确定这些命令?
  • 有没有一种方法可以配置它,以使实际上处于活动状态的应用程序始终自动获得优先级?(正如在另一个问题中被部分问到的

这个问题与类似问题有何不同:


1
我确实从一个Android开发人员博客中找到了一些与此相关的良好信息-讨论了2.2中的应用程序实现的正确方法:“允许应用程序彼此播放nice(r):处理远程控制按钮”
Ilari Kajaste 2011年

在2016年,这仍然是一个问题-.-从iOS迁移到现在,这可能是android中最
令人讨厌的

Answers:


11

您已在链接的问题之一中提到了media-button-router,它试图确定当前正在播放音乐的应用程序并向其发送AVRCP事件。此外,它列出了所有安装的声明监听AVRCP事件的应用程序。

使AVRCP变得复杂的原因:某些应用程序(例如Sony的Music Unlimited)似乎未android.intent.action.MEDIA_BUTTON在其清单中声明。由于这个原因(或其他原因),无法通过媒体按钮路由器对其进行控制。我知道例如Music Unlimited可以通过AVRCP进行控制,因为我在用户评论中看到了它,并且我也能够使其运行一次,但不幸的是,它是不可复制的。因此,在这些情况下,我们似乎必须等待带有AVRCP事件处理的清晰实现的应用程序更新。

根据media-button-router的Wiki, “ Media Button Intent处理是通过有序广播来完成的,每个应用程序都设置自己的接收优先级。” 因此,也许可以编写一个显示这些优先级的应用程序,并且实际上可以让您确定启动哪个应用程序。但是,我对这样的应用程序一无所知。



0

也许这会有所帮助:

三星S5->蓝牙接收器+入耳式电话插头

我正在使用Samsung S5,首先使用7digital应用程序下载和播放音乐。然后,我更改并使用了Cloudplayer。但是每次Clouplayer播放时,当我按下蓝牙接收器上的“暂停/播放”按钮时,我的7digital应用程序都将开始播放音乐。我无法更改任何设置来更改对Cloudplayer的蓝牙播放/暂停。然后,我删除了所有7digital下载的音乐,然后重试。问题解决了!播放/暂停现在已以某种方式链接到Cloudplayer。


0

您的BT设备没有问题。与手机配对后,蓝牙耳机会播放从手机发起的有效A2DP流。如果它是手机上的标准媒体播放器,则它可以对所有AVRCP控制命令做出反应,例如播放暂停跳过,前进等。现在,当您在网络上播放某些内容或某些未通过AVRCP实现所有此类控件的播放器时, BT Headset仍然是一个活跃的A2DP流。它将向您的手机发送AVRCP控制消息。现在,应该是您的电话将这些命令路由到相应的应用程序,在大多数情况下,这些命令将路由到活动的A2DP流源,或者在您的情况下,您的电话仍在将AVRCP命令转发到默认音乐播放器。

最好的选择是尝试配置您的手机,前提是您所播放的源确实支持AVRCP控制。如果没有,那么您将无能为力。如果确实如此,则Mobile绝对应允许您的活动A2DP流源处理这些AVRCP命令。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.