2

如何知道哪个应用正在播放/使用音乐流。当音频在蓝牙设备上播放或暂停/停止时,我可以通过广播接收器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

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

4

1 回答 1

0
  1. 用户必须将手机连接到蓝牙设备
  2. 现在,每当用户通过任何应用程序(如 saavn、gaana 或任何其他音乐应用程序)在移动设备上播放音乐时,音乐都会在蓝牙设备上流式传输/播放
  3. 现在将调用通过操作BluetoothA2dp.ACTION_PLAYING_STATE_CHANGED = “android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED”注册的广播接收器
  4. ACTION_PLAYING_STATE_CHANGED我们通过 BluetoothA2dp.EXTRA_STATE 获得额外的意图状态
  5. 从额外的状态,我们通过BluetoothA2dp.STATE_PLAYINGBluetoothA2dp.STATE_NOT_PLAYING检查正在播放或停止的音乐
  6. 如果正在播放音乐,那么我们通过 MediaSessionManager 类检查当前正在播放音乐的应用程序/包,例如,如果正在播放 Saavn、Ganna 音乐应用程序,那么我们将得到“com.saavn.android”、“com.gaana”</li>
  7. 我们需要将接收者的意图传递给 manager.getActiveSessions 方法,我们将获得 MediaController 的列表
  8. 从 MediaController 列表中,我们可以得到正在播放音乐的应用程序的包名,列表的顶部名称是当前正在播放音乐的包的名称,例如,如果 Saavn 音乐应用程序在顶部播放,那么我们将得到“ com.saavn.android”</li>
于 2018-02-19T07:29:42.890 回答