From a410d3f016850ca49e2c6a232fcce9f89499ec64 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 29 Mar 2022 19:52:44 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 5cd7d49a1..e06611fd5 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -11,6 +11,11 @@ * 正文出现缺字漏字、内容缺失、排版错乱等情况,有可能是净化规则或简繁转换出现问题。 * 漫画源看书显示乱码,**阅读与其他软件的源并不通用**,请导入阅读的支持的漫画源! +**2022/03/29** + +* tts朗读不在指定为中文,跟随系统设置,因为有些人需要朗读英文,如果朗读不出来可以去tts设置里看看是不是中文 +* 修复详情也封面背景模糊失效的bug + **2022/03/25** * 更新cronet: 99.0.4844.88 From e1083b5d717d50613566cc6b7a8e58ab19ec4b75 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 29 Mar 2022 20:30:23 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/constant/EventBus.kt | 5 ++-- .../io/legado/app/service/AudioPlayService.kt | 5 ++-- .../app/service/BaseReadAloudService.kt | 4 +-- .../app/ui/book/audio/AudioPlayActivity.kt | 6 ++++ .../ui/book/read/config/ReadAloudDialog.kt | 2 +- .../main/res/layout/activity_audio_play.xml | 29 ++++++++++++++----- 6 files changed, 36 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/io/legado/app/constant/EventBus.kt b/app/src/main/java/io/legado/app/constant/EventBus.kt index 37bbf4be9..f5e9cee25 100644 --- a/app/src/main/java/io/legado/app/constant/EventBus.kt +++ b/app/src/main/java/io/legado/app/constant/EventBus.kt @@ -7,7 +7,8 @@ object EventBus { const val BOOKSHELF_REFRESH = "bookshelfRefresh" const val ALOUD_STATE = "aloud_state" const val TTS_PROGRESS = "ttsStart" - const val TTS_DS = "ttsDs" + const val AUDIO_DS = "audioDs" + const val READ_ALOUD_DS = "readAloudDs" const val BATTERY_CHANGED = "batteryChanged" const val TIME_CHANGED = "timeChanged" const val UP_CONFIG = "upConfig" @@ -17,13 +18,11 @@ object EventBus { const val AUDIO_PROGRESS = "audioProgress" const val AUDIO_SIZE = "audioSize" const val AUDIO_SPEED = "audioSpeed" - const val AUDIO_ERROR = "audioError" const val NOTIFY_MAIN = "notifyMain" const val WEB_SERVICE = "webService" const val UP_DOWNLOAD = "upDownload" const val SAVE_CONTENT = "saveContent" const val CHECK_SOURCE = "checkSource" - const val CHECK_SOURCE_MESSAGE = "checkSourceMessage" const val CHECK_SOURCE_DONE = "checkSourceDone" const val TIP_COLOR = "tipColor" const val SOURCE_CHANGED = "sourceChanged" diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index 88b012f38..8bc5eb1e2 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -76,6 +76,7 @@ class AudioPlayService : BaseService(), initMediaSession() initBroadcastReceiver() upMediaSessionPlaybackState(PlaybackStateCompat.STATE_PLAYING) + doDs() } override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { @@ -273,7 +274,7 @@ class AudioPlayService : BaseService(), * 定时 */ private fun doDs() { - postEvent(EventBus.TTS_DS, timeMinute) + postEvent(EventBus.AUDIO_DS, timeMinute) upNotification() dsJob?.cancel() dsJob = launch { @@ -287,7 +288,7 @@ class AudioPlayService : BaseService(), AudioPlay.stop(this@AudioPlayService) } } - postEvent(EventBus.TTS_DS, timeMinute) + postEvent(EventBus.AUDIO_DS, timeMinute) upNotification() } } diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index 3f96a338a..eab6548c9 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt @@ -206,7 +206,7 @@ abstract class BaseReadAloudService : BaseService(), */ @Synchronized private fun doDs() { - postEvent(EventBus.TTS_DS, timeMinute) + postEvent(EventBus.READ_ALOUD_DS, timeMinute) upNotification() dsJob?.cancel() dsJob = launch { @@ -220,7 +220,7 @@ abstract class BaseReadAloudService : BaseService(), ReadAloud.stop(this@BaseReadAloudService) } } - postEvent(EventBus.TTS_DS, timeMinute) + postEvent(EventBus.READ_ALOUD_DS, timeMinute) upNotification() } } diff --git a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt index 1060f0eaa..e83ebcf59 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt @@ -1,5 +1,6 @@ package io.legado.app.ui.book.audio +import android.annotation.SuppressLint import android.app.Activity import android.icu.text.SimpleDateFormat import android.os.Build @@ -210,6 +211,7 @@ class AudioPlayActivity : } } + @SuppressLint("SetTextI18n") override fun observeLiveBus() { observeEvent(EventBus.MEDIA_BUTTON) { if (it) { @@ -239,6 +241,10 @@ class AudioPlayActivity : binding.tvSpeed.text = String.format("%.1fX", it) binding.tvSpeed.visible() } + observeEventSticky(EventBus.AUDIO_DS) { + binding.tvTimer.text = "${it}m" + binding.tvTimer.visible(it > 0) + } } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt index 136a2541c..181a50c39 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadAloudDialog.kt @@ -184,7 +184,7 @@ class ReadAloudDialog : BaseDialogFragment(R.layout.dialog_read_aloud) { override fun observeLiveBus() { observeEvent(EventBus.ALOUD_STATE) { upPlayState() } - observeEvent(EventBus.TTS_DS) { binding.seekTimer.progress = it } + observeEvent(EventBus.READ_ALOUD_DS) { binding.seekTimer.progress = it } } interface CallBack { diff --git a/app/src/main/res/layout/activity_audio_play.xml b/app/src/main/res/layout/activity_audio_play.xml index acd36a805..37d157d7f 100644 --- a/app/src/main/res/layout/activity_audio_play.xml +++ b/app/src/main/res/layout/activity_audio_play.xml @@ -2,10 +2,10 @@ + + @@ -58,12 +73,12 @@ android:id="@+id/tv_sub_title" android:layout_width="match_parent" android:layout_height="wrap_content" + android:gravity="center" android:paddingStart="16dp" - android:paddingEnd="16dp" android:paddingTop="6dp" + android:paddingEnd="16dp" android:paddingBottom="6dp" android:textColor="@color/md_white_1000" - android:gravity="center" app:layout_constraintBottom_toTopOf="@+id/ll_player_progress" /> Date: Tue, 29 Mar 2022 22:30:09 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/model/AudioPlay.kt | 14 +++++++-- .../app/ui/book/audio/AudioPlayActivity.kt | 13 ++++++++- .../legado/app/ui/book/audio/ComposeView.kt | 29 +++++++++++++++++++ .../main/res/layout/activity_audio_play.xml | 6 ++++ 4 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt diff --git a/app/src/main/java/io/legado/app/model/AudioPlay.kt b/app/src/main/java/io/legado/app/model/AudioPlay.kt index 7211858db..f224f6d09 100644 --- a/app/src/main/java/io/legado/app/model/AudioPlay.kt +++ b/app/src/main/java/io/legado/app/model/AudioPlay.kt @@ -15,6 +15,7 @@ import io.legado.app.help.coroutine.Coroutine import io.legado.app.service.AudioPlayService import io.legado.app.utils.postEvent import io.legado.app.utils.startService +import splitties.init.appCtx object AudioPlay { var titleData = MutableLiveData() @@ -138,10 +139,17 @@ object AudioPlay { } } - fun addTimer(context: Context) { - val intent = Intent(context, AudioPlayService::class.java) + fun addTimer() { + val intent = Intent(appCtx, AudioPlayService::class.java) intent.action = IntentAction.addTimer - context.startService(intent) + appCtx.startService(intent) + } + + fun setTimer(minute: Int) { + val intent = Intent(appCtx, AudioPlayService::class.java) + intent.action = IntentAction.setTimer + intent.putExtra("minute", minute) + appCtx.startService(intent) } fun saveRead(book: Book) { diff --git a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt index e83ebcf59..acbde8820 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt @@ -9,6 +9,7 @@ import android.view.Menu import android.view.MenuItem import android.widget.SeekBar import androidx.activity.viewModels +import androidx.compose.runtime.mutableStateOf import io.legado.app.R import io.legado.app.base.VMBaseActivity import io.legado.app.constant.EventBus @@ -26,6 +27,7 @@ import io.legado.app.ui.book.changesource.ChangeBookSourceDialog import io.legado.app.ui.book.source.edit.BookSourceEditActivity import io.legado.app.ui.book.toc.TocActivityResult import io.legado.app.ui.login.SourceLoginActivity +import io.legado.app.ui.theme.AppTheme import io.legado.app.ui.widget.seekbar.SeekBarChangeListener import io.legado.app.utils.* import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -43,6 +45,7 @@ class AudioPlayActivity : override val viewModel by viewModels() private var menu: Menu? = null private var adjustProgress = false + private val timerViewState = mutableStateOf(false) private val progressTimeFormat by lazy { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { SimpleDateFormat("mm:ss", Locale.getDefault()) @@ -154,7 +157,15 @@ class AudioPlayActivity : AudioPlay.adjustSpeed(this@AudioPlayActivity, -0.1f) } binding.ivTimer.setOnClickListener { - AudioPlay.addTimer(this@AudioPlayActivity) + timerViewState.value = true + } + binding.composeView.setContent { + AppTheme { + TimerView( + state = timerViewState, + binding.ivTimer + ) + } } } diff --git a/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt b/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt new file mode 100644 index 000000000..da32c62c9 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt @@ -0,0 +1,29 @@ +package io.legado.app.ui.book.audio + +import android.view.View +import androidx.compose.material.Slider +import androidx.compose.runtime.Composable +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.window.Dialog +import io.legado.app.model.AudioPlay +import io.legado.app.service.AudioPlayService + + +@Composable +fun TimerView(state: MutableState, parent: View) { + val intOffset = IntArray(2) + parent.getLocationInWindow(intOffset) + if (state.value) { + val timeMinute = remember { + mutableStateOf(AudioPlayService.timeMinute) + } + Dialog(onDismissRequest = { state.value = false }) { + Slider(value = timeMinute.value.toFloat(), onValueChange = { + timeMinute.value = it.toInt() + AudioPlay.setTimer(it.toInt()) + }, valueRange = 0f..180f) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_audio_play.xml b/app/src/main/res/layout/activity_audio_play.xml index 37d157d7f..7b984a74d 100644 --- a/app/src/main/res/layout/activity_audio_play.xml +++ b/app/src/main/res/layout/activity_audio_play.xml @@ -223,4 +223,10 @@ + + \ No newline at end of file From db9cbb5d6da766802eb3ccf2f5f16a5fcc208400 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 29 Mar 2022 22:31:46 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt | 2 +- app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt index acbde8820..0da186aae 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt @@ -161,7 +161,7 @@ class AudioPlayActivity : } binding.composeView.setContent { AppTheme { - TimerView( + TimerDialog( state = timerViewState, binding.ivTimer ) diff --git a/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt b/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt index da32c62c9..c8fbd47ef 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt @@ -12,7 +12,7 @@ import io.legado.app.service.AudioPlayService @Composable -fun TimerView(state: MutableState, parent: View) { +fun TimerDialog(state: MutableState, parent: View) { val intOffset = IntArray(2) parent.getLocationInWindow(intOffset) if (state.value) { From e5fc3250dfb561caf596f21d2a145c099a2936f7 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 29 Mar 2022 22:55:24 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/service/AudioPlayService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index 8bc5eb1e2..a5327d701 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -261,11 +261,11 @@ class AudioPlayService : BaseService(), } private fun addTimer() { - if (timeMinute == 60) { + if (timeMinute == 180) { timeMinute = 0 } else { timeMinute += 10 - if (timeMinute > 60) timeMinute = 60 + if (timeMinute > 180) timeMinute = 180 } doDs() } From cecf733c77740e2a032cb6ce27cfc96112de4e17 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 08:15:37 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/book/local/ImportBookViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt index 22a1ca00b..cfb23fb1e 100644 --- a/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt @@ -58,7 +58,7 @@ class ImportBookViewModel(application: Application) : BaseViewModel(application) }.map { docList -> when (sort) { 2 -> docList.sortedWith( - compareBy({ !it.isDir }, { it.lastModified }, { it.name }) + compareBy({ !it.isDir }, { -it.lastModified }, { it.name }) ) 1 -> docList.sortedWith( compareBy({ !it.isDir }, { it.size }, { it.name }) From 28f63d1c19f5cd5958971ff8de68928138e8e296 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 08:15:50 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/book/local/ImportBookViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt index cfb23fb1e..99d7f6c6d 100644 --- a/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/local/ImportBookViewModel.kt @@ -61,7 +61,7 @@ class ImportBookViewModel(application: Application) : BaseViewModel(application) compareBy({ !it.isDir }, { -it.lastModified }, { it.name }) ) 1 -> docList.sortedWith( - compareBy({ !it.isDir }, { it.size }, { it.name }) + compareBy({ !it.isDir }, { -it.size }, { it.name }) ) else -> docList.sortedWith( compareBy({ !it.isDir }, { it.name }) From dab92ae44a8fd644674321aac59737689be4794f Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 09:32:57 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/book/audio/ComposeView.kt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt b/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt index c8fbd47ef..146509f9e 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/ComposeView.kt @@ -1,11 +1,16 @@ package io.legado.app.ui.book.audio import android.view.View +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Card import androidx.compose.material.Slider import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import io.legado.app.model.AudioPlay import io.legado.app.service.AudioPlayService @@ -20,10 +25,16 @@ fun TimerDialog(state: MutableState, parent: View) { mutableStateOf(AudioPlayService.timeMinute) } Dialog(onDismissRequest = { state.value = false }) { - Slider(value = timeMinute.value.toFloat(), onValueChange = { - timeMinute.value = it.toInt() - AudioPlay.setTimer(it.toInt()) - }, valueRange = 0f..180f) + Card(Modifier.fillMaxWidth()) { + Slider( + modifier = Modifier.padding(horizontal = 16.dp), + value = timeMinute.value.toFloat(), onValueChange = { + timeMinute.value = it.toInt() + AudioPlay.setTimer(it.toInt()) + }, + valueRange = 0f..180f + ) + } } } } \ No newline at end of file From f80c89e782eed19a8449d460b391567c9fd30fe0 Mon Sep 17 00:00:00 2001 From: gedoor Date: Wed, 30 Mar 2022 01:37:08 +0000 Subject: [PATCH 09/19] Bump cronet from 99.0.4844.88 to 100.0.4896.58 - Changes in the [Git log](https://chromium.googlesource.com/chromium/src/+log/99.0.4844.88..100.0.4896.58) --- app/cronetlib/cronet_api.jar | Bin 69331 -> 69332 bytes app/cronetlib/cronet_impl_common_java.jar | Bin 97265 -> 97275 bytes app/cronetlib/cronet_impl_native_java.jar | Bin 1208120 -> 1209874 bytes app/src/main/assets/cronet.json | 2 +- app/src/main/assets/updateLog.md | 1 + gradle.properties | 2 +- 6 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/cronetlib/cronet_api.jar b/app/cronetlib/cronet_api.jar index 478aa00290dba367d557aaf249cdf21f581f4f7c..9ed47b0a70dcecbed17a7bda633497d8b9d1a99e 100644 GIT binary patch delta 844 zcmY*We@GKy7{2%0b$8ot=c*xU*c2f_bKZ12c7({{t@AJI(ywCgNeS)7$@Z0L^ zY`llde8pw4x`Eqqp5x3{OlQL$suD+U7=)2MYtXIuRn@2Z0wG=V1w#>;Q#n6ywXtBe zza^?_0mBG{LV7gNRITX&HCmrGM3(Dgt?M@y`;vZ=#3+uT~w+G0dIE6q}o zOC=#K7#F!JnXBdkG8g0ufph)m1)TegL4~`@=rpNWv;S$cSAjw+jH==0&e;}$L-9H$o0b#ssIgSXbava;K2kyggo__pcDlHRpdm01!$^B!FB>F zyu>7d;fWfQFxJoT4eG&B9pfbSmddA5iW{sXVRdB zKMcBXm&CAd$ik^H4?Q=eWP~FU6PApa2~0^)M>ZZ?al{V$$i;CMm*XQl+sp0=1Sgcz z_=JcK2P4vx8A6>Bu|Z}%oOiHN%dax*<>@?p=U_7|+;Xz@^v#%bIsH82!G}(!elkyI z=XYj=9+?Td7noNebLQKjKA_tbtm|j`R-hMIt@9pQ&?}B6G;EE+U z5XbKvx4Y|lcU^Q@Y{jq2ge~>n{oV}Qm++wilOX9q-F8>Zz!t3(%8v)B z9@WD(RG4Uzftgqs_94|{7$g(~^cFG?1{o~c9Y&}|8Y%G5G%(CaM=2E&S^N*YL2KA+}sH)@*d z)`F3MFBbJjyis@5t-Af8cw@{T_o%**76_EK#v9wpPq#)|qD`eu@kp$#T$HL0c*2)< zyE~1NTai4HSCM>D9!SdeyFjuvM=tWfi_AxJtYSU=e|yPHXn<$Q1k}Uxq$}GTI zpo}pCW!#PGu;*M3uWmBoYet5$gA7}TZiGAXMH4nWBjCfUI&4Vh4_uS+EhGL$@UJ|@ z9cZvpg%X+I=cEp8*PWPz7~Z0PD=4!7BEdApu_yGTg)Fgel}&#VdM|F0 zfG$)On(F)_?_b=9lM0op`bKd+->fiUjY4m+w6gszKCTECk6Xacj{VS29{Xt(<2i87 uLNgy;Bbdj#*JLzXsa*Rn(mA}xV&*Fw3dXF|!oA=B7|zhv<+V-m*na^ND+EaZ diff --git a/app/cronetlib/cronet_impl_common_java.jar b/app/cronetlib/cronet_impl_common_java.jar index bcbb56fb7956ab6638ad1b88ab50ac03b42a2446..a8a0e6a86e54c2f98bc0cf8bca6f1a3bba6d8bd7 100644 GIT binary patch delta 903 zcmY+CZ%9*77{m77_m6IrEjD_*ua6h68J9;WO9f54H-4_%DM({-TQyA?;sL9+D> zfU$({k*BO@OEEhPN*t?$JQoURfe-t)pS zM&pebI)cf(*PDd-HK63r_>_u`mIILQ+i+leJ+RE}Rxz?ShJVtk!f*9(h-q%yWDnb9 zX!TK6*167-u+K-&O$~~AC>^B@R6iIMG};^B1T*<@wg;_z({TugylG<2&$hPBP~#e7H;$;)PXRM>IT_=*KI@l$C-dqE0 zAJ%LT3|jovLi=~;<8lZNV^N5P&7Bg(Xb6r%0GC40#Y~?Sm<^w`Quo&q(U2Af6O(aS d5ZTxnrj>Z75SoC$E9k}N!l054RRR48{sDHIBf$Uw delta 861 zcmYk3T}V@57{}k|ozt9~o}8IqBxNR4+s@85w;_Utv9OC!D?c!F?L!OqolaersCV61 z2YjLs5>zTB3Ly!)5WI>6lkP$)@G6R$M0k-z?|bIgfdkL)|NP(o`|d`rOzVToMyY-5cT<`_PM<=6OZb!TWS(z(ohC5 zX^BY8S|X8RAlid_0TFJx`xYjy%&RodFAg_UsR*f3$sd+Wa54Zn@?3MKJly&W@8p07P6nWk zTD-iLb9_4ajyD}MxOq}dz z$!8_57;#vFbgU1vxjc4(pxu9rQ5U)sa0c53K%(z2q+q<98Q%@C^*8EMiqOFxKxl!Z zT+YXyK|b8Z1HF|&=3Z}2DTX%C;(UOGoKHXzlwfCqP32H0KZ_pM5^yqosted5{sU%q B3VZ+n diff --git a/app/cronetlib/cronet_impl_native_java.jar b/app/cronetlib/cronet_impl_native_java.jar index 4438b8ee793540eaf9021ba18388f5157f80413e..f25677f71bec7e80008dd6ba657ad1021a94a736 100644 GIT binary patch delta 71931 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 K&u^n%-SiKpmUj~X delta 72132 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 fcRMh~*%owB^?l?a{p!%1F Date: Wed, 30 Mar 2022 09:48:31 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/service/AudioPlayService.kt | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index a5327d701..16ef146e5 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -45,7 +45,7 @@ class AudioPlayService : BaseService(), companion object { var isRun = false private set - var pause = false + var pause = true private set var timeMinute: Int = 0 private set @@ -59,11 +59,9 @@ class AudioPlayService : BaseService(), private val exoPlayer: ExoPlayer by lazy { ExoPlayer.Builder(this).build() } - private var title: String = "" - private var subtitle: String = "" private var mediaSessionCompat: MediaSessionCompat? = null private var broadcastReceiver: BroadcastReceiver? = null - private var position = 0 + private var position = AudioPlay.book?.durChapterPos ?: 0 private var dsJob: Job? = null private var upPlayProgressJob: Job? = null private var playSpeed: Float = 1f @@ -83,12 +81,9 @@ class AudioPlayService : BaseService(), intent?.action?.let { action -> when (action) { IntentAction.play -> { - AudioPlay.book?.let { - title = it.name - subtitle = AudioPlay.durChapter?.title ?: "" - position = it.durChapterPos - loadContent() - } + pause = false + position = AudioPlay.book?.durChapterPos ?: 0 + loadContent() } IntentAction.pause -> pause(true) IntentAction.resume -> resume() @@ -361,7 +356,6 @@ class AudioPlayService : BaseService(), */ private fun contentLoadFinish(chapter: BookChapter, content: String) { if (chapter.index == AudioPlay.book?.durChapterIndex) { - subtitle = chapter.title url = content play() } @@ -455,9 +449,9 @@ class AudioPlayService : BaseService(), ) else -> getString(R.string.audio_play_t) } - nTitle += ": $title" - var nSubtitle = subtitle - if (subtitle.isEmpty()) { + nTitle += ": ${AudioPlay.book?.name}" + var nSubtitle = AudioPlay.durChapter?.title + if (nSubtitle.isNullOrEmpty()) { nSubtitle = getString(R.string.audio_play_s) } val builder = NotificationCompat From 1969bac38152cfc349a37016dfb648e7dca51d50 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 09:54:09 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/book/audio/AudioPlayActivity.kt | 6 +++++- app/src/main/res/values-es-rES/strings.xml | 1 + app/src/main/res/values-ja-rJP/strings.xml | 1 + app/src/main/res/values-pt-rBR/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values-zh/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt index 0da186aae..7c2b23e03 100644 --- a/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/audio/AudioPlayActivity.kt @@ -157,7 +157,11 @@ class AudioPlayActivity : AudioPlay.adjustSpeed(this@AudioPlayActivity, -0.1f) } binding.ivTimer.setOnClickListener { - timerViewState.value = true + if (AudioPlayService.isRun) { + timerViewState.value = true + } else { + toastOnUi(R.string.cannot_timed_non_playback) + } } binding.composeView.setContent { AppTheme { diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 8a662dd73..9143354c7 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -964,5 +964,6 @@ 定位到当前书源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 057d75c5b..ab67846fc 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -967,5 +967,6 @@ 定位到当前书源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index d9b35bf9b..fcd5e4613 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -967,5 +967,6 @@ 定位到当前书源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 1ea92e45a..7be8fcc22 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -964,5 +964,6 @@ 定位到当前书源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index cf751ee54..dabf42176 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -966,5 +966,6 @@ 定位到目前書源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 7c983da39..ee43e4273 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -966,5 +966,6 @@ 定位到当前书源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0ec06f841..8ad3e0b0a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -967,5 +967,6 @@ 定位到当前书源 系统tts设置 打开系统tts设置界面 + 非播放状态无法定时 From 88163b0534177595adec2113746000af470be371 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 10:01:50 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index e06611fd5..361b51057 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -15,6 +15,7 @@ * tts朗读不在指定为中文,跟随系统设置,因为有些人需要朗读英文,如果朗读不出来可以去tts设置里看看是不是中文 * 修复详情也封面背景模糊失效的bug +* 优化音频界面定时设定 **2022/03/25** From d58a279ee2ef476fea8ef93446df6d4ac630a9d9 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 11:36:38 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/service/AudioPlayService.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index 16ef146e5..afef1ce3a 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -167,6 +167,10 @@ class AudioPlayService : BaseService(), private fun resume() { try { pause = false + if (url.isEmpty()) { + loadContent() + return + } if (!exoPlayer.isPlaying) { exoPlayer.play() } From a5af523195a155299c2c3cd084a4940457d17a39 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 11:41:07 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/service/AudioPlayService.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index afef1ce3a..081fdd324 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -61,6 +61,7 @@ class AudioPlayService : BaseService(), } private var mediaSessionCompat: MediaSessionCompat? = null private var broadcastReceiver: BroadcastReceiver? = null + private var audioFocusLossTransient = false private var position = AudioPlay.book?.durChapterPos ?: 0 private var dsJob: Job? = null private var upPlayProgressJob: Job? = null @@ -425,13 +426,18 @@ class AudioPlayService : BaseService(), when (focusChange) { AudioManager.AUDIOFOCUS_GAIN -> { // 重新获得焦点, 可做恢复播放,恢复后台音量的操作 + audioFocusLossTransient = false if (!pause) resume() } AudioManager.AUDIOFOCUS_LOSS -> { // 永久丢失焦点除非重新主动获取,这种情况是被其他播放器抢去了焦点, 为避免与其他播放器混音,可将音乐暂停 + if (audioFocusLossTransient) { + pause(true) + } } AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> { // 暂时丢失焦点,这种情况是被其他应用申请了短暂的焦点,可压低后台音量 + audioFocusLossTransient = true if (!pause) pause(false) } AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK -> { From d95792ae7531b02a929676dd23d1265608b3d1e2 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 30 Mar 2022 13:46:46 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/updateLog.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 361b51057..858291e3e 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -563,22 +563,6 @@ fun getZipByteArrayContent(url: String, path: String): ByteArray? * 样式属性可以搜索 [FleboxLayout子元素支持的属性介绍](https://www.jianshu.com/p/3c471953e36d) * 样式属性可省略,有默认值 -```json -[ - { - "title": "xxx", - "url": "", - "style": { - "layout_flexGrow": 0, - "layout_flexShrink": 1, - "layout_alignSelf": "auto", - "layout_flexBasisPercent": -1, - "layout_wrapBefore": false - } - } -] -``` - **2021/07/07** 1. 默认规则新增类似`jsonPath`的索引写法 by bushixuanqi @@ -776,9 +760,6 @@ chapter.html的关键字有{title}、{content} * 增加三星 S Pen 支持 by [dacer](https://github.com/dacer) * 订阅添加阅读下载,可以从多个渠道下载 -* 修复一些BUG - **2020/12/30** - * 解决文件下载异常,在线语音可正常播放 by [Celeter](https://github.com/Celeter) * 更新默认在线朗读库, 默认id小于0方便下次更新时删除旧数据, 有重复的自己删除 * 导入导出书单 From d4ff2d8fcbfb78e312bfc0f5590eec8a5957f986 Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 31 Mar 2022 10:48:45 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/model/localBook/LocalBook.kt | 66 +++++++++---------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt index 0c46586eb..972e6fc24 100644 --- a/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt +++ b/app/src/main/java/io/legado/app/model/localBook/LocalBook.kt @@ -16,12 +16,17 @@ import java.io.File import java.io.FileInputStream import java.io.FileNotFoundException import java.io.InputStream -import java.util.regex.Matcher import java.util.regex.Pattern import javax.script.SimpleBindings object LocalBook { + private val nameAuthorPatterns = arrayOf( + Pattern.compile("(.*?)《([^《》]+)》(.*)"), + Pattern.compile("(^)(.+) 作者:(.+)$"), + Pattern.compile("(^)(.+) by (.+)$") + ) + @Throws(FileNotFoundException::class, SecurityException::class) fun getBookInputStream(book: Book): InputStream { val uri = Uri.parse(book.bookUrl) @@ -117,44 +122,37 @@ object LocalBook { val tempFileName = fileName.substringBeforeLast(".") var name: String var author: String - //匹配(知轩藏书常用格式) 《书名》其它信息作者:作者名.txt - val m1 = Pattern - .compile("(.*?)《([^《》]+)》(.*)") - .matcher(tempFileName) - //匹配 书名 作者:作者名.txt - val m2 = Pattern - .compile("(^)(.+) 作者:(.+)$") - .matcher(tempFileName) - - (m1.takeIf { m1.find() } ?: m2.takeIf { m2.find() }).run { - if (this is Matcher) { - //按默认格式将文件名分解成书名、作者名 + for (pattern in nameAuthorPatterns) { + pattern.matcher(tempFileName).takeIf { it.find() }?.run { name = group(2)!! - author = BookHelp.formatBookAuthor((group(1) ?: "") + (group(3) ?: "")) - } else if (!AppConfig.bookImportFileName.isNullOrBlank()) { - try { - //在脚本中定义如何分解文件名成书名、作者名 - val jsonStr = AppConst.SCRIPT_ENGINE.eval( - //在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获 - AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})", - //将文件名注入到脚步的src变量中 - SimpleBindings().also { it["src"] = tempFileName } - ).toString() - val bookMess = GSON.fromJsonObject>(jsonStr) - .getOrThrow() ?: HashMap() - name = bookMess["name"] ?: tempFileName - author = bookMess["author"]?.takeIf { it.length != tempFileName.length } ?: "" - } catch (e: Exception) { - name = BookHelp.formatBookName(tempFileName) - author = BookHelp.formatBookAuthor(tempFileName.replace(name, "")) - .takeIf { it.length != tempFileName.length } ?: "" - } - } else { + val group1 = group(1) ?: "" + val group3 = group(3) ?: "" + author = BookHelp.formatBookAuthor(group1 + group3) + return Pair(name, author) + } + } + if (!AppConfig.bookImportFileName.isNullOrBlank()) { + try { + //在脚本中定义如何分解文件名成书名、作者名 + val jsonStr = AppConst.SCRIPT_ENGINE.eval( + //在用户脚本后添加捕获author、name的代码,只要脚本中author、name有值就会被捕获 + AppConfig.bookImportFileName + "\nJSON.stringify({author:author,name:name})", + //将文件名注入到脚步的src变量中 + SimpleBindings().also { it["src"] = tempFileName } + ).toString() + val bookMess = GSON.fromJsonObject>(jsonStr) + .getOrThrow() ?: HashMap() + name = bookMess["name"] ?: tempFileName + author = bookMess["author"]?.takeIf { it.length != tempFileName.length } ?: "" + } catch (e: Exception) { name = BookHelp.formatBookName(tempFileName) author = BookHelp.formatBookAuthor(tempFileName.replace(name, "")) .takeIf { it.length != tempFileName.length } ?: "" } - + } else { + name = BookHelp.formatBookName(tempFileName) + author = BookHelp.formatBookAuthor(tempFileName.replace(name, "")) + .takeIf { it.length != tempFileName.length } ?: "" } return Pair(name, author) } From 1d1440d8cad54d7201e7d3a54dbc39065fe7579c Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 31 Mar 2022 10:56:35 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index db1880350..99fd4b9a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -244,8 +244,9 @@ dependencies { implementation('com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.3') //加解密类库 - implementation('cn.hutool:hutool-crypto:5.7.22') + implementation('cn.hutool:hutool-crypto:5.8.0.M1') + //renderscriptToolkit implementation('com.github.android:renderscript-intrinsics-replacement-toolkit:b6363490c3') //代码编辑com.github.AmrDeveloper:CodeView已集成到应用内 From e02f253252c8ff6ff8cfaca68e898f51e3be331b Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 31 Mar 2022 11:24:58 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/App.kt | 2 +- app/src/main/java/io/legado/app/help/config/AppConfig.kt | 2 -- app/src/main/java/io/legado/app/help/storage/AppWebDav.kt | 4 +++- .../main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index 4b76c77e2..ca0ce5494 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -58,7 +58,7 @@ class App : MultiDexApplication() { 2 -> ChineseUtils.s2t("初始化") } //同步阅读记录 - if (AppWebDav.isOk && AppConfig.syncBookProgress) { + if (AppWebDav.syncBookProgress) { AppWebDav.downloadAllBookProgress() } } diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index b069eddb8..25525406f 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -282,8 +282,6 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { val importKeepName get() = appCtx.getPrefBoolean(PreferKey.importKeepName) - val syncBookProgress get() = appCtx.getPrefBoolean(PreferKey.syncBookProgress, true) - var preDownloadNum get() = appCtx.getPrefInt(PreferKey.preDownloadNum, 10) set(value) { diff --git a/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt b/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt index 02538dd73..8898f1f4f 100644 --- a/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt +++ b/app/src/main/java/io/legado/app/help/storage/AppWebDav.kt @@ -29,6 +29,8 @@ object AppWebDav { private val bookProgressUrl = "${rootWebDavUrl}bookProgress/" private val zipFilePath = "${appCtx.externalFiles.absolutePath}${File.separator}backup.zip" + val syncBookProgress get() = appCtx.getPrefBoolean(PreferKey.syncBookProgress, true) + var isOk = false init { @@ -167,7 +169,7 @@ object AppWebDav { fun uploadBookProgress(book: Book) { if (!isOk) return - if (!AppConfig.syncBookProgress) return + if (!syncBookProgress) return if (!NetworkUtils.isAvailable()) return Coroutine.async { val bookProgress = BookProgress(book) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index c7b95217a..f87b2f259 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -168,7 +168,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { book: Book, alertSync: ((progress: BookProgress) -> Unit)? = null ) { - if (AppConfig.syncBookProgress) + if (AppWebDav.syncBookProgress) execute { AppWebDav.getBookProgress(book) }.onSuccess { From 3f7bea8d4e2af6519605b74ee63fb2e95c6fcfd8 Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 31 Mar 2022 11:42:44 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/read/ReadBookViewModel.kt | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index f87b2f259..80c233673 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -168,20 +168,24 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) { book: Book, alertSync: ((progress: BookProgress) -> Unit)? = null ) { - if (AppWebDav.syncBookProgress) - execute { + execute { + if (AppWebDav.syncBookProgress) { AppWebDav.getBookProgress(book) - }.onSuccess { - it?.let { progress -> - if (progress.durChapterIndex < book.durChapterIndex || - (progress.durChapterIndex == book.durChapterIndex && progress.durChapterPos < book.durChapterPos) - ) { - alertSync?.invoke(progress) - } else { - ReadBook.setProgress(progress) - } - } + ?: throw NoStackTraceException("没有进度") + } else { + throw NoStackTraceException("进度同步未启用") } + }.onSuccess { progress -> + if (progress.durChapterIndex < book.durChapterIndex || + (progress.durChapterIndex == book.durChapterIndex + && progress.durChapterPos < book.durChapterPos) + ) { + alertSync?.invoke(progress) + } else { + ReadBook.setProgress(progress) + } + } + } /**