Мне нужен мой метод, чтобы запустить SpeechRecognizer и получить его результат. Тем не менее, Намерение не работает таким образом. SpeechRecognizer запускает распознавание только тогда, когда выполнение возвращается к MainActivity.
public List<String> listen() {
SpeechRecognizer speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this.context);
speechRecognizer.setRecognitionListener(new MyRecognitionListener(this));
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
speechRecognizer.startListening(intent);
// I want the recognition to start, run, and end right here
// I want possibleRequests to contain the result of the SpeechRecognizer
return possibleRequests;
}
Другими словами, я хочу, чтобы SpeechRecognizer был синхронным в этом методе. Возможно ли это или мне нужно адаптировать архитектуру моей системы к ограничению Android? Я знаю, что это наивный код.