更换朗读引擎时支持自动播放

pull/408/head
口口吕 6 years ago
parent 9b3f484a08
commit 59b41b05d9
  1. 15
      app/src/main/java/io/legado/app/service/help/ReadAloud.kt
  2. 7
      app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudConfigDialog.kt
  3. 8
      app/src/main/java/io/legado/app/ui/book/read/config/SpeakEngineDialog.kt

@ -6,10 +6,14 @@ import io.legado.app.App
import io.legado.app.constant.IntentAction import io.legado.app.constant.IntentAction
import io.legado.app.constant.PreferKey import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.HttpTTS 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.BaseReadAloudService
import io.legado.app.service.HttpReadAloudService import io.legado.app.service.HttpReadAloudService
import io.legado.app.service.TTSReadAloudService import io.legado.app.service.TTSReadAloudService
import io.legado.app.utils.getPrefLong import io.legado.app.utils.getPrefLong
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlin.coroutines.CoroutineContext
object ReadAloud { object ReadAloud {
private var aloudClass: Class<*> = getReadAloudClass() private var aloudClass: Class<*> = getReadAloudClass()
@ -26,8 +30,15 @@ object ReadAloud {
} }
} }
fun upReadAloudClass() { fun upReadAloudClass(
aloudClass = getReadAloudClass() scope: CoroutineScope = Coroutine.DEFAULT,
context: CoroutineContext = Dispatchers.IO): Coroutine<*> {
return Coroutine.async(scope, context) {
aloudClass = getReadAloudClass()
while (BaseReadAloudService.isRun) {
continue
}
}
} }
fun play( fun play(

@ -19,6 +19,7 @@ import io.legado.app.lib.theme.ATH
import io.legado.app.lib.theme.backgroundColor import io.legado.app.lib.theme.backgroundColor
import io.legado.app.service.BaseReadAloudService import io.legado.app.service.BaseReadAloudService
import io.legado.app.service.help.ReadAloud 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.getPrefLong
import io.legado.app.utils.postEvent import io.legado.app.utils.postEvent
@ -112,7 +113,11 @@ class ReadAloudConfigDialog : DialogFragment() {
} }
PreferKey.speakEngine -> { PreferKey.speakEngine -> {
upPreferenceSummary(findPreference(key), speakEngineSummary) upPreferenceSummary(findPreference(key), speakEngineSummary)
ReadAloud.upReadAloudClass() ReadAloud.upReadAloudClass().onSuccess {
if (!BaseReadAloudService.isRun) {
ReadBook.readAloud()
}
}
} }
} }
} }

@ -23,7 +23,9 @@ import io.legado.app.lib.dialogs.cancelButton
import io.legado.app.lib.dialogs.customView import io.legado.app.lib.dialogs.customView
import io.legado.app.lib.dialogs.okButton import io.legado.app.lib.dialogs.okButton
import io.legado.app.lib.theme.primaryColor 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.ReadAloud
import io.legado.app.service.help.ReadBook
import io.legado.app.utils.* import io.legado.app.utils.*
import kotlinx.android.synthetic.main.dialog_http_tts_edit.view.* import kotlinx.android.synthetic.main.dialog_http_tts_edit.view.*
import kotlinx.android.synthetic.main.dialog_recycler_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.name = tv_name.text.toString()
httpTTS.url = tv_url.text.toString() httpTTS.url = tv_url.text.toString()
App.db.httpTTSDao().insert(httpTTS) App.db.httpTTSDao().insert(httpTTS)
ReadAloud.upReadAloudClass() ReadAloud.upReadAloudClass().onSuccess {
if (!BaseReadAloudService.isRun) {
ReadBook.readAloud()
}
}
} }
} }
}.show().applyTint() }.show().applyTint()

Loading…
Cancel
Save