蓝牙接收器响应时间

时间:2018-01-09 18:37:37

标签: android bluetooth broadcastreceiver

我有以下接收器(非常简单):

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吗?

1 个答案:

答案 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 )。在这里你也可以阻止设备播放音乐。

Android documentation