2012-02-19 76 views
1

我正在从事文本到语音的应用,onUtteranceCompleted从未触发。 这是我的一些代码:Android文本到语音:onUtteranceCompleted()未解锁

public class MyActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener { 

     private TextToSpeech tts; 
     private HashMap<String, String> hashAudio; 

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

       //defining hashAudio, its music! 
       this.hashAudio = new HashMap<String, String>(); 
       this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); 
       this.tts.setOnUtteranceCompletedListener(this); 

       this.readEnglish(); 
      } 
     } 


    public void readEnglish(){ 
      Log.v("MESSAGE", "reading english"); //gets shown 

      this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "english"); 
      this.tts.setLanguage(Locale.US); 
      this.tts.speak("TEST", TextToSpeech.QUEUE_FLUSH, this.hashAudio); 
      //gets read 
     } 

    public void onUtteranceCompleted(String uttId) { 
      Log.v("MESSAGE", "Uterrance Completed"); 
      //never see this message 
     } 

有人会知道为什么吗?我已经通过几个主题在了这里有一些解决方案,但没有工作:(。我也仔细阅读了Android文档:(。

谢谢

回答

3

好了,所以我想通了我自己,在我的代码的唯一问题是,HashMap的实例化后

this.tts.setOnUtteranceCompletedListener(this); 

被称为所以最终代码应该是这样的:

this.tts.setOnUtteranceCompletedListener(this); 
this.hashAudio = new HashMap<String, String>(); 
this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_STREAM,String.valueOf(AudioManager.STREAM_MUSIC));