From f49043ceaa2ee396199179e2f244adac8ff0ac1f Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sun, 1 Feb 2026 10:32:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20#5685?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/book/audio/AudioPlayActivity.kt | 15 ++++----------- .../main/java/io/legado/app/utils/TimeUtils.kt | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 12 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 abf57c5fd..81889b0a7 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,7 +1,6 @@ package io.legado.app.ui.book.audio import android.annotation.SuppressLint -import android.icu.text.SimpleDateFormat import android.os.Build import android.os.Bundle import android.view.Gravity @@ -44,6 +43,7 @@ import io.legado.app.utils.sendToClip import io.legado.app.utils.showDialogFragment import io.legado.app.utils.startActivity import io.legado.app.utils.startActivityForBook +import io.legado.app.utils.toDurationTime import io.legado.app.utils.viewbindingdelegate.viewBinding import io.legado.app.utils.visible import kotlinx.coroutines.Dispatchers.IO @@ -67,13 +67,6 @@ class AudioPlayActivity : private var adjustProgress = false private var playMode = AudioPlay.PlayMode.LIST_END_STOP - private val progressTimeFormat by lazy { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - SimpleDateFormat("mm:ss", Locale.getDefault()) - } else { - java.text.SimpleDateFormat("mm:ss", Locale.getDefault()) - } - } private val tocActivityResult = registerForActivityResult(TocActivityResult()) { it?.let { if (it.first != AudioPlay.book?.durChapterIndex @@ -164,7 +157,7 @@ class AudioPlayActivity : } binding.playerProgress.setOnSeekBarChangeListener(object : SeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { - binding.tvDurTime.text = progressTimeFormat.format(progress.toLong()) + binding.tvDurTime.text = progress.toDurationTime() } override fun onStartTrackingTouch(seekBar: SeekBar) { @@ -291,11 +284,11 @@ class AudioPlayActivity : } observeEventSticky(EventBus.AUDIO_SIZE) { binding.playerProgress.max = it - binding.tvAllTime.text = progressTimeFormat.format(it.toLong()) + binding.tvAllTime.text = it.toDurationTime() } observeEventSticky(EventBus.AUDIO_PROGRESS) { if (!adjustProgress) binding.playerProgress.progress = it - binding.tvDurTime.text = progressTimeFormat.format(it.toLong()) + binding.tvDurTime.text = it.toDurationTime() } observeEventSticky(EventBus.AUDIO_BUFFER_PROGRESS) { binding.playerProgress.secondaryProgress = it diff --git a/app/src/main/java/io/legado/app/utils/TimeUtils.kt b/app/src/main/java/io/legado/app/utils/TimeUtils.kt index 4e15c0f17..93dadb710 100644 --- a/app/src/main/java/io/legado/app/utils/TimeUtils.kt +++ b/app/src/main/java/io/legado/app/utils/TimeUtils.kt @@ -36,4 +36,17 @@ fun Long.toTimeAgo(): String { } } return start + end -} \ No newline at end of file +} + +fun Int.toDurationTime(): String { + val totalSeconds = this / 1000 + val hours = totalSeconds / 3600 + val minutes = (totalSeconds % 3600) / 60 + val seconds = totalSeconds % 60 + + return if (hours > 0) { + "%d:%02d:%02d".format(hours, minutes, seconds) + } else { + "%02d:%02d".format(minutes, seconds) + } +}