diff --git a/app/src/main/java/io/legado/app/service/TTSReadAloudService.kt b/app/src/main/java/io/legado/app/service/TTSReadAloudService.kt index 49d5d4b786a7..7db548e4add7 100644 --- a/app/src/main/java/io/legado/app/service/TTSReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/TTSReadAloudService.kt @@ -19,6 +19,7 @@ import io.legado.app.utils.LogUtils import io.legado.app.utils.fromJsonObject import io.legado.app.utils.servicePendingIntent import io.legado.app.utils.toastOnUi +import kotlinx.coroutines.delay import kotlinx.coroutines.ensureActive /** @@ -94,6 +95,7 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener LogUtils.d(TAG, "朗读页数 ${textChapter?.pageSize}") val tts = textToSpeech ?: throw NoStackTraceException("tts is null") val contentList = contentList + var isAddedText = false for (i in nowSpeak until contentList.size) { ensureActive() var text = contentList[i] @@ -103,7 +105,7 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener if (text.matches(AppPattern.notReadAloudRegex)) { continue } - if (i == nowSpeak) { + if (!isAddedText) { val result = tts.runCatching { speak(text, TextToSpeech.QUEUE_FLUSH, null, AppConst.APP_TAG + i) }.getOrElse { @@ -127,8 +129,14 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener AppLog.put("tts朗读出错:$text") } } + isAddedText = true } LogUtils.d(TAG, "朗读内容添加完成") + if (!isAddedText) { + playStop() + delay(1000) + nextChapter() + } }.onError { AppLog.put("tts朗读出错\n${it.localizedMessage}", it, true) } @@ -184,6 +192,9 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener override fun onStart(s: String) { LogUtils.d(TAG, "onStart nowSpeak:$nowSpeak pageIndex:$pageIndex utteranceId:$s") textChapter?.let { + if (contentList[nowSpeak].matches(AppPattern.notReadAloudRegex)) { + nextParagraph() + } if (readAloudNumber + 1 > it.getReadLength(pageIndex + 1)) { pageIndex++ ReadBook.moveToNextPage()