我知道您可以通过调用来增加考虑输入完成的时间:
intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,5000);
但是,在启动 Android 语音识别活动之后,有没有办法明确地停止它,比如在收到“关键字”之后。
我知道您可以通过调用来增加考虑输入完成的时间:
intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,5000);
但是,在启动 Android 语音识别活动之后,有没有办法明确地停止它,比如在收到“关键字”之后。
@Mike 是对的。
这有效:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(2000));
您已指定 Long。只需输入一个数字(“2000”)就会被解释为一个无效的整数。
您可以通过使用带有自定义 UI的SpeechRecognizer类而不是RecognizerIntent意图来做到这一点。SpeechRecognizer类具有stopListening()方法,一旦用户按下“停止”按钮,您就可以显式调用该方法。
另一种尝试的方法是使用 EXTRA_PARTIAL_RESULTS 请求部分结果,并在RecognitionListener的onPartialResults回调中搜索您的“停止关键字” ,然后在检测到时使用stopListening()。
找到了!=)
您可以.stopListening()
在SpeechRecognizer object
.
SpeechRecognizer hear = NULL;
//set up the recognizer and intent
hear.stopListening();
我把它放在一个 Runable 中,这样我就可以控制它结束语音输入之前的时间,如果语音输入结束,我删除了该 Runnable 的回调,这样它就不会尝试停止已经停止的语音输入(或造成附带损害并结束之后调用的语音输入)