2011-07-11 53 views
10

即使我正確設置它:onUtterance完成不會被調用?

HashMap<String, String> myHashRender = new HashMap<String, String>(); 
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utid"); 
mTts.speak("Speak something", TextToSpeech.QUEUE_ADD, myHashRender); 

mTts.setOnUtteranceCompletedListener(this); 
在OnInit函數返回成功

。 仍然onUtteranceCompleted不會被調用。雖然有重複的問題,但沒有我能找到答案的地方。

我的活動還實現了OnUtteranceCompletedListener。

請幫忙。

+0

您可以驗證語音生成(您可以聽到它)? – Ian

回答

18

在tts對象的onInit函數內調用setOnUtteranceCompletedListener。

如果要在onUtteranceCompleted函數的調用中對UI進行任何更改,請將代碼添加到runOnUIThread方法中。

而且千萬要記得添加HashMap的參數值的方式,而調用說話()函數

例子:

TextToSpeech tts= new TextToSpeech(context, new OnInitListener() { 

@Override 
public void onInit(int status) { 

    mTts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() { 

     @Override 
     public void onUtteranceCompleted(String utteranceId) { 

      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
       //UI changes 
       } 
      }); 
     } 
    }); 

} 
}); 


HashMap<String, String> params = new HashMap<String, String>(); 

params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"stringId"); 

tts.speak("Text to Speak",TextToSpeech.QUEUE_FLUSH, params); 
相關問題