我使用下面的代码,它可以正常工作,将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);