Я взял приведенный ниже код, и он отлично работает, разделяя объект 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: "отправка сообщения обработчику в мертвой ветке"
Что я могу сделать, чтобы решить эту проблему?=)