主页(http://www.175shouji.com):那么Android如何知道哪个应用程序真正开始播放
您是否曾经将手机连接到喜欢的蓝牙扬声器或车载套件,并且发现Google Play音乐,Pandora或Soundcloud之类的应用程序会自动开始播放?对于那些希望选择自己喜欢的应用程序进行媒体播放的用户来说,这可能会很烦人。不幸的是,除非您的特定蓝牙设备允许您禁用自动播放,否则您几乎无能为力,无法将播放命令发送到您的设备。
如果您在网络上搜索该问题的解决方案,则可能会遇到几页内容,它们提出了解决该问题的相当粗略的方法。它涉及进入每个特定蓝牙设备的蓝牙配置文件设置页面,并禁用媒体音频配置文件。我将此称为“粗略”解决方案,因为尽管它确实阻止了自动播放,但您必须手动返回并重新启用此配置文件,然后才能再次使用蓝牙设备进行媒体播放。
蓝牙配置文件
但是,有一种更好的方法可以用来解决此问题。如果您阅读过我以前的任何教程,那么您可能已经猜到这涉及Tasker的使用。但是,这一次,您不需要使用任何其他应用程序/插件,即使对于初学者Tasker用户,该解决方案也非常易于实现。这就是它的工作方式。
了解Android上的蓝牙自动播放
当您连接发送自动播放命令的蓝牙设备时,实际上发生的是该命令被视为Android中切换播放/暂停的KeyEvent。 然后,带有MediaButtonReceiver广播接收器的应用程序可以对此媒体按钮事件做出反应。
但是,如果您有多个应用程序可以对此意图做出反应,那么Android如何知道哪个应用程序真正开始播放?它的工作方式是Android跟踪请求接收Media Button事件的最后一个应用程序。任何新的媒体应用程序都可以通过在AudioManager中调用setMediaButtonReceiver来接听媒体按钮按键事件,并且该应用程序将处理媒体按钮按键事件,直到另一个应用程序请求控制。您实际上可以通过输入以下ADB命令来查看当前设置为响应这些关键事件的应用程序:
在我的设备上,此命令产生以下输出:
这是Google Play音乐为响应媒体按钮按键事件而设置的广播接收器。因此,如果我插入蓝牙设备,手机将自动开始在Google Play音乐中播放。
我们可以通过让Tasker来响应Media Button按键事件来利用这一事实。这样,塔斯克将吸收切换播放/暂停命令,从而防止任何其他应用程序对其做出反应,从而开始播放。现在,这是完成的过程。