Przeglądaj źródła

修复听书闪退问题

HapeLee 1 rok temu
rodzic
commit
8a7936d6fa

+ 8 - 7
app/src/main/java/io/legato/kazusa/ui/book/audio/AudioPlayActivity.kt

@@ -229,7 +229,6 @@ class AudioPlayActivity :
 //            }
 //        })
 
-        // 替换原来的 SeekBar 监听器
         binding.playerProgress.addOnChangeListener { _, value, fromUser ->
             if (fromUser) {
                 binding.tvDurTime.text = progressTimeFormat.format(value.toLong())
@@ -648,14 +647,16 @@ class AudioPlayActivity :
 //            binding.playerProgress.secondaryProgress = it
 //
 //        }
-        observeEventSticky<Int>(EventBus.AUDIO_SIZE) {
-            binding.playerProgress.valueTo = maxOf(1f, it.toFloat())
-            binding.tvAllTime.text = progressTimeFormat.format(it.toLong())
+        observeEventSticky<Int>(EventBus.AUDIO_SIZE) { size ->
+            binding.playerProgress.valueTo = maxOf(1f, size.toFloat())
+            binding.tvAllTime.text = progressTimeFormat.format(size.toLong())
         }
 
-        observeEventSticky<Int>(EventBus.AUDIO_PROGRESS) {
-            if (!adjustProgress) binding.playerProgress.value = it.toFloat()
-            binding.tvDurTime.text = progressTimeFormat.format(it.toLong())
+        observeEventSticky<Int>(EventBus.AUDIO_PROGRESS) { progress ->
+            val slider = binding.playerProgress
+            val safeValue = progress.toFloat().coerceIn(slider.valueFrom, slider.valueTo)
+            if (!adjustProgress) slider.value = safeValue
+            binding.tvDurTime.text = progressTimeFormat.format(progress.toLong())
         }
 
         observeEventSticky<Int>(EventBus.AUDIO_BUFFER_PROGRESS) {

+ 1 - 1
app/src/main/res/layout/activity_audio_play.xml

@@ -163,7 +163,7 @@
         android:layout_marginHorizontal="14dp"
         android:value="0"
         android:valueFrom="0"
-        android:valueTo="1"
+        android:valueTo="100000"
         app:tickColorInactive="@android:color/transparent"
         app:layout_constraintBottom_toTopOf="@id/tv_all_time"
         app:thumbElevation="0dp"