我试图了解 RecognitionService 和 RecognitionService.Callback 的功能。我对这个框架很陌生,想知道如何在 RecognitionService 中调用 onStartListening() 函数。我看到了帖子 How to register a custom speech recognition service? 但我已经在所有主要函数中插入了日志消息,以查看何时调用哪个函数。
我还查看了 sdk 中的示例应用程序,但它在解释事情如何发生方面做得非常糟糕。我想从 Activity 中调用 startService。
我使用以下 Intent
Intent startServiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
startServiceIntent.setClass(this, SimpleVoiceService.class);
startService(startServiceIntent);
有人可以帮助我完成这项工作。如果有人可以向我指出有关此的教程,或者描述如何执行此操作的一般流程,那就太好了。
非常感谢。
最佳答案
基本思路是使用SpeechRecognizer
连接用户在一般Android设置中选择的RecognitionService
。
SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(context);
sr.setRecognitionListener(new RecognitionListener() {
@Override
public void onResults(Bundle b) { /* ... */ }
// other required methods
});
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "");
sr.startListening(intent);
您必须提供
RecognitionListener
-methods 的实现,允许您更新 UI 以响应语音识别事件(用户开始说话、部分结果可用、用户停止说话、转录仍在进行、发生错误等) .请参阅某些键盘应用程序的源代码中的完整实现,例如VoiceInput class in Hacker's Keyboard 。