From 59b41b05d97ffd9cf58bd09d91686519ec8aada7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=A3=E5=8F=A3=E5=90=95?= <156081428@qq.com> Date: Sat, 3 Oct 2020 09:23:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E6=9C=97=E8=AF=BB=E5=BC=95?= =?UTF-8?q?=E6=93=8E=E6=97=B6=E6=94=AF=E6=8C=81=E8=87=AA=E5=8A=A8=E6=92=AD?= =?UTF-8?q?=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/service/help/ReadAloud.kt | 17 ++++++++++++++--- .../book/read/config/ReadAloudConfigDialog.kt | 7 ++++++- .../ui/book/read/config/SpeakEngineDialog.kt | 8 +++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/help/ReadAloud.kt b/app/src/main/java/io/legado/app/service/help/ReadAloud.kt index b25c270c3..21ddff158 100644 --- a/app/src/main/java/io/legado/app/service/help/ReadAloud.kt +++ b/app/src/main/java/io/legado/app/service/help/ReadAloud.kt @@ -6,10 +6,14 @@ import io.legado.app.App import io.legado.app.constant.IntentAction import io.legado.app.constant.PreferKey import io.legado.app.data.entities.HttpTTS +import io.legado.app.help.coroutine.Coroutine import io.legado.app.service.BaseReadAloudService import io.legado.app.service.HttpReadAloudService import io.legado.app.service.TTSReadAloudService import io.legado.app.utils.getPrefLong +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlin.coroutines.CoroutineContext object ReadAloud { private var aloudClass: Class<*> = getReadAloudClass() @@ -26,8 +30,15 @@ object ReadAloud { } } - fun upReadAloudClass() { - aloudClass = getReadAloudClass() + fun upReadAloudClass( + scope: CoroutineScope = Coroutine.DEFAULT, + context: CoroutineContext = Dispatchers.IO): Coroutine<*> { + return Coroutine.async(scope, context) { + aloudClass = getReadAloudClass() + while (BaseReadAloudService.isRun) { + continue + } + } } fun play( @@ -105,4 +116,4 @@ object ReadAloud { } } -} \ No newline at end of file +} diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt index 3ae466454..6f2689147 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt @@ -19,6 +19,7 @@ import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.backgroundColor import io.legado.app.service.BaseReadAloudService import io.legado.app.service.help.ReadAloud +import io.legado.app.service.help.ReadBook import io.legado.app.utils.getPrefLong import io.legado.app.utils.postEvent @@ -112,7 +113,11 @@ class ReadAloudConfigDialog : DialogFragment() { } PreferKey.speakEngine -> { upPreferenceSummary(findPreference(key), speakEngineSummary) - ReadAloud.upReadAloudClass() + ReadAloud.upReadAloudClass().onSuccess { + if (!BaseReadAloudService.isRun) { + ReadBook.readAloud() + } + } } } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt index 6ee1d5bda..cce3a5a82 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt @@ -23,7 +23,9 @@ import io.legado.app.lib.dialogs.cancelButton import io.legado.app.lib.dialogs.customView import io.legado.app.lib.dialogs.okButton import io.legado.app.lib.theme.primaryColor +import io.legado.app.service.BaseReadAloudService import io.legado.app.service.help.ReadAloud +import io.legado.app.service.help.ReadBook import io.legado.app.utils.* import kotlinx.android.synthetic.main.dialog_http_tts_edit.view.* import kotlinx.android.synthetic.main.dialog_recycler_view.* @@ -123,7 +125,11 @@ class SpeakEngineDialog : BaseDialogFragment(), Toolbar.OnMenuItemClickListener httpTTS.name = tv_name.text.toString() httpTTS.url = tv_url.text.toString() App.db.httpTTSDao().insert(httpTTS) - ReadAloud.upReadAloudClass() + ReadAloud.upReadAloudClass().onSuccess { + if (!BaseReadAloudService.isRun) { + ReadBook.readAloud() + } + } } } }.show().applyTint()