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