Чтобы вызвать действие после того, как текст произнесен в текущем действии в приложении Android для преобразования текста в речь - PullRequest
0 голосов
/ 02 сентября 2011

Я новичок в Android.Может ли кто-нибудь помочь мне со следующим требованием;вызвать действие после завершения речи текущей деятельности.

Текст действия 2 читается после завершения действия 1, но действие 2 запускается до завершения текста действия 1.В этом высказывании id также не идентифицирован.

Код, который я написал, выглядит следующим образом.Любая помощь будет оценена.Благодарю.

 public void onInit(int status) {       
    if (status == TextToSpeech.SUCCESS) {

        String text= tt.getText().toString();
        if (text!=null && text.length()>0) {
     Toast.makeText(activity1.this, "Speaking: " + text, Toast.LENGTH_LONG).show();

     tts.setOnUtteranceCompletedListener(this);
     HashMap<String, String> myHash = new HashMap();

     tts.speak(text, TextToSpeech.QUEUE_ADD, myHash);
     myHash.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,
    "completed");

     } 
    else if (status == TextToSpeech.ERROR) {
        Toast.makeText(Fossils.this,
                "Error occurred while initializing Text-To-Speech engine", Toast.LENGTH_LONG).show();
    }

    }

}
public void onUtteranceCompleted(String t) {

    if(t == "completed"){
  Intent i = new Intent(this, activity2.class);
    startActivity(i);
    }
 }   

1 Ответ

0 голосов
/ 02 сентября 2011

У вас неправильный порядок в вашем коде: вам нужно put в HashMap перед вызовом speak.Попробуйте это:

tts.setOnUtteranceCompletedListener(this);
HashMap<String, String> myHash = new HashMap();
myHash.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "completed");
tts.speak(text, TextToSpeech.QUEUE_ADD, myHash);
...