Android SpeechRecognizer не запускается снова

Я знаю, как работает SpeechRecognizer в Android. У меня есть требование, что через некоторое время мне нужно вызвать метод SpeechRecognizer.stopListening () . Но после этого, когда я снова начну слушатель, это не сработает.

Код для запуска SpeechRecognizer

private void promptSpeechInput() { /* Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.speech_prompt)); try { startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); } catch (ActivityNotFoundException a) { Toast.makeText(getApplicationContext(), getString(R.string.speech_not_supported), Toast.LENGTH_SHORT).show(); } */ speechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); speechIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, context.getPackageName()); // for more: https://stackoverflow.com/questions/7973023/what-is-the-list-of-supported-languages-locales-on-android /*intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en_IN"); */ speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); speechIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); speechIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 200); speechIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(5000)); speechIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(5000)); speechIntent.putExtra("android.speech.extra.DICTATION_MODE", false); speechIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, false); /* intent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR"); intent.putExtra("android.speech.extra.GET_AUDIO", true); */ sr.startListening(speechIntent); } 

Через несколько секунд я использую

 sr.stopListening(); 

И после получения результатов в onResults я пытаюсь запустить его снова, используя

 sr.startListening(speechIntent); 

но он не работает. Что я должен сделать, чтобы он работал?

РЕДАКТИРОВАТЬ

если я вызываю promptSpeechInput (); метод снова вместо sr.startListening (speechIntent); он SpeechRecognizer.ERROR_RECOGNIZER_BUSY раз SpeechRecognizer.ERROR_RECOGNIZER_BUSY ошибку SpeechRecognizer.ERROR_RECOGNIZER_BUSY .

Вам нужно будет снова настроить RecognitionListener на эту работу. Как ни странно это звучит, каждый раз, когда вам нужно прослушивать сброс пользователя и снова устанавливать слушателя, чтобы он работал.

Если вы ищете быстрое решение, вы можете попробовать DroidSpeech , который заботится обо всех тяжелых грузовиках . С несколькими строками кода вы сможете быстро распознать распознавание речи.

 DroidSpeech droidSpeech = new DroidSpeech(this, null); droidSpeech.setOnDroidSpeechListener(this); 

Чтобы начать прослушивать вызов пользователя с помощью приведенного ниже кода,

 droidSpeech.startDroidSpeechRecognition(); 

И вы получите результат голоса в методе слушателя,

 @Override public void onDroidSpeechFinalResult(String finalSpeechResult, boolean droidSpeechWillListen) { // Do whatever you want with the speech result }