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

pull/408/head
口口吕 6 years ago
parent 9b3f484a08
commit 59b41b05d9
  1. 13
      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.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() {
fun upReadAloudClass(
scope: CoroutineScope = Coroutine.DEFAULT,
context: CoroutineContext = Dispatchers.IO): Coroutine<*> {
return Coroutine.async(scope, context) {
aloudClass = getReadAloudClass()
while (BaseReadAloudService.isRun) {
continue
}
}
}
fun play(

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

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

Loading…
Cancel
Save