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()