我有一个相当奇怪的问题。我有一个 Android 应用程序,我使用 SpeechRecognizer 类为其添加语音识别。我创建了实现 RecognitionListener 的类,它只打印每个事件的日志消息。一切看起来都很好。 onReadyForSpeech 被触发,onBeginningOfSpeech 被触发,onEndOfSpeech 被触发。
但是,一个重要的事件不会被触发,onResults :p
所以在夏天,一切看起来都很好,没有抛出异常,并且我收到事件告诉我它已成功启动并停止监听。我是否遗漏了一些额外的 Intent ,告诉 SpeechRecognizer 它需要将结果发送到 onResults 或类似的东西?
我设置 Intent 如下
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
SpeechRecognizer 的完成方式为
SpeechRecognizer speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
我开始听
speech.startListening(intent);
最佳答案
我遇到的问题与问题陈述中所述完全一致。我有两种可用的语音识别服务(Google 和另外一种)。我在内部类中出错了:
private final Handler handler = new Handler();
private final Runnable stopListeningRunnable = new Runnable() {
@Override
public void run() {
speechRecognizer.stopListening();
}
};
我没有将其写在使用它的方法中,而是将其放在内部类的开头。
这会停止对 onResults
的调用。一旦我将其内联到实际使用它的方法中,onResults
就可以正常工作。
希望这对你有帮助..:)
关于java - SpeechRecognizer onResults 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13417675/