我正在尝试使用ML18 bluetooth headset (by plantronics)在Android上使用自定义应用程序进行连续语音识别。我已经设法通过使用here发布的答案摆脱手机产生的哔声,并设法使用this将所有其他媒体路由到我的蓝牙设备。
然而,每当我拨打SpeechRecognizer.startListening
时,我的蓝牙设备仍然会发出哔哔声。
有什么我可以做的,或者这可能是硬连线到蓝牙设备的软件?
如果您想查看特定的代码部分,请与我们联系。但是,我认为它并不重要,因为上面的两个链接已经涵盖了与我最相关的代码。提前谢谢!
编辑:基于以下评论,我已将我的代码修改为以下内容:
开始监听只是将所有流静音,但警报流静音(通过再次取消静音所有流来撤消)。
public void startListening() {
if (canListen) {
Log.v(TAG, "Starting Listening");
Intent recognizerIntent = createRecognizerIntent();
recognizer.cancel();
recognizer.startListening(recognizerIntent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
((AudioManager) getApplicationContext().getSystemService(
Context.AUDIO_SERVICE)).setStreamSolo(
AudioManager.STREAM_ALARM, true);
}
}
}
蓝牙接收器在连接设备时执行此操作:
AudioManager localAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
localAudioManager.setMode(AudioManager.MODE_NORMAL);
localAudioManager.setBluetoothScoOn(true);
localAudioManager.startBluetoothSco();
然后在ACTION_SCO_AUDIO_STATE_UPDATED
中将模式设置为AudioManager.MODE_IN_CALL
。
目前的行为如下: 当我第一次启动应用程序并连接蓝牙设备,以及触发连续识别循环时,所有工作都按预期工作。然后在发出第一个回复后(使用TTS),蜂鸣声返回...再次,任何帮助将不胜感激:)