在我的项目中,我正在使用带有碎片的Navigation抽屉。在第一个屏幕(第一个片段)中,我有一个仪表板。在第二个片段,我点击按钮时有大量文本。只有当片段回到第一个片段(仪表板)时,它才能正常工作并且停止正常。
问题:当通过在导航菜单中选择片段更改时,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 :(得分:1)
我遇到了同样的问题,一旦启动了一段文字,似乎无法阻止它。
一种可能性是使用.
功能来创建TTS输出的音频文件,然后您可以更好地控制播放。
另一种可能性(我已实施)是将文本分成较小的部分(我只是使用了句号UtteranceProgressListener
)并使用onDone
&#播放这些文章。 39; s n+1
方法(当一部分完成时,播放下一部分)。它听起来是一样的,当你可以在部分n
播放后不播放{{1}}部分时手动停止播放。
我知道,丑陋的解决方法。