如何在Android Java上暂停文字



当前,我已经实施了文本到语音(TTS(来阅读书籍。由于TTS最多只能允许4000个字符(而且一本书比这更可行(,所以我将书分开,并将每个部分添加到TTS队列中。我想单击一个按钮并暂停TTS,然后恢复用户关闭的TTS。

我尝试使用synthesizetofile并暂停媒体文件对象,但是再次,您只能在一个少于4000个字符的情况下合成一个文件。我不想仅将数百个媒体文件存储在用户设备上。

我可以让TTS阅读这本书,我无法停止它,然后从本书的开头开始启动TTS。

在下面的代码中,我将整本书存储在字符串bookText中。TTS引擎是tts变量。

这就是我加载TTS队列的方式:

int position = 0;
int pos = 0;
int sizeOfChar = bookText.length();
String testString = bookText.substring(position,sizeOfChar);
int next = 500;
while(true) {
    String temp = "";
    try {
        temp = testString.substring(pos, next);
        HashMap<String, String> params = new HashMap<String, String>();
        params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, temp);
        tts.speak(temp, TextToSpeech.QUEUE_ADD, params);
        pos = pos + 500;
        next = next + 500;
    }
    catch (Exception e) {
       temp = testString.substring(pos, testString.length());
       tts.speak(temp, TextToSpeech.QUEUE_ADD, null);
       break;
    }
}

这就是我"停止" TTS的方式:

tts.speak("Pausing!", TextToSpeech.QUEUE_FLUSH, null);

由于文本托语类没有暂停/简历方法,我建议这样做以下操作:

1(将书分为句子,而不是500个字符块。(您可以使用"。"作为定界符解析(。

2(引入一个"主索引"计数器,x,跟踪进度为:我们在句子#x/total句子中。

3(当用户单击暂停时,只需使用stop((方法。

4(当用户单击简历时,在被打断的句子开头的恢复语音。

无论如何,这将导致(对书(的用户理解更好。

最新更新