首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onUtteranceCompleted是在模拟器上触发的,而不是在硬件上触发的。

onUtteranceCompleted是在模拟器上触发的,而不是在硬件上触发的。
EN

Stack Overflow用户
提问于 2012-02-15 19:13:48
回答 1查看 143关注 0票数 0

我不能让我的onUtteranceCompleted()在我的GalaxyNexus4.0.2上被解雇。我使用api 8、10和15的模拟器会触发onUtteranceCompleted()

编辑:嗯..。上面的陈述在大多数情况下都是正确的,我只是让它在我的硬件4.0.2上工作。然后我关闭了它,并再次启动它,onUtteranceCompleted()再次触发了而不是。昨天(在一些代码更改之前)发生了同样的事情,所以90%的时间都无法工作。搞不懂;

编辑2:FYI: mTts.setOnUtteranceCompletedListener(this);返回TextToSpeech.SUCCESS

这是我的代码:

代码语言:javascript
复制
(...)
    public void onInit(int status) {            
mTts.setOnUtteranceCompletedListener(this);

if (status == TextToSpeech.SUCCESS) {    
    int result = mTts.setLanguage(Locale.US);
    if (result == TextToSpeech.LANG_MISSING_DATA ||
        result == TextToSpeech.LANG_NOT_SUPPORTED) {
        Log.e(TAG, "Language is not available.");
    } else {
        TTSAusgabe.setEnabled(true);
    }
} else {
    Log.e(TAG, "TTS failed");
}    
}


SayText() {  (....)
MundAnimation.start();
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utterance");
mTts.speak("Ma Text", TextToSpeech.QUEUE_FLUSH, params);
  } 
}


// That's the bad boy!
public void onUtteranceCompleted(String utterance) 
{
MundAnimation.stop();
    //startVoiceRecognitionActivity();
System.out.println("drin"); 
}
(...)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-01 13:36:40

由于您的问题只在有时发生,所以问题必须是由于TextToSpeech初始化的异步性质造成的。有时,当我的代码在调用TextToSpeech ()之前设置TextToSpeech的一个属性时,我看到了onInit失败。

我怀疑您在TextToSpeech调用onInit()之前激活了onInit()。这种情况只会发生几次。

看起来,您有正确的代码在onUtteranceCompletedListener ()期间设置onInit(),但这可能也有时间问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9299711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档