From 9195fdf217f9d73d59f0eccab3acea32f273668c Mon Sep 17 00:00:00 2001 From: aibingbing Date: Thu, 9 Mar 2023 23:45:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=B0=86=E6=98=8E=E5=90=9B?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9A=84=E5=AE=A3=E4=BC=A0=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E4=BC=98=E5=8C=96=E5=A4=8D=E5=88=B6=E5=88=B0?= =?UTF-8?q?=E5=85=AC=E5=85=B1module;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/wigets/video/VideoPlayerView.kt | 64 ++++++++++++++----- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt index 5cdc31da61..b74b4acb64 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/video/VideoPlayerView.kt @@ -21,6 +21,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.CountDownTimer import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.R import com.mogo.och.common.module.wigets.video.ImageVideoRotationView import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder @@ -29,7 +30,6 @@ import com.shuyu.gsyvideoplayer.utils.Debuger import com.shuyu.gsyvideoplayer.utils.GSYVideoType import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer import java.io.File -import java.lang.Exception class AdvanceVideoView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null @@ -92,8 +92,20 @@ class AdvanceVideoView @JvmOverloads constructor( } private fun loadCacheImg() { + videoViewPlayer?.thumbImageView = cacheImage cacheImage?.setImageResource(R.drawable.video_holder) setCacheImageViewVisible() + Logger.d(ImageVideoRotationView.TAG, "setVideoPath") + cacheImage?.let { + Glide.with(context).load(cacheImageUrl) + .apply( + RequestOptions().placeholder(R.drawable.video_holder) + .error(R.drawable.video_holder) + .fallback(R.drawable.video_holder) + .centerCrop() + ) + .into(it) + } } fun clearLocalErrorVideo() { @@ -106,13 +118,11 @@ class AdvanceVideoView @JvmOverloads constructor( @SuppressLint("CheckResult") fun setCacheImageViewVisible() { - videoViewPlayer?.thumbImageView = cacheImage videoViewPlayer?.setCacheImageViewVisible() } fun setCacheImageViewGone() { videoViewPlayer?.setCacheImageViewGone() - videoViewPlayer?.clearThumbImageView() } fun setVideo(onCompletionListener: GSYSampleCallBack) { @@ -187,6 +197,10 @@ class AdvanceVideoView @JvmOverloads constructor( override fun onPause(url: String?, threadBean: ThreadBean?) { Logger.d(ImageVideoRotationView.TAG, "download-onPause") +// UiThreadHandler.postDelayed(Runnable { +// startDownLoadVideo() +// },DOWNLOAD_DELAY) + // todo 测试下网络断掉是否会走onpause,且网络回复也不会继续下载 } override fun onProgress(url: String?, length: Int) { @@ -194,10 +208,24 @@ class AdvanceVideoView @JvmOverloads constructor( } override fun onFinished(url: String?, threadBean: ThreadBean?) { - Logger.d(ImageVideoRotationView.TAG, "download-onFinished") - //下载完成 - ThreadUtils.runOnUiThread { - startPlay() + Logger.d(ImageVideoRotationView.TAG, "download-onFinished = $url") + if (url.equals(fileNetPath)) { //发现下载工具在断网又连网后,已完成的任务又都下载,跳转播放出现问题 + //下载完成 + ThreadUtils.runOnUiThread { + startPlay() + } + } else {//如果当前文件不存在再次去下载当前的 + Logger.d( + ImageVideoRotationView.TAG, "download-onFinished = not current" + + ",currentUrl = $fileNetPath " + ) + if (FileUtils.isFileExists(mVideoDirPath + downloadVideoName)) { + Logger.d(ImageVideoRotationView.TAG, "have download startPlay") + startPlay() + return + } else { + startDownLoadVideo() + } } } @@ -230,10 +258,12 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter ViewPager.OnPageChangeListener { private val mContext: Context = context private val mViewPager: ViewPager = viewPager + private var dataList = mutableListOf() private var viewList = mutableListOf() private var lastPosition = -1 + private var current = 0 private val time = 5000 private var pause = false @@ -242,9 +272,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter fun setData(list: MutableList) { if (list.isEmpty()) return dataList.addAll(list) - viewList.clear() - list.forEach { addView(it) } @@ -258,7 +286,6 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter Logger.d(ImageVideoRotationView.TAG, "第一个是视频") val video = viewList[mViewPager.currentItem] as AdvanceVideoView video.setVideo(gsySampleCallBack) - } else if (viewList[mViewPager.currentItem] is AdvanceImageView) { Logger.d(ImageVideoRotationView.TAG, "startTimer()_1") current = 0//换页重新计算时间 @@ -331,7 +358,6 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter ImageVideoRotationView.TAG, "state = $state currentItem = $currentItem lastPosition = $lastPosition" ) - if (viewList.size > 1) { //多于1,才会循环跳转 if (viewList[mViewPager.currentItem] is AdvanceVideoView) { val videoView = (viewList[mViewPager.currentItem] as AdvanceVideoView) @@ -348,11 +374,14 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter } private var gsySampleCallBack = object : GSYSampleCallBack() { + override fun onPrepared(url: String?, vararg objects: Any?) { Logger.d(ImageVideoRotationView.TAG, "onPrepared") if (viewList[mViewPager.currentItem] is AdvanceVideoView) { val videoView = (viewList[mViewPager.currentItem] as AdvanceVideoView) - videoView.setCacheImageViewGone() + UiThreadHandler.postDelayed(Runnable { + videoView.setCacheImageViewGone() + }, 1500) } } @@ -440,9 +469,15 @@ class AdvanceImageView @JvmOverloads constructor( @SuppressLint("CheckResult") fun setImagePath(path: String) { + imageView?.setImageResource(R.drawable.video_holder) imageView?.let { Glide.with(context).load(path) - .apply(RequestOptions().placeholder(R.drawable.video_holder).centerCrop()) + .apply( + RequestOptions().placeholder(R.drawable.video_holder) + .error(R.drawable.video_holder) + .fallback(R.drawable.video_holder) + .centerCrop() + ) .into(it) } } @@ -495,14 +530,11 @@ class AdvanceGSYVideoPlayer : StandardGSYVideoPlayer { setViewShowState(mBottomProgressBar, INVISIBLE) setViewShowState(mBackButton, INVISIBLE) setViewShowState(mStartButton, INVISIBLE) - setViewShowState(mTopContainer, INVISIBLE) - setViewShowState(mLoadingProgressBar, INVISIBLE) setViewShowState( mLockScreen, INVISIBLE ) - setIsTouchWiget(false) isFocusableInTouchMode = false }