2011-07-11 19 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); 
相关问题