Android 文本到语音转换不';当导航抽屉中的片段更改时,不能停止

Android 文本到语音转换不';当导航抽屉中的片段更改时,不能停止,android,text-to-speech,Android,Text To Speech,在我的项目中,我使用带有片段的导航抽屉。在第一个屏幕(第一个片段)中,我有一个仪表板。在第二个片段中,我在点击按钮时看到了大量文本的tts。只有当片段返回到第一个片段(仪表板)时,它才能正常工作并停止 问题:当在导航菜单中选择片段更改时,tts不会停止。即使我转到下一个片段,tts也会播放 我使用了onDestroy()、onPause()、onResume()、onStop()。什么都不管用 @Override public void onDestroy() { //same for othe

在我的项目中,我使用带有片段的导航抽屉。在第一个屏幕(第一个片段)中,我有一个仪表板。在第二个片段中,我在点击按钮时看到了大量文本的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();

我也有同样的问题,一旦一段文字开始,似乎不可能停止它

一种可能是使用
synthesizeToFile
功能创建TTS输出的音频文件,这样您就可以更好地控制播放

另一种可能性(我已经实现了)是将文本分割成更小的部分(我只是使用了句号
),然后使用
OuttenceProgressListener
onDone
方法(当一部分完成后,播放下一部分)一个接一个地播放。这听起来完全一样,当您可以通过不播放
n+1
一部分又一部分
n
来手动停止播放时。
我知道这是一个很糟糕的解决办法

你正在播放的文本很长吗?它的长度是4234。但是,通过拆分文本,直到最后一个单词,它都可以正常工作。好吧,让我试试这个。我对合成词和话语不熟悉。你能给我举个例子吗?对不起,这里没有这个项目。