当导航抽屉中的片段发生变化时,Text to Speech 不会停止
Text to Speech doesn't stop when fragment changes in navigation drawer
在我的项目中,我使用带片段的导航抽屉。在第一个屏幕(第一个片段)中,我有一个仪表板。在第二个片段中,我在点击按钮时有大量文本的 tts。它工作正常并且停止正常,只有当片段回到第一个片段(仪表板)时。
问题:当通过在导航菜单中选择来更改片段时,tts 不会stop.Even我转到下一个片段,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();
我也遇到过同样的问题,一段文字一旦开始,就好像停不下来了。
一种可能是使用 synthesizeToFile
功能创建 TTS 输出的音频文件,这样您就可以更好地控制播放。
另一种可能性(我已经实现)是将文本分成更小的部分(我只是使用句号 .
)并使用 UtteranceProgressListener
一个接一个地播放这些文本的 onDone
方法(完成一个部分后,播放下一个)。听起来是一样的,当您可以通过在 n
部分播放后不播放 n+1
部分来手动停止播放时。
丑陋的解决方法,我知道。
在我的项目中,我使用带片段的导航抽屉。在第一个屏幕(第一个片段)中,我有一个仪表板。在第二个片段中,我在点击按钮时有大量文本的 tts。它工作正常并且停止正常,只有当片段回到第一个片段(仪表板)时。
问题:当通过在导航菜单中选择来更改片段时,tts 不会stop.Even我转到下一个片段,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();
我也遇到过同样的问题,一段文字一旦开始,就好像停不下来了。
一种可能是使用 synthesizeToFile
功能创建 TTS 输出的音频文件,这样您就可以更好地控制播放。
另一种可能性(我已经实现)是将文本分成更小的部分(我只是使用句号 .
)并使用 UtteranceProgressListener
一个接一个地播放这些文本的 onDone
方法(完成一个部分后,播放下一个)。听起来是一样的,当您可以通过在 n
部分播放后不播放 n+1
部分来手动停止播放时。
丑陋的解决方法,我知道。