我的音频播放器应用程序当前正在侦听 ACTION_ACL_DISCONNECTED 事件,检查 BluetoothDevice.EXTRA_DEVICE 的意图,并检查设备的类以查看它是否是 BluetoothClass.Device.Major.AUDIO_VIDEO 设备 . 如果是这样,那么我想暂停播放 . 基本上,当蓝牙耳机或汽车连接断开时暂停 .

但是,我错过了一个节拍,蓝牙扬声器不再接收音频,但它仍然连接 . 如果我失去了蓝牙连接(关闭扬声器或走出范围),我的播放暂停,但我不希望它,因为 STREAM_MUSIC 音频实际上是去有线耳机 .

当我收到 ACTION_ACL_DISCONNECTED 时,如何判断该设备是否是当前正在接收音乐流的内容? BluetoothDevice 上有什么东西吗?我可以查询 AudioManager 或其他一些系统服务,以了解哪个设备正在接收音频流并将其与刚收到断开广播的设备进行比较?有任何想法吗?

更新:

我看到AudioManager提供 isBluetoothA2dpOn()isBluetoothScoOn()isSpeakerphoneOn()isWiredHeadsetOn() .

这适用于我的例子 . 如果用户已从蓝牙扬声器切换到有线耳机,则 isBluetoothA2dpOn 返回False,因此我可以忽略断开连接事件 . 但是如果用户从一个蓝牙连接更改为另一个蓝牙连接怎么办 isBluetoothA2dpOn 将返回True但 ACTION_ACL_DISCONNECTED 可能是针对未接收音频的设备?