TextToSpeech stop() не работает

162
24 января 2018, 15:31

Я пытаюсь остановить TextToSpeech по нажатию на кнопку назад. Но речь не прерывается, даже если я закрою приложение (только когда очищу кэш — Синтезатор речи Google). Как мне решить эту проблему, помогите разобраться.

private boolean mShouldSpeak = true;
TextToSpeech tts;
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cat);
    tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
        @Override
        public void onInit(int status) {
            if (status == TextToSpeech.SUCCESS) {
                tts.setEngineByPackageName(enginePackageName);
                tts.setLanguage(Locale.getDefault());
                tts.setPitch(0);
                tts.setSpeechRate(1);
               speak();
            }
        }
    });
}
 private void speak() {
    if (mShouldSpeak == true)
    {
        tts.speak("Автор: " +getResources().getString(R.string.catAuthor), TextToSpeech.QUEUE_ADD, null);
        tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);
        tts.speak(getResources().getString(R.string.catName), TextToSpeech.QUEUE_ADD, null);
        tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);
        tts.speak(getResources().getString(R.string.catDesc), TextToSpeech.QUEUE_ADD, null);
        tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);
    }
}
 @Override
protected void onDestroy() {
    if (tts != null)
    {
        tts.stop();
        tts.shutdown();
    }
    super.onDestroy();
}
public void onBackPressed() {
    onDestroy();
    super.onBackPressed();
}
Answer 1

Попробуйте завершить в onStop()

@Override
protected void onStop()
{
    super.onStop();
    if(tts != null){
        tts.shutdown();
    }       
}

так же в onBackPressed()

@Override
public void onBackPressed(){
        super.onBackPressed();
        if(tts != null){
            tts.shutdown();
        }       
}

п.с. принудительный вызов onDestroy в onBackPressed лучше удалить.

READ ALSO
Надо сгруппировать все даты по неделям

Надо сгруппировать все даты по неделям

Получаю я дату заказа в String в таком формате 2017-07-25T13:24:46+0300 И мне надо сгруппировать все даты по неделямТо есть, например, на этой неделе были...

162
Как завернуть шаблон в шаблон Spring boot FreeMaker?

Как завернуть шаблон в шаблон Spring boot FreeMaker?

У меня есть некий контроллер вида:

195
Многопоточный бинарный поиск MPI - C++ / Java Threads [требует правки]

Многопоточный бинарный поиск MPI - C++ / Java Threads [требует правки]

здравствуйте, может кто поделиться кодом многопоточного бинарного поиска числа в массиве, при помощи C++ MPI и/или Java ThreadsСпасибо

165
Что означает класс реализует интерфейс?

Что означает класс реализует интерфейс?

Встретил это в книге по Java Яков Файн "Программирование на Java

176