我使用下面的代码,它可以正常工作,将TTS对象共享给其他活动:

       package com.simekadam.blindguardian;

            import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;

public class SpeechHelper implements OnInitListener {

private static TextToSpeech mTts;
private String text;
private static final SpeechHelper helper = new SpeechHelper();

public static SpeechHelper getInstance(){

    return helper;
}


public void say(String text, Context context){

    if(mTts == null){
        this.text = text;
        mTts = new TextToSpeech(context, (OnInitListener) helper);

    }
    else{
        mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
    }
}


@Override
public void onInit(int status) {
    // TODO Auto-generated method stub
    if (status == TextToSpeech.SUCCESS) {
        mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
    }
}

public void stopTTS(){
    if(mTts != null){
        mTts.shutdown();
        mTts.stop();
        mTts = null;
    }
}

}


但是,如果我退出活动,然后又回到活动状态,则我的应用程序不再说话了。没有错误。只是不再说话了。

有人可以帮我吗?

谢谢!

我刚刚在Eclipse中的消息中看到以下消息:“将消息发送到死线程上的处理程序”

我该怎么解决? =)

最佳答案

如果您使用应用程序上下文而不是当前活动,则不会出现此错误。例如:

mTts = new TextToSpeech(context.getApplicationContext(), (OnInitListener) helper);

10-04 17:09