2017-10-06 40 views
0

在我的項目中,我使用了帶有片段的導航抽屜。在第一個屏幕(第一個片段)中,我有一個儀表板。在第二個片段中,我使用按鈕單擊中包含大量文本的tts。它工作正常,並停止罰款,只有當片段回到第一個片段(儀表板)。在導航抽屜中改變片段時,文本到語音不會停止

Issue:當在導航菜單中選擇片段時,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

我有同樣的問題,一旦一段文字開始,這似乎是不可能阻止它。

一種可能性是使用synthesizeToFile功能來創建TTS輸出的音頻文件,然後您就可以更好地控制播放。

另一種可能性(我已經實現)是分割在更小的部分的文本(I只是用全停止.)和玩這些一個接一個,使用UtteranceProgressListeneronDone方法(當一個部件是完成,玩下一個)。這聽起來是一樣的,當你可以通過在n部分播放後不玩n+1部分來手動停止播放。 醜陋的解決方法,我知道。

+0

正常工作到最後一句好,讓我試試這個。我不熟悉synthesizeToFile和話語。你能舉個例子嗎? –

+0

這裏沒有這個項目,對不起。 – FWeigl