Google语音识别器无法在Android 4.x上启动
作者:互联网
我偶然发现了这个随机问题…
这是我的代码
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(mContext);
initializeRecognitionListener();
mSpeechRecognizer.setRecognitionListener(mRecognitionListener);
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_LANGUAGE, "en-US");
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, Long.valueOf(3000L));
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
mSpeechRecognizer.startListening(intent);
方法initializeRecognitionListener():
private void initializeRecognitionListener() {
mRecognitionListener = new RecognitionListener() {
@Override
public void onReadyForSpeech(Bundle params) {
Log.d("onReadyForSpeech()", "onReadyForSpeech!");
isRecognizing = true;
}
@Override
public void onBeginningOfSpeech() {
Log.d("onBeginningOfSpeech()", "onBeginningOfSpeech!");
}
@Override
public void onEndOfSpeech() {
Log.e("onEndOfSpeech()", "onEndOfSpeech! stop SCO");
}
...
}
在mSpeechRecognizer.startListening(intent)之后,有时不会调用“ onReadyForSpeech()”和“ onBeginningOfSpeech()”方法的主要问题.同样也不能调用“ onEndOfSpeech()”.
我将Nexus 4与Android 4.2.2结合使用
解决方法:
我在另一篇文章中发表了非常相似的答案:
这是一个Google语音搜索/果冻Bean错误,已存在outstanding on the AOSP bug tracker for nearly a year.
我也张贴了Google Product Forum about it here,但没有回应.如果您正在阅读本文档,并希望解决这些问题,请给AOSP问题加注星标,并在“产品论坛”上发表评论以引起注意!
要变通解决此问题,您将需要实现such as the one demonstrated here.
在今天的测试中,看来Google最新版本确实在内部解决了此问题-因此,请在Play商店中更新Google搜索,此问题可能会消失-如果情况并非如此,请在下面做评论,因为它可能仅在某些版本的Google搜索apk中已修复,在这种情况下,最好知道这些变体在哪里出现,以便在我们的代码中正常处理它们!
标签:speech-recognition,android 来源: https://codeday.me/bug/20191123/2064601.html