Как использовать несколько обработчиков postDelayed внутри переключателя для отображения изображений - PullRequest
0 голосов
/ 14 января 2020

Я разрабатываю приложение для распознавания речи, которое будет отображать картинку, если я скажу несколько определенных слов. В настоящее время я использую обработчик postDelayed в каждом случае, поэтому есть некоторые задержки между каждым изображением. Проблема в том, что если я скажу 2 или более слов, появится только последняя картинка. Вот код:

private void imageLoader(String resultSpeech){
    final Handler handler = new Handler();
    String[] resultSplit = resultSpeech.split("\\s");
    for (int i=0; i < resultSplit.length; i++) {
        switch(resultSplit[i]) {
            case "hello":
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadImage("www.example.com/hello.jpg");
                    }
                }, 3000);
                break;

            case "bye":
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadImage("www.example.com/bye.jpg");
                    }
                }, 3000);
                break;
            }
        }
    }

Этот код предназначен для результата распознавания речи:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case REQ_CODE_SPEECH_INPUT: {
            if (resultCode == RESULT_OK && null != data) {

                ArrayList<String> result = data
                        .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                txtSpeechInput.setText(result.get(0));
                String resultSpeech = result.get(0);
                imageLoader(resultSpeech);
            }
            break;
        }
    }
}
...