onStartListening何时被调用?

时间:2014-05-14 18:12:45

标签: java android service speech-recognition voice-recognition

我正在开发一个Android应用程序,它基本上是将语音转换为文本作为后台进程的服务,我从How to register a custom speech recognition service?获得了帮助,但我无法知道何时调用onStartListening()

签名:

protected void onStartListening(Intent recognizerIntent, Callback listener)

任何人都可以帮助或帮助我在该链接中给出的代码中添加更多语句,以便我能够将语音识别为文本并在吐司中显示它吗?

1 个答案:

答案 0 :(得分:0)

一般来说,有两种应用程序:

  • 引导用户将音频转换为文本的应用程序,但实际上并未实现语音识别部分,只是执行UI部分(麦克风按钮,VU可视化工具)(让我们称之为 app1 );
  • 实际上将音频转换为文本的应用程序,无论是在设备上还是通过调用云服务,并使自己可用于 app1 ,它们会扩展RecognitionService(我们称之为< EM> APP2 )。

既然你提到“吐司”(即一个UI元素),我想你想实现 app1

app1 需要执行以下操作:

Intent intent = ...
SpeechRecognizer recognizer = ...
recognizer.setRecognitionListener(new RecognitionListener() { ... });
recognizer.startListening(intent)

根据指定的意图并考虑用户设置,Android会找到合适的 app2 来服务 app1

app2 扩展了抽象类RecognitionService,即它需要实现一堆方法,其中包括onStartListening。当 app1 调用startListening时,Android会调用后者。

作为 app1 的作者,您只需要使用各种意图附加功能向识别器提供输入详细信息,使用接口{{1}的方法提供识别器输出的处理。使用RecognitionListener启动 app2