2017-10-06 97 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