在我们讨论细节之前,先来介绍一下背景:
我试图创建一个应用程序,在我的车里进行语音识别和合成,而手机是通过蓝牙连接的。汽车音频系统不提供自己的语音识别,而是通过触发意图android.intent.action.VOICE_COMMAND将其委托给电话
设备上用于处理这一问题的默认应用程序是Google搜索应用程序,它有一个特定的活动,用于无手拨号。这个应用程序的语音识别能力很差,但它确实演示了系统应该如何工作--当应用程序运行时,汽车在手机屏幕上显示“语音识别活动”,然后在应用程序退出时隐藏它。
我遇到的问题是,虽然我可以通过调用AudioManager.startBluetoothSco()来显示这个标签,从而通过汽车扬声器播放音频并通过汽车麦克风记录它,但是AudioManager.stopBluetoothSco()并没有在汽车中禁用此模式,它仍然显示“语音识别活动”。这是一个问题,因为汽车将不会启动应用程序,直到蓝牙连接已经关闭和重新打开。
我的实验已经证实,是AudioManager.startBluetoothSco()启用了汽车中的模式,而且AudioManager.stopBluetoothSco()似乎具有改变汽车产生的环境声音的效果(当发出此命令时,通常在音频系统处于活动状态时听到的非常微弱的嘶嘶声将停止),但没有看到其他效果。
我不确定是否通过调用AudioManager.startBluetoothSco()隐式地激活了其他东西,然后必须隐式停止该调用,但我目前还没有什么可尝试的想法。
发布于 2013-08-20 15:51:14
经过更多的研究后,我发现了这样的问题:http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html#stopVoiceRecognition%28android.bluetooth.BluetoothDevice%29,它似乎与问题有关。在适当地调用startVoiceRecognition和stopVoiceRecognition之后,事情似乎恢复到了正常状态。
https://stackoverflow.com/questions/18324584
复制相似问题