【问题标题】:onUtteranceCompleted does not get called?onUtteranceCompleted 没有被调用?
【发布时间】:2011-07-11 04:55:46
【问题描述】:

即使我设置正确:

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。

请帮忙。

【问题讨论】:

  • 您能否验证正在生成语音(您可以听到)?

标签: android text-to-speech onutterancecompleted


【解决方案1】:

在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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2019-03-31
    • 2012-12-16
    相关资源
    最近更新 更多