From dd2cccdf7f0a7bcda20a15b6453da98c224dc337 Mon Sep 17 00:00:00 2001 From: zmx Date: Thu, 7 Nov 2024 11:09:36 +0800 Subject: [PATCH] 666 --- .../src/main/java/com/mx/video/MXVideoStd.kt | 7 ----- .../java/com/mx/video/views/MXViewProvider.kt | 27 +++++++++++++++-- .../mx/mxvideo_demo/apps/NormalActivity.kt | 5 ++++ app/src/main/res/layout/activity_normal.xml | 30 +++++++++++++++++++ 4 files changed, 60 insertions(+), 9 deletions(-) diff --git a/MXVideoLib/src/main/java/com/mx/video/MXVideoStd.kt b/MXVideoLib/src/main/java/com/mx/video/MXVideoStd.kt index 6ef5d50..f94b61e 100644 --- a/MXVideoLib/src/main/java/com/mx/video/MXVideoStd.kt +++ b/MXVideoLib/src/main/java/com/mx/video/MXVideoStd.kt @@ -60,13 +60,6 @@ open class MXVideoStd @JvmOverloads constructor( override fun onPlayTicket(position: Int, duration: Int) { onPlayTicketListener?.invoke(position, duration) - - val config = getConfig() - if (config.forceCompleteWhenBeyondDuration.get() - && (duration > 0) && (position >= duration) - ) { - getPlayer()?.forcedComplete() - } } override fun onBuffering(inBuffer: Boolean) { diff --git a/MXVideoLib/src/main/java/com/mx/video/views/MXViewProvider.kt b/MXVideoLib/src/main/java/com/mx/video/views/MXViewProvider.kt index 9f6bdc8..d2482ca 100644 --- a/MXVideoLib/src/main/java/com/mx/video/views/MXViewProvider.kt +++ b/MXVideoLib/src/main/java/com/mx/video/views/MXViewProvider.kt @@ -23,6 +23,7 @@ import com.mx.video.utils.MXObservable import com.mx.video.utils.MXTicket import com.mx.video.utils.MXUtils import com.mx.video.utils.touch.MXTouchHelp +import kotlin.math.abs import kotlin.math.min import kotlin.math.roundToInt @@ -42,6 +43,7 @@ internal class MXViewProvider(val viewSet: MXViewSet, val mxVideo: IMXVideo, val private val delayDismiss = MXDismissDelay() private val speedHelp = MXNetSpeedHelp() + fun initView() { // 全屏切换时,显示设置 config.screen.addObserver(object : IMXObserver { @@ -337,6 +339,7 @@ internal class MXViewProvider(val viewSet: MXViewSet, val mxVideo: IMXVideo, val if (oldD != curD || oldP != curP) { position.updateValue(MXPair(curP, curD)) } + processBeyondProgress(curP, curD) } }) @@ -391,12 +394,32 @@ internal class MXViewProvider(val viewSet: MXViewSet, val mxVideo: IMXVideo, val // 全屏返回按钮响应 viewSet.mxReturnBtn.setOnClickListener { - if (config.screen.get() == MXScreen.FULL) { - mxVideo.switchToScreen(MXScreen.NORMAL) + if (config.screen.get() != MXScreen.FULL) { + return@setOnClickListener } + mxVideo.switchToScreen(MXScreen.NORMAL) } } + /** + * 兼容部分手机超出进度时不回调complete + */ + private var beyondDurationStart = 0L + private fun processBeyondProgress(position: Int, duration: Int) { + if (config.source.get()?.isLiveSource == true) return + if (!config.forceCompleteWhenBeyondDuration.get()) return + if (duration <= 0) { + beyondDurationStart = -1L + return + } + if (position < duration) return + if (beyondDurationStart <= 0L) { + beyondDurationStart = System.currentTimeMillis() + } else if (abs(System.currentTimeMillis() - beyondDurationStart) > 2000) { + beyondDurationStart = -1L + mxVideo.getPlayer()?.forcedComplete() + } + } /** * 状态处理 diff --git a/app/src/main/java/com/mx/mxvideo_demo/apps/NormalActivity.kt b/app/src/main/java/com/mx/mxvideo_demo/apps/NormalActivity.kt index e4bd917..890424d 100644 --- a/app/src/main/java/com/mx/mxvideo_demo/apps/NormalActivity.kt +++ b/app/src/main/java/com/mx/mxvideo_demo/apps/NormalActivity.kt @@ -291,6 +291,11 @@ class NormalActivity : AppCompatActivity() { binding.mxVideoStd.getConfig().replayLiveSourceWhenError.set(checkedId == R.id.liveRetryTrue) } binding.liveRetryFalse.performClick() + + binding.forceCompleteRG.setOnCheckedChangeListener { group, checkedId -> + binding.mxVideoStd.getConfig().forceCompleteWhenBeyondDuration.set(checkedId == R.id.forceCompleteTrue) + } + binding.forceCompleteFalse.performClick() } private fun stringForTime(time: Int): String { diff --git a/app/src/main/res/layout/activity_normal.xml b/app/src/main/res/layout/activity_normal.xml index ee91b01..ff16bd4 100644 --- a/app/src/main/res/layout/activity_normal.xml +++ b/app/src/main/res/layout/activity_normal.xml @@ -787,6 +787,36 @@ android:layout_height="wrap_content" android:text="不支持" /> + + + + + + + + + + \ No newline at end of file -- Gitee