我正在开发一个文本到语音的应用程序,onUtteranceCompleted从来不会被触发。下面是我的一些代码:
public class MyActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener {
private TextToSpeech tts;
private HashMap<String, String> hashAudio;
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
//defining hashAudio, its music!
this.hashAudio = new HashMap<String, String>();
this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC));
this.tts.setOnUtteranceCompletedListener(this);
this.readEnglish();
}
}
public void readEnglish(){
Log.v("MESSAGE", "reading english"); //gets shown
this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "english");
this.tts.setLanguage(Locale.US);
this.tts.speak("TEST", TextToSpeech.QUEUE_FLUSH, this.hashAudio);
//gets read
}
public void onUtteranceCompleted(String uttId) {
Log.v("MESSAGE", "Uterrance Completed");
//never see this message
}有人知道为什么吗?我在这里介绍了一些主题和一些解决方案,但都没有奏效:(.我还仔细阅读了Android文档:(.
谢谢
发布于 2012-02-20 05:09:36
好的,我自己想出来了,我代码中唯一的问题是
this.tts.setOnUtteranceCompletedListener(this);在实例化Hashmap之后调用。因此,最终的代码应该如下所示:
this.tts.setOnUtteranceCompletedListener(this);
this.hashAudio = new HashMap<String, String>();
this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_STREAM,String.valueOf(AudioManager.STREAM_MUSIC));https://stackoverflow.com/questions/9346401
复制相似问题