From 0871d7c9d8eb12f759a51351c7d88312f6ede903 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Fri, 15 Dec 2023 20:51:31 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=AE=A3=E4=BC=A0=E8=A7=86=E9=A2=91]=20refact?= =?UTF-8?q?or:=20taxi=E6=97=A0=E4=BA=BA=E5=8C=96=E4=B9=98=E5=AE=A2?= =?UTF-8?q?=E5=B1=8F=20=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E5=8F=AF=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=9C=AC=E6=AC=A1?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=95=B0=E6=8D=AE=E6=8A=BD=E5=8F=96=E5=88=B0?= =?UTF-8?q?json=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=B8=AD=EF=BC=8C?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E4=B9=8B=E5=89=8Dtaxi=E9=83=BD=E6=98=AF?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=96=87=E4=BB=B6=E4=B8=94=E5=8F=AF=E5=85=A8?= =?UTF-8?q?=E5=B1=8F=EF=BC=8C=E6=9C=AC=E6=AC=A1=E6=96=B0=E5=A2=9E=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=B1=95=E7=A4=BA=E4=BD=86=E6=98=AF=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=99=90=E5=88=B6=E5=9B=BE=E7=89=87=E4=B8=8D=E5=8F=AF=E5=85=A8?= =?UTF-8?q?=E5=B1=8F=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wigets/media/MediaPlayerFragment.kt | 2 +- .../passenger/bean/TaxiPassengerVideoPlay.kt | 2 +- .../taxi/passenger/ui/video/InfoVideoView.kt | 110 ++++++++++------- .../ui/video/RecyclerVideoAdapter.java | 17 ++- .../passenger/widget/ConsultVideoPlayer.kt | 4 + app/config/MediaUrlConfig.json | 112 ++++++++++++++++++ 6 files changed, 202 insertions(+), 45 deletions(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt index 4e8bdfa75d..e6b8e3fd7a 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/media/MediaPlayerFragment.kt @@ -40,7 +40,7 @@ class MediaPlayerFragment : override fun onMediaDataSourceChanged(list: List) { val isNewData = arrayListOf.isNotEmpty() CallerLogger.d( - TAG, "onAdDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}" + TAG, "onMediaDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}" ) arrayListOf.clear() arrayListOf.addAll(list) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerVideoPlay.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerVideoPlay.kt index a1caa20e79..d5ae6a96c6 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerVideoPlay.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerVideoPlay.kt @@ -1,3 +1,3 @@ package com.mogo.och.taxi.passenger.bean -class TaxiPassengerVideoPlay(var url: String, var imageUrl: String, var title: String) \ No newline at end of file +class TaxiPassengerVideoPlay(var url: String, var imageUrl: String, var title: String, var type: Int) \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt index 776188dbc4..519c3d788e 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/InfoVideoView.kt @@ -7,7 +7,16 @@ import android.view.LayoutInflater import android.view.View import android.widget.FrameLayout import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.function.main.MainMoGoApplication +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.common.module.wigets.media.IMediaDataSourceListener +import com.mogo.och.common.module.wigets.media.MediaDataSourceManager +import com.mogo.och.common.module.wigets.media.MediaFileCacheManager +import com.mogo.och.common.module.wigets.media.MediaItem import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselLayoutManager @@ -35,7 +44,7 @@ internal class InfoVideoView @JvmOverloads constructor( defStyleAttr ) { - companion object{ + companion object { private const val TAG = "VideoView" } @@ -47,35 +56,9 @@ internal class InfoVideoView @JvmOverloads constructor( private var rvVideoPlaylist: RecyclerView? = null private lateinit var indicatorView: IndicatorView private lateinit var clContain: ConstraintLayout - - private val arrayListOf by lazy { - arrayListOf().apply { - add(TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708596763/全车型混剪增加红旗车队.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969511280/车队.png", - "蘑菇车联覆盖生活的方方面面" - )) - add(TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708554279/红旗车队.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969553174/红旗重新排版.png", - "蘑菇车联之红旗车队" - )) - add( - TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png", - "蘑菇车联牵手成都大运会" - ) - ) - add( - TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708409810/20210610重新排版3屏.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969579713/三屏.png", - "多视角体验蘑菇车联自动驾驶" - ) - ) - } - } + private val mediaList = mutableListOf() + //新的数据,在view不展示的时候完成新数据更新 + private val mNewMediaList = mutableListOf() fun exitFullScreenMode(resetVideoPlayer: Boolean) { val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager @@ -83,7 +66,7 @@ internal class InfoVideoView @JvmOverloads constructor( player?.let { it.exitFullScreenMode() it.onVideoPause() - if(resetVideoPlayer) { + if (resetVideoPlayer) { it.onVideoReset() } } @@ -91,12 +74,50 @@ internal class InfoVideoView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() - configPage() + initData() + MediaFileCacheManager.createFileCacheDir(MainMoGoApplication.getApp().applicationContext) + MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener { + override fun onMediaDataSourceChanged(list: List) { + val isNewData = mediaList.isNotEmpty() + CallerLogger.d( + TAG, + "onMediaDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}" + ) + val localMediaList = mutableListOf() + list.forEach { + val taxiPassengerVideoPlay = TaxiPassengerVideoPlay( + it.fileUrl, + it.coverImageUrl, + it.title, + it.fileType + ) + localMediaList.add(taxiPassengerVideoPlay) + } + if (isNewData) { + if (!isVisible) { + updateMediaListDataAndView(localMediaList) + } else { + mNewMediaList.clear() + mNewMediaList.addAll(localMediaList) + } + } else { + updateMediaListDataAndView(localMediaList) + } + } + }) + } + + private fun updateMediaListDataAndView(newList: MutableList) { + mediaList.clear() + mediaList.addAll(newList) + UiThreadHandler.post { + initData() + } } override fun onVisibilityChanged(changedView: View, visibility: Int) { super.onVisibilityChanged(changedView, visibility) - if(changedView!=this){ + if (changedView != this) { return } val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager @@ -109,17 +130,28 @@ internal class InfoVideoView @JvmOverloads constructor( GSYVideoView.CURRENT_STATE_PAUSE -> { //player.onVideoResume(false) } + else -> {} } } } } + else -> { player?.let { if (!player.isIfCurrentIsFullscreen) { player.onVideoPause() } } + try { + // 在播放完成的时机更新整体数据 + if (mNewMediaList.isNotEmpty()) { + updateMediaListDataAndView(mNewMediaList) + mNewMediaList.clear() + } + } catch (e: Exception) { + e.printStackTrace() + } } } } @@ -130,16 +162,11 @@ internal class InfoVideoView @JvmOverloads constructor( clContain = findViewById(R.id.infoContainer) } - private fun configPage() { -// FullVideoUtils.dismissOverlayView(true) - initData() - } - private fun initData() { val carouselLayoutManager = CarouselLayoutManager(CarouselLayoutManager.HORIZONTAL, true) carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener()) carouselLayoutManager.maxVisibleItems = 1 - indicatorView.notifyDataChanged(arrayListOf.size) + indicatorView.notifyDataChanged(mediaList.size) indicatorView.setSlideMode(IndicatorSlideMode.SCALE) indicatorView.setOrientation(IndicatorOrientation.INDICATOR_HORIZONTAL) indicatorView.setIndicatorStyle(IndicatorStyle.ROUND_RECT) @@ -193,7 +220,7 @@ internal class InfoVideoView @JvmOverloads constructor( } indicatorView.onPageScrolled(currentIndex, fl, 0) } - val recyclerVideoAdapter = RecyclerVideoAdapter(context, arrayListOf, rvVideoPlaylist) + val recyclerVideoAdapter = RecyclerVideoAdapter(context, mediaList, rvVideoPlaylist) recyclerVideoAdapter.setOnThumbImageClilckListener { val (_: Int, player) = getPlayer(carouselLayoutManager) if (player is ConsultVideoPlayer) { @@ -219,7 +246,7 @@ internal class InfoVideoView @JvmOverloads constructor( val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (_: Int, player) = getPlayer(carouselLayoutManager) player?.let { - if(it.isInPlayingState&&!it.isIfCurrentIsFullscreen&&!hasWindowFocus){ + if (it.isInPlayingState && !it.isIfCurrentIsFullscreen && !hasWindowFocus) { player.onVideoPause() } } @@ -227,6 +254,7 @@ internal class InfoVideoView @JvmOverloads constructor( } override fun onDetachedFromWindow() { + MediaDataSourceManager.unInit(TAG) super.onDetachedFromWindow() } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/RecyclerVideoAdapter.java b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/RecyclerVideoAdapter.java index bdf79d44b1..77bcf41e9c 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/RecyclerVideoAdapter.java +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/RecyclerVideoAdapter.java @@ -53,17 +53,27 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter { @@ -71,6 +81,9 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter