Я знаю, что вы можете увеличить количество времени, чтобы рассмотреть ввод завершен, позвонив:
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));
У вас есть длинный. Просто поместить число ( "2000" ) интерпретируется как целое, что недопустимо.
Вы можете сделать это, используя класс SpeechRecognizer с пользовательским интерфейсом вместо RecognizerIntent. SpeechRecognizer класс имеет stopListening() метод вы можете вызывать явно, как только пользователь нажимает кнопку "Стоп".
Другой способ попробовать - запросить частичные результаты с помощью EXTRA_PARTIAL_RESULTS и выполнить поиск ключевого слова "stop" в RecognitionListener onPartialResults обратный вызов, затем stopListening(), когда он обнаружен.