2017-10-06 1 views
0

私のプロジェクトでは、ナビゲーション・ドロワーにフラグメントを使用しています。第1画面(1stフラグメント)には、ダッシュボードがあります。 2番目の断片では、ボタンクリックで大量のテキストを持つttsを持っています。フラグメントが最初のフラグメント(ダッシュボード)に戻ったときにのみ正常に動作し、正常に停止します。ナビゲーションドロワーのフラグメントが変更されたときにテキストが音声を停止しない

問題:ナビゲーションメニューで選択してフラグメントが変更された場合、ttsは停止しません。次のフラグメントにもかかわらず、ttsが再生されます。

私はonDestroy()、onPause()、onResume()、onStop()を使用しました。何も動作しません。

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

私はテキストの一部が開始されると、私は、同じ問題を抱えていたフラグメントスタック

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

再生しているテキストは非常に長いですか? – FWeigl

+0

その長さは4234です。しかし、テキストを分割することによって最後の単語までうまく動作します。 –

答えて

1

でを追加を使用し、それを止めることは不可能であると思われます。

1つの可能性は、synthesizeToFileの機能を使用してTTS出力のオーディオファイルを作成することです。その場合、再生のコントロールが強化されます。

(私が実装している)は、他の可能性が小さい部分のテキストを分割することである(私は完全停止.を使用)と、1つの部分がある場合(UtteranceProgressListeneronDone方法を使用して、別の後のこれらのいずれかを演じます完了、次のプレイ)。ちょうど同じように聞こえますが、n+1の部分を再生しないで再生を手動で停止することができる場合は、nの再生した部分を再生してください。 醜い回避策、私は知っています。

+0

OK、これを試してみましょう。私はsynthesizeToFileと発声に慣れていません。あなたは私に例を挙げることができますか? –

+0

ここにプロジェクトはありません。申し訳ありません。 – FWeigl

関連する問題