【问题标题】:Android Text-to-Speech: onUtteranceCompleted() not firedAndroid 文字转语音:onUtteranceCompleted() 未触发
【发布时间】:2012-02-20 05:09:35
【问题描述】:

我正在开发文本到语音应用程序,并且永远不会触发 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 文档 :(。

谢谢

【问题讨论】:

    标签: java android text-to-speech


    【解决方案1】:

    好吧,我自己想通了,我的代码中唯一的问题是

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

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2017-04-14
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多