Horis пре 1 година
родитељ
комит
d19174a586
1 измењених фајлова са 12 додато и 1 уклоњено
  1. 12 1
      app/src/main/java/io/legado/app/service/TTSReadAloudService.kt

+ 12 - 1
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()