重新启动SpeechRecognition时,应用程序“闪烁”

时间:2020-03-30 14:42:10

标签: java android

我正在开发一个应用程序,该应用程序除其他功能外,还允许用户通过语音识别(语音到文本)与之交互。例如,用户说出“联系人”一词,应用程序就可以识别并继续使用其逻辑做某事(即获取联系人列表并提出)。 现在,我使用的是自定义语音识别器,而不是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();
}

任何建议或帮助都将非常有帮助!

0 个答案:

没有答案