2017-10-06 2 views
0

In meinem Projekt verwende ich die Navigationsschublade mit Fragmenten. Im ersten Bildschirm (1. Fragment) habe ich ein Dashboard. Auf dem zweiten Fragment habe ich TTS mit viel Text in Button-Klick. Es funktioniert gut und bleibt in Ordnung, nur wenn das Fragment zum ersten Fragment (Dashboard) zurückkehrt.Text zu Sprache hört nicht auf, wenn sich das Fragment in der Navigationsleiste ändert

Problem: Wenn Fragment durch Auswahl im Navigationsmenü ändert, stoppt TTS nicht. Auch ich gehe zum nächsten Fragment, TTS spielt.

Ich habe onDestroy(), onPause(), onResume(), onStop() verwendet. Nichts funktioniert.

@Override 
public void onDestroy() { //same for other methods also 
    super.onDestroy(); 
    if (tts != null) { 
     tts.stop(); 
     tts.shutdown(); 
    } 
} 

I hinzufügen verwenden in Fragment Stapel

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction transaction = fragmentManager.beginTransaction(); 
transaction.add(R.id.container, fragment,back_stack_name); 
transaction.addToBackStack(back_stack_name); 
transaction.commit(); 
+0

Ist der Text, den Sie spielen, sehr lang? – FWeigl

+0

Seine Länge ist 4234. Aber es funktioniert gut bis zum letzten Wort durch Teilung des Textes –

Antwort

1

ich hatte das gleiche Problem, wenn ein Stück Text gestartet wird, scheint es unmöglich zu sein, es zu stoppen.

Eine Möglichkeit wäre, die synthesizeToFile Fähigkeit zu verwenden, um eine Audiodatei der TTS-Ausgabe zu erstellen, Sie haben dann mehr Kontrolle über die Wiedergabe.

Die andere Möglichkeit (die ich umgesetzt haben) ist es, den Text in kleinere Teile aufgeteilt (I verwendet nur die . Voll stoppen) und diese nacheinander spielen, die UtteranceProgressListener ‚s onDone Verfahren (wenn ein Teil ist fertig, spiele den nächsten). Es hört sich genauso an, und wenn Sie die Wiedergabe manuell stoppen können, indem Sie einfach nicht den Part abspielen, nachdem Part n abgespielt wurde. Hässliche Workaround, ich weiß.

+0

OK, lassen Sie mich das versuchen. Ich bin nicht vertraut mit synthesizeToFile und Äußerung. Kannst du mir ein Beispiel geben? –

+0

Haben Sie das Projekt hier nicht, sorry. – FWeigl

Verwandte Themen