我是蓝牙设备开发的新手。我目前的项目需要一个功能,使用蓝牙耳机在线聊天。当用户想要开始交谈时,他应该只按一次呼叫按钮(蓝牙耳机上的一个按钮)。但是,当我按下耳机上的按钮时,我创建的BroadcastReceiver对象似乎无法接收任何广播。下面是我初始化BroadcastReceiver的方式:
IntentFilter filter = new IntentFilter(BluetoothHeadset.ACTION_VENDOR_SPECIFIC_HEADSET_EVENT);
BroadcastReceiver event_Receiver = new BroadcastReceiver(){String cmd=intent.getStringExtra(BluetoothHeadset.EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD);};
registerReceiver(event_Receiver, filter);但是,可以通过使用AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED设置intentfilter来接收连接状态广播。
我读过几篇文章,提到常量ACTION_VENDOR_SPECIFIC_HEADSET_EVENT在Jelly中不起作用。那么,你们知道从蓝牙耳机中获取按钮按下事件的其他方法吗?
更新:我从source.google.com上读取了手机应用程序的源代码。在包broadcastVendorSpecificEventIntent().中,我发现了以下方法: com.android.phone.BluetoothHandsfree所以系统确实广播了AT命令的意图。但是在我的应用程序中,我仍然不能接收这种广播,我猜想系统接收器已经消耗了BLuetoothHandsfree对象发送的广播。有人知道如何设置比系统接收器更高的优先级来检索这种广播吗?
顺便说一句,我已经通过设置setPriority()来尝试类IntentFilter中的Integer.Max_Value ()方法,但是它没有起作用。
发布于 2015-07-30 19:20:18
我必须为供应商添加分类。
https://stackoverflow.com/a/31732154/2751981
这就是我如何让ACTION_VENDOR_SPECIFIC_HEADSET_EVENT正常工作的方法。
https://stackoverflow.com/questions/17671795
复制相似问题