我正在开发一个应用程序,该应用程序除其他功能外,还允许用户通过语音识别(语音到文本)与之交互。例如,用户说出“联系人”一词,应用程序就可以识别并继续使用其逻辑做某事(即获取联系人列表并提出)。 现在,我使用的是自定义语音识别器,而不是Google随警报对话框提供的语音识别器。 我也有一些颜色的动画渐变背景。 从RecognitionListener我们得到一个错误作为响应,或者从方法onResults(Bundle results)获得结果。在这两种情况下,响应之后,我都需要重新启动侦听器,以便用户继续与应用程序进行交互。但是,当我的SpeechRecognition被销毁并再次创建时,我的应用程序“闪烁”(非常黑屏,但随后Ui恢复正常)。 我知道问题正在发生,因为我试图销毁我的SpeechListener,然后重新创建它(通过调用函数restartSpeechListener),但是我似乎找不到解决此“闪烁”的方法。 以下是我的SpeechRecognizer启动和重新启动的代码:
public void startRecognising() {
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
mySpeechRecogniser listener = new mySpeechRecogniser();
Intent mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,
"el");
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
this.getPackageName());
mSpeechRecognizer.setRecognitionListener(listener);
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
startActivity(mSpeechRecognizerIntent);
}
// Restart speech recogniser
public void restartSpeechListener() {
mSpeechRecognizer.stopListening();
mSpeechRecognizer.destroy();
startRecognising();
}
任何建议或帮助都将非常有帮助!