Android不广播蓝牙操作\u音频\u状态\u一致更改
我正在尝试让我的Android VoIP应用程序与蓝牙耳机配合使用 我已经根据耳机配置文件上的文档设置了所有内容(获取默认的蓝牙适配器,查询耳机配置文件代理并设置配置文件侦听器)。我还设置了一个广播接收器来监听蓝牙事件。当我看到一个设备已连接(Android不广播蓝牙操作\u音频\u状态\u一致更改,android,bluetooth,Android,Bluetooth,我正在尝试让我的Android VoIP应用程序与蓝牙耳机配合使用 我已经根据耳机配置文件上的文档设置了所有内容(获取默认的蓝牙适配器,查询耳机配置文件代理并设置配置文件侦听器)。我还设置了一个广播接收器来监听蓝牙事件。当我看到一个设备已连接(BluetoothHeadset.ACTION\u CONNECTION\u STATE\u CHANGED通过状态BluetoothHeadset.STATE\u connected)广播时,我在新连接的设备上调用startVoiceRecognitio
BluetoothHeadset.ACTION\u CONNECTION\u STATE\u CHANGED
通过状态BluetoothHeadset.STATE\u connected
)广播时,我在新连接的设备上调用startVoiceRecognition()
稍后,当我希望设置呼叫时,我调用AudioManager bluetoothSCO函数:
if(shouldTurnBluetoothOn){
am.setBluetoothScoOn(true);
am.startBluetoothSco();
}else{
am.stopBluetoothSco();
am.setBluetoothScoOn(false);
}
我已确保我的音频模块已初始化为与bluetooth SCO兼容:也就是说,我的AudioTrack
已使用AudioManager.STREAM\u VOICE\u CALL
以8KHz进行初始化,而AudioRecord
使用android.media.MediaRecorder.AudioSource.MIC
并以8KHz进行采样
现在的问题是,这并不是始终如一的
根据Android文档中的startVoiceRecognition()
:
用户可以收听操作\音频\状态\更改。如果这个函数
返回true,此意图将在“额外_状态”设置为的情况下广播
状态\音频\正在连接
尽管对startVoiceRecognition()的调用总是返回true,但我并不总是看到这种广播。当我看到广播时,蓝牙似乎能工作
怎么回事?我已经在Nexus5和棒棒糖上运行了我的应用程序,也在安卓4.4上运行了S3 在意图过滤器中使用以下操作:
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED
BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED
BluetoothDevice.ACTION_ACL_CONNECTED
BluetoothDevice.ACTION_ACL_DISCONNECTED
并添加类别intentFilter.addCategory(蓝牙耳机.供应商\特定耳机\事件\公司\ ID \类别+“+”+蓝牙指定号码.PLANTRONICS)代码>