From 374610dbc02a01d96bc876c6aa09ba4d6640ae7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=8E=89=E4=B9=85?= <1484288157@qq.com> Date: Wed, 15 Jan 2020 19:56:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/download/cache/CacheManager.java | 4 +-- .../detail/VideoDetailContainerFragment.kt | 27 ++++++++++--------- .../main/res/drawable/bg_video_detail_top.xml | 8 ++++++ .../layout/layout_video_detail_surface.xml | 5 ++++ 4 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 app/src/main/res/drawable/bg_video_detail_top.xml diff --git a/app/src/main/java/com/gh/download/cache/CacheManager.java b/app/src/main/java/com/gh/download/cache/CacheManager.java index 7154b8d0a2..b71b3eec00 100644 --- a/app/src/main/java/com/gh/download/cache/CacheManager.java +++ b/app/src/main/java/com/gh/download/cache/CacheManager.java @@ -165,7 +165,7 @@ public class CacheManager { } fileOutputStream.flush(); getDownCalls().remove(url); - } catch (IOException ex) { + } catch (Exception ex) { ex.printStackTrace(); } finally { if (is != null) { @@ -202,7 +202,7 @@ public class CacheManager { response.close(); return contentLength == 0 ? CacheInfo.TOTAL_ERROR : contentLength; } - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } return CacheInfo.TOTAL_ERROR; diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt index 62c23aaa7a..d45d063559 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt @@ -38,6 +38,7 @@ import com.lightgame.download.DownloadEntity import com.lightgame.listeners.OnBackPressedListener import com.scwang.smartrefresh.layout.footer.ClassicsFooter import com.shuyu.gsyvideoplayer.video.base.GSYVideoView.CURRENT_STATE_PAUSE +import com.shuyu.gsyvideoplayer.video.base.GSYVideoView.CURRENT_STATE_PLAYING import io.reactivex.disposables.Disposable import kotlinx.android.synthetic.main.fragment_video_detail_container.* import kotlinx.android.synthetic.main.reuse_no_connection.* @@ -240,6 +241,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { if (mScheduledPlayDisposable != null && !mScheduledPlayDisposable!!.isDisposed) { mScheduledPlayDisposable!!.dispose() + mScheduledPlayDisposable = null } val isShowClick = SPUtils.getBoolean(Constants.SP_SHOW_CLICK_GUIDE) @@ -259,13 +261,14 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mScheduledPlayDisposable = rxTimer(1) { if (it >= 500) { mScheduledPlayDisposable?.dispose() + mScheduledPlayDisposable = null if (pos + 2 <= mAdapter.videoList.size - 1) {//预加载视频 CacheManager.getInstance().download(mAdapter.videoList[pos + 1].url, object : CacheObserver() {}) CacheManager.getInstance().download(mAdapter.videoList[pos + 2].url, object : CacheObserver() {}) } else if (pos + 1 <= mAdapter.videoList.size - 1) { CacheManager.getInstance().download(mAdapter.videoList[pos + 1].url, object : CacheObserver() {}) } - if (mLastPosition != pos && videoView?.isInPlayingState != true) { + if (mLastPosition != pos /*&& videoView?.isInPlayingState != true*/) { CacheManager.getInstance().cancel(mAdapter.videoList[pos].url) CustomManager.releaseAllVideos("detail_${mViewModel.uuid}") videoView?.startPlayLogic() @@ -438,7 +441,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { val videoView = findFirstCompletelyVisibleVideoViewByPosition() videoView?.run { if (currentState == CURRENT_STATE_PAUSE) { - CustomManager.onResume("detail_${mViewModel.uuid}", false) +// CustomManager.onResume("detail_${mViewModel.uuid}", false) videoView.onVideoResume(false) } else {//快速切换视频后再切换页面可能没有播放 videoView.startPlayLogic() @@ -461,19 +464,19 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { mScheduledPlayDisposable!!.dispose() mScheduledPlayDisposable = null } - DownloadManager.getInstance(requireContext()).removeObserver(dataWatcher) - findFirstCompletelyVisibleVideoViewByPosition()?.uploadVideoStreamingPlaying("暂停页面") - if (pauseVideo[mViewModel.uuid] == true) { - CustomManager.onPause("detail_${mViewModel.uuid}") - findFirstCompletelyVisibleVideoViewByPosition()?.onVideoPause() - } - mBaseHandler.postDelayed({ + val videoView = findFirstCompletelyVisibleVideoViewByPosition() + videoView?.run { + videoView.uploadVideoStreamingPlaying("暂停页面") if (pauseVideo[mViewModel.uuid] == true) { - CustomManager.onPause("detail_${mViewModel.uuid}") - findFirstCompletelyVisibleVideoViewByPosition()?.onVideoPause() + if (videoView.currentState == CURRENT_STATE_PLAYING) { +// CustomManager.onPause("detail_${mViewModel.uuid}") + videoView.onVideoPause() + } else { + CustomManager.releaseAllVideos("detail_${mViewModel.uuid}") + } } - }, 500) + } ?: CustomManager.releaseAllVideos("detail_${mViewModel.uuid}") if (slideGuideAnimation.isAnimating) { slideGuideAnimation.cancelAnimation() guideRl.visibility = View.GONE diff --git a/app/src/main/res/drawable/bg_video_detail_top.xml b/app/src/main/res/drawable/bg_video_detail_top.xml new file mode 100644 index 0000000000..f1913be85c --- /dev/null +++ b/app/src/main/res/drawable/bg_video_detail_top.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_video_detail_surface.xml b/app/src/main/res/layout/layout_video_detail_surface.xml index 90c24b27f7..9e5f733935 100644 --- a/app/src/main/res/layout/layout_video_detail_surface.xml +++ b/app/src/main/res/layout/layout_video_detail_surface.xml @@ -45,6 +45,11 @@ + +