From 3d31b24ce15cd20ac644c12b3ee90c1c0a07bfb2 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Mon, 29 Jun 2026 02:26:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=B3=BB=E7=BB=9F=20TTS=20=E8=B0=83?= =?UTF-8?q?=E9=80=9F=E7=AB=8B=E5=8D=B3=E9=87=8D=E6=92=AD=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/service/TTSReadAloudService.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 4983a4976..90088fece 100644 --- a/app/src/main/java/io/legado/app/service/TTSReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/TTSReadAloudService.kt @@ -32,6 +32,7 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener private var ttsInitFinish = false private val ttsUtteranceListener = TTSUtteranceListener() private var speakJob: Coroutine<*>? = null + private var utteranceStartPos = 0 private val TAG = "TTSReadAloudService" override fun onCreate() { @@ -161,6 +162,9 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener } else { val speechRate = (ReadConfig.ttsSpeechRate + 5) / 10f textToSpeech?.setSpeechRate(speechRate) + if (reset && !pause) { + play() + } } } @@ -192,6 +196,7 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener override fun onStart(s: String) { LogUtils.d(TAG, "onStart nowSpeak:$nowSpeak pageIndex:$pageIndex utteranceId:$s") + utteranceStartPos = paragraphStartPos textChapter?.let { if (contentList[nowSpeak].matches(AppPattern.notReadAloudRegex)) { nextParagraph() @@ -214,6 +219,7 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener override fun onRangeStart(utteranceId: String?, start: Int, end: Int, frame: Int) { super.onRangeStart(utteranceId, start, end, frame) + paragraphStartPos = utteranceStartPos + start val msg = "onRangeStart nowSpeak:$nowSpeak pageIndex:$pageIndex utteranceId:$utteranceId start:$start end:$end frame:$frame" LogUtils.d(TAG, msg) @@ -261,4 +267,4 @@ class TTSReadAloudService : BaseReadAloudService(), TextToSpeech.OnInitListener return servicePendingIntent(actionStr) } -} \ No newline at end of file +}