Можно ли начать действие и получить его результат в рамках одного метода? - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужен мой метод, чтобы запустить 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? Я знаю, что это наивный код.

...