0

항상 마지막 요소를 말하십시오. 하지만 먼저 방글라데시에서 인도로 말하기를 원한다면 Barma는 마침내 Tanana를 말합니다. 내 코드를 실행하면 항상 Tanana를 말합니다.TTS가 안드로이드의 IU 스레드에서 제대로 루핑되지 않습니까?

내 코드 :

int wordNumber=0; 
String[] splitspeech = { "Bangladesh", "India", "Barma", 
         "Banana", "Tanana" }; 
       do { 
        reader(splitspeech[wordNumber]); 
        wordNumber++; 
       } while (wordNumber < splitspeech.length); 


public void reader(final String msg) { 
     Log.e("reader output:", "msg:" + msg); 
     TextToSpeech textReader = new TextToSpeech(getApplicationContext(), 
       new OnInitListener() { 

        @Override 
        public void onInit(int status) { 
         HashMap<String, String> map = new HashMap<String, String>(); 
         map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, 
           "Hello"); 

         textReader.speak(msg, 

         TextToSpeech.QUEUE_FLUSH, map); 

        } 
       }); 
    } 

그 구현 방법은 루프에 따라 이야기입니다. 그것은 fisrt가 방글라데시를 의미하고 마지막으로 Tanana (마지막 요소)를 의미하는 첫 번째 요소를 말하는 것을 의미합니다. 도와주세요. 나는 쉽지 않은지 모른다. 그러나 그것은 나를 위해 매우 복잡합니다. 도와주세요. 감사합니다

답변

1

QUEUE_FLUSH 대신 QUEUE_ADD을 사용하십시오. 이런 방식으로 TTS 대기열을 지우고 있습니다.