Общий TTS не работает после того, как активность мертва, а затем снова жива - PullRequest
2 голосов
/ 25 февраля 2012

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

Что я могу сделать, чтобы решить эту проблему?=)

1 Ответ

1 голос
/ 08 мая 2012

Эта ошибка не отображается, если вы используете контекст приложения вместо текущего действия.Например:

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