TextToSpeech onUtterance完成错误

时间:2011-08-08 08:52:49

标签: android

当我使用Android TextToSpeech时 并使用OnUtteranceCompletedListener() 我有记忆问题。 如果您不使用OnUtteranceCompletedListener() 一切都很好。

为什么?

final Runnable finish = new Runnable() 
{
   public void run() 
   {
        Intent intent = new Intent();
        intent.setClass(main.this, main.class);
        startActivity(intent);
   }
};


public void SAY_TTS()
{     
    final HashMap<String, String> ttsParams = new HashMap<String, String>(); 
    ttsParams.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "done"); 
    tts = new TextToSpeech(this, new OnInitListener() {
        public void onInit(int status) 
        {
            if (status == TextToSpeech.SUCCESS)   
            { 
                tts.setLanguage(Locale.ENGLISH);
                tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {
                    public void onUtteranceCompleted(String uttID) 
                    {
                        tts.stop();
                        tts.shutdown();
                        handler_finish.post(finish);
                    }   
                });

                tts.speak("this is a test", TextToSpeech.QUEUE_ADD, ttsParams);                 

            }
        }
    });       
} 

1 个答案:

答案 0 :(得分:0)

如果有其他人看到此问题,我认为当您使用OnUtteranceCompletedListener 时,实际情况就会出现问题。如果您不使用它,则永远不会调用tts.shutdown(),这意味着TextToSpeech资源永远不会被释放,这会导致Android在Activity结束时投诉(因为它看到了你自己没有清理过。)