Android TTS文本超过4k字符不播放

Ovi*_*tcu 3 android text-to-speech android-4.2-jelly-bean

TextToSpeech有时会使用一些长文本,我注意到,因为Android 4.1.2如果文本超过4000个字符,它就不会播放.

我没有收到任何错误,但文本将不会播放.到目前为止,我能够重现这一点Android 4.1.2(三星Galaxy Nexus,Nexus7).

这是一个bug 4.1.2还是正常的(虽然我没有找到任何关于这种行为的文档)?

另外我发现了一个帖子:如果收到的TTS太长则onUtteranceCompleted()会丢失,这表示文本超过4000个字符会出现不同的问题.

编辑:我试图将我的字符串拆分为4k长度的块,并将其发送到TTS使用QUEUE_ADD,我遇到了另一个错误:QUEUE_ADD无法工作,而是刷新现有队列,只有最后一个块被播放.

EDIT2:这是我的号召TTS

mTTS.speak(longText, TextToSpeech.QUEUE_FLUSH, null);
Run Code Online (Sandbox Code Playgroud)

she*_*pya 8

TtsService.java中的MAX_SPEECH_ITEM_CHAR_LENGTH = 4000,在4.1上我看到代码中有警告:

    @Override
    public boolean isValid() {
        if (mText == null) {
            Log.wtf(TAG, "Got null text");
            return false;
        }
        if (mText.length() >= MAX_SPEECH_ITEM_CHAR_LENGTH) {
            Log.w(TAG, "Text too long: " + mText.length() + " chars");
            return false;
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

看起来像2.3拆分文本,所以teorically你的代码应该工作在android <4.1而不是更新(我不知道什么时候拆分),而你有相反的:)这有点奇怪