我不能让我的onUtteranceCompleted()在我的GalaxyNexus4.0.2上被解雇。我使用api 8、10和15的模拟器会触发onUtteranceCompleted()。
编辑:嗯..。上面的陈述在大多数情况下都是正确的,我只是让它在我的硬件4.0.2上工作。然后我关闭了它,并再次启动它,onUtteranceCompleted()再次触发了而不是。昨天(在一些代码更改之前)发生了同样的事情,所以90%的时间都无法工作。搞不懂;
编辑2:FYI: mTts.setOnUtteranceCompletedListener(this);返回TextToSpeech.SUCCESS
这是我的代码:
(...)
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");
}
(...)发布于 2012-03-01 13:36:40
由于您的问题只在有时发生,所以问题必须是由于TextToSpeech初始化的异步性质造成的。有时,当我的代码在调用TextToSpeech ()之前设置TextToSpeech的一个属性时,我看到了onInit失败。
我怀疑您在TextToSpeech调用onInit()之前激活了onInit()。这种情况只会发生几次。
看起来,您有正确的代码在onUtteranceCompletedListener ()期间设置onInit(),但这可能也有时间问题。
https://stackoverflow.com/questions/9299711
复制相似问题