2017-03-28 4 views
0

Ich versuche, die speak Methode der Klasse TextToSpeech mehrmals zu nennen, aber es scheint nicht zu funktionieren - es spricht nur die letzte Phrase jedes Mal.wie man spricht mehrmals sprechen

String temp="ABCD";   
ss(temp);   
String temp1="WXYZ";   
ss(temp1);   
public void ss(String t){   
    tts.speak(t, TextToSpeech.QUEUE_FLUSH, null);  
} 

tts ist ein Objekt der Klasse TexttoSpeech Methode.

+0

Vielleicht beginnt es, 'temp' zu sprechen, und Sie sagen sofort, dass es' temp1' spricht, und es beginnt, 'temp1' zu sprechen, ohne" temp "zu beenden? Wenn dies der Fall ist, fügen Sie eine Verzögerung zwischen den Aufrufen hinzu, indem Sie [Thread.sleep (ms)] verwenden (https://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html); – sudo

Antwort

0

Ihre Frage erklärt nicht, wenn mehrere Zeit simultany ist oder jedes Mal 5 Sekunden zum Beispiel, aber können Sie versuchen:

Thread thread = new Thread(new Runnable() { 
 
       @Override 
 
       public void run() { 
 
        ss("string text"); 
 
       } 
 
      }); 
 
      thread.start();

0

Wechsel:

tts.speak(t, TextToSpeech.QUEUE_FLUSH, null); 

. ..zu ...

tts.speak(t, TextToSpeech.QUEUE_ADD, null); 

FLUSH hört immer auf, was gerade gesprochen wird, und löscht den Puffer. HINZUFÜGEN fügt den neuen Text zur Warteschlange hinzu.