1

在我们了解细节之前,先介绍一下背景:

  • 车型:Nissan Note(英国 2011 车型)
  • 设备:Nexus 4
  • 操作系统:Android 4.3 库存

当手机通过蓝牙连接时,我正在尝试创建一个应用程序来在我的汽车中进行语音识别和合成。汽车音响系统不提供自己的语音识别,而是通过触发意图 android.intent.action.VOICE_COMMAND 将其委托给手机

设备上用于处理此问题的默认应用程序是 Google 搜索应用程序,它具有免提拨号的特定活动。这个应用程序的语音识别很糟糕,但确实演示了系统应该如何工作 - 激活后,汽车在应用程序运行时在手机屏幕上显示“语音识别激活”,然后在应用程序退出时将其隐藏。

我遇到的问题是,虽然我可以通过调用 AudioManager.startBluetoothSco() 来显示此标签,从而通过汽车扬声器播放音频并通过汽车麦克风录制,但 AudioManager.stopBluetoothSco() 不会在汽车中禁用此模式,并且它仍然显示“语音识别激活”。这是一个问题,因为在蓝牙连接关闭并重新打开之前,汽车不会启动应用程序。

我的实验已经证实是 AudioManager.startBluetoothSco() 启用了汽车中的模式,并且 AudioManager.stopBluetoothSco() 似乎具有改变汽车产生的环境声音的效果(当启动时通常会听到非常微弱的嘶嘶声)发出此命令时,音频系统处于活动状态将停止)但看不到其他效果。

我不确定是否通过调用 AudioManager.startBluetoothSco() 隐式激活了其他东西,然后必须隐式停止,但我目前不知道该尝试什么。

4

1 回答 1

2

经过大量研究后,我发现了这个:http: //developer.android.com/reference/android/bluetooth/BluetoothHeadset.html#stopVoiceRecognition%28android.bluetooth.BluetoothDevice%29 这似乎与问题有关。在适当地调用 startVoiceRecognition 和 stopVoiceRecognition 之后,事情似乎恢复到正常状态。

于 2013-08-20T15:51:14.273 回答