Как запустить распознаватель речи перед всеми другими задачами в Java таким образом, чтобы, только если вывод содержит начало, программа продолжается - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть страница входа и страница регистрации в моей программе.Я хочу запустить его, только если пользователь говорит начать.Эти страницы вызываются в основном методе моего класса, и у меня есть класс распознавателя речи.Я хочу, чтобы программа продолжалась только тогда, когда String output.contains("begin") == true

Я попытался поместить Class.main(args) в мой if(output.contains("begin") == true)) случай, возникло необработанное исключение, и когда я окружил этот раздел с помощью try и catch, онне работает.

Мне сказали, что наследование и реализация классов из моего API будет работать, но я не совсем уверен, как это сделать.

final Microphone mic = new Microphone(FLACFileWriter.FLAC);
GSpeechDuplex duplex = new GSpeechDuplex("AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw");            
duplex.setLanguage("en");
duplex.addResponseListener(new GSpeechResponseListener() {
    String old_text = "";

    public void onResponse(GoogleResponse gr) {
        String output = gr.getResponse();
        if (gr.getResponse() == null) {
            this.old_text = response.getText();
            if (this.old_text.contains("(")) {
                this.old_text = this.old_text.substring(0, 
                this.old_text.indexOf('('));
            }                
            System.out.println("Paragraph Line Added");
            this.old_text = ( response.getText() + "\n" );
            this.old_text = this.old_text.replace(")", "").replace("( ", "");                
            response.setText(this.old_text);

        }
        if (output.contains("(")) {
            output = output.substring(0, output.indexOf('('));
        }
        if (!gr.getOtherPossibleResponses().isEmpty()) {
            output = output + " (" + (String) 
            gr.getOtherPossibleResponses().get(0) + ")";
        }
        response.setText("");
        response.append(this.old_text);
        response.append(output);

        System.out.println(output);

        if(output.contains("begin") == true){
            duplex.stopSpeechRecognition();
            mic.close();
            Trying_Different_Languages t = new Trying_Different_Languages();
            frame.dispose();
        }
    }
});

Ожидайте программуначинать, когда я говорю начать, но это не начинается, когда я говорю начинать.Операторы try и catch просто помогают в безошибочной компиляции.

1 Ответ

0 голосов
/ 30 декабря 2018

В программе должен существовать только метод 1 public static void main(String[] args).Это индикатор, который сообщает вам, что программа запускается.

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

Подробнееэто может выглядеть так:

public class SomeClass {
    public static void someMethodName() {
        //some stuff you want to execute
    }
}

Так и где вы хотите выполнить код:

...
SomeClass.someMethodName(); //executes the stuff you want.

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

...