我有以下接收器(非常简单):
bluetoothReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) {
stopMusic();
}
}
};
ctx.registerReceiver(bluetoothReceiver, new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED));
许可:
<uses-permission android:name="android.permission.BLUETOOTH" />
我想做的是在BT耳机断开时停止音乐。它起作用,但是响应时间不好 - 音乐从设备持续大约一秒钟,直到接收器检测到事件。我检查了Youtube应用程序,这种情况几乎立即起作用,没有播放设备扬声器中的任何音乐。知道如何实现广播接收器立即检测ACTION_ACL_DISCONNECTED
吗?
答案 0 :(得分:1)
选项1:尝试为您正在创建的IntentFilter设置更高的优先级
ItentFilter intentFilter= new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);
intentFilter.setPriority(999) /// highest possible priority value
ctx.registerReceiver(bluetoothReceiver, intentFilter);
应在应用程序代码
之前执行具有更高优先级的过滤器See the android documentation for further information.
选项2:如果广播接收器仍然没有立即检测到ACTION_ACL_DISCONNECTED并且设备仍然在短时间内播放音乐,您还可以尝试设置一个侦听音频输出是否正在改变的intentfilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY )。在这里你也可以阻止设备播放音乐。