找到正在播放或使用蓝牙音乐流的应用程序的包名称

时间:2017-06-12 07:18:07

标签: android audio bluetooth broadcastreceiver a2dp

如何了解正在播放/使用音乐流的应用。当在蓝牙设备上播放或暂停/停止音频时,我能够通过广播接收器BluetoothA2dp接收回叫,并在下面给出广播名称:

android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED

例如。当我通过YouTube或视频播放器在蓝牙设备上播放音乐时,我收到了回复BluetoothA2dp.STATE_PLAYING - BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED 但我无法获得YouTube或视频播放器应用程序包名称。

当蓝牙设备上有来电或拨出电话时,我通过广播接收器BluetoothHeadset收到回叫,下面给出了广播接收器的名称:

android.bluetooth.headset.profile.action.AUDIO_STATE_CHANGED

有没有办法知道在蓝牙设备上播放音乐的包的名称,或者如何获得通过接收者的意图或上下文调用广播接收器的包。

1 个答案:

答案 0 :(得分:0)

  1. 用户必须将手机连接至蓝牙设备
  2. 现在,只要用户通过任何应用程序(如saavn,gaana或任何其他音乐应用程序)在手机上播放音乐,音乐就会在蓝牙设备上播放/播放
  3. 现在将调用广播接收器,该接收器通过 BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED =“android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED”
  4. 进行注册
  5. ACTION_PLAYING_STATE_CHANGED 中,我们通过BluetoothA2dp.EXTRA_STATE获得额外的意向状态
  6. 从额外的状态,我们检查正在播放的音乐或通过 BluetoothA2dp.STATE_PLAYING &的 BluetoothA2dp.STATE_NOT_PLAYING
  7. 如果正在播放音乐,那么我们通过类MediaSessionManager检查当前正在播放音乐的应用/包,例如,如果Saavn,Ganna音乐应用正在播放,那么我们将获得“com.saavn.android”,“com.gaana”< / LI>
  8. 我们需要将receiver的intent传递给manager.getActiveSessions方法,我们将获得MediaController列表
  9. 从MediaController列表中,我们可以获取正在播放音乐的应用程序的包名称,列表的顶级名称是当前播放音乐的包的名称,例如,如果Saavn音乐应用程序正在播放,那么我们将获得“com.saavn.android”