10

即使我设置正确:

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。虽然有重复的问题,但我找不到答案。

我的 Activity 还实现了 OnUtteranceCompletedListener。

请帮忙。

4

1 回答 1

18

在 tts 对象的 onInit 函数内部调用 setOnUtteranceCompletedListener。

如果要在调用 onUtteranceCompleted 函数时对 UI 进行任何更改,请在 runOnUIThread 方法中添加代码。

并且记得在调用 speak() 函数时添加 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);
于 2011-08-19T22:12:14.863 回答