[8.1.2+]
[media] [video 收束]
This commit is contained in:
@@ -25,7 +25,7 @@ import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
|
||||
import com.mogo.och.charter.passenger.R
|
||||
import com.mogo.och.charter.passenger.utils.FullVideoUtils
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.skin.widget.SkinImageView
|
||||
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
|
||||
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
|
||||
|
||||
@@ -8,7 +8,6 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.main.MainMoGoApplication
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
@@ -19,11 +18,10 @@ import com.mogo.och.charter.passenger.ui.softcontrol.layoutmanage.CarouselLayout
|
||||
import com.mogo.och.charter.passenger.ui.softcontrol.layoutmanage.CarouselZoomPostLayoutListener
|
||||
import com.mogo.och.charter.passenger.ui.softcontrol.layoutmanage.CenterScrollListener
|
||||
import com.mogo.och.charter.passenger.ui.video.adapter.RecyclerVideoAdapter
|
||||
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.common.module.wigets.media.MediaPlayLogger
|
||||
import com.mogo.och.common.module.biz.media.IVideoListener
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
|
||||
import kotlinx.android.synthetic.main.charter_p_video_fragment.view.rvVideoPlaylist
|
||||
import kotlin.math.floor
|
||||
@@ -80,7 +78,7 @@ class VideoView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
prePlayerPosition = centerItemPosition
|
||||
MediaPlayLogger.printInfoLog("pageSelect, currentPosition=$prePlayerPosition")
|
||||
OchChainLogManager.writeChainLogMedia("Info", "pageSelect, currentPosition=$prePlayerPosition")
|
||||
}
|
||||
|
||||
override fun pageStop() {
|
||||
@@ -122,11 +120,11 @@ class VideoView @JvmOverloads constructor(
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
MediaFileCacheManager.createFileCacheDir(MainMoGoApplication.getApp().applicationContext)
|
||||
MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener {
|
||||
MediaManager.Video.createCacheFileDir()
|
||||
MediaManager.addListener(TAG,object :IVideoListener{
|
||||
override fun onMediaDataSourceChanged(list: List<MediaItem>) {
|
||||
val isNewData = mediaList.isNotEmpty()
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged:isNewData=$isNewData, dataSize=${list.size}, list=${GsonUtils.toJson(list)}")
|
||||
OchChainLogManager.writeChainLogMedia("Info", "onMediaDataSourceChanged:isNewData=$isNewData, dataSize=${list.size}, list=${GsonUtils.toJson(list)}")
|
||||
val localMediaList = mutableListOf<TaxiPassengerVideoPlay>()
|
||||
list.forEach {
|
||||
val taxiPassengerVideoPlay = TaxiPassengerVideoPlay(
|
||||
@@ -140,17 +138,18 @@ class VideoView @JvmOverloads constructor(
|
||||
if (isNewData) {
|
||||
if (!isVisible) {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
OchChainLogManager.writeChainLogMedia("Info", "onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
} else {
|
||||
mNewMediaList.clear()
|
||||
mNewMediaList.addAll(localMediaList)
|
||||
}
|
||||
} else {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
OchChainLogManager.writeChainLogMedia("Info", "onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
}
|
||||
}
|
||||
})
|
||||
MediaManager.Video.init()
|
||||
}
|
||||
|
||||
private fun updateMediaListDataAndView(newList: MutableList<TaxiPassengerVideoPlay>) {
|
||||
@@ -169,7 +168,8 @@ class VideoView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
MediaDataSourceManager.unInit(TAG)
|
||||
MediaManager.Video.unInit()
|
||||
MediaManager.removeListener(TAG)
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
|
||||
@@ -193,7 +193,7 @@ class VideoView @JvmOverloads constructor(
|
||||
if (mNewMediaList.isNotEmpty()) {
|
||||
updateMediaListDataAndView(mNewMediaList)
|
||||
mNewMediaList.clear()
|
||||
MediaPlayLogger.printInfoLog("onVisibilityChanged, 宣传视频数据已更新")
|
||||
OchChainLogManager.writeChainLogMedia("Info", "onVisibilityChanged, 宣传视频数据已更新")
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
|
||||
@@ -11,7 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem;
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem;
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils;
|
||||
import com.mogo.och.charter.passenger.R;
|
||||
import com.mogo.och.charter.passenger.bean.TaxiPassengerVideoPlay;
|
||||
|
||||
@@ -2,4 +2,17 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.mogo.och.biz">
|
||||
|
||||
<application>
|
||||
<activity
|
||||
android:name="com.mogo.och.biz.media.video.MediaPlayerActivity"
|
||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:resizeableActivity="false"
|
||||
android:resumeWhilePausing="true"
|
||||
android:screenOrientation="landscape"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/Main"
|
||||
android:windowSoftInputMode="adjustPan|stateHidden" />
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -3,16 +3,23 @@ package com.mogo.och.biz.media
|
||||
import android.content.Context
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.mogo.eagle.core.function.main.MainMoGoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils
|
||||
import com.mogo.och.biz.media.audition.AuditionManager
|
||||
import com.mogo.och.biz.media.tts.VoiceIn
|
||||
import com.mogo.och.biz.media.tts.VoiceOut
|
||||
import com.mogo.och.biz.media.video.MediaDataSourceManager
|
||||
import com.mogo.och.biz.media.video.MediaPlayerActivity
|
||||
import com.mogo.och.biz.media.video.VideoPlayerFragment
|
||||
import com.mogo.och.common.module.biz.media.IVideoListener
|
||||
import com.mogo.och.common.module.biz.media.MediaService
|
||||
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.biz.media.video.MediaFileCacheManager
|
||||
import com.mogo.tts.base.IMogoTTSCallback
|
||||
import com.mogo.tts.base.LangTtsEntity
|
||||
|
||||
@@ -57,6 +64,12 @@ class MediaProvider : MediaService, CallerBase<IVideoListener>() {
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeMediaDataChange(newDataList: List<MediaItem>) {
|
||||
M_LISTENERS.forEach {
|
||||
it.value.onMediaDataSourceChanged(newDataList)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setTTSFocusChange(speaking: Boolean) {
|
||||
AudioFocusManager.setTTSFocusChange(speaking)
|
||||
}
|
||||
@@ -136,6 +149,26 @@ class MediaProvider : MediaService, CallerBase<IVideoListener>() {
|
||||
VoiceOut.showNoticeOut(notice)
|
||||
}
|
||||
|
||||
override fun startSecondAds() {
|
||||
MultiDisplayUtils.startActWithSecond(ActivityUtils.getTopActivity(), MediaPlayerActivity::class.java)
|
||||
}
|
||||
|
||||
override fun getAdFragment(): VideoPlayerFragment {
|
||||
return VideoPlayerFragment()
|
||||
}
|
||||
|
||||
override fun createCacheFileDir() {
|
||||
MediaFileCacheManager.createFileCacheDir(MainMoGoApplication.getApp().applicationContext)
|
||||
}
|
||||
|
||||
override fun initMediaData() {
|
||||
MediaDataSourceManager.init()
|
||||
}
|
||||
|
||||
override fun unInitMediaData() {
|
||||
MediaDataSourceManager.unInit()
|
||||
}
|
||||
|
||||
override fun stopTTs() {
|
||||
VoiceIn.stopCurrentTts()
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.biz.media
|
||||
import android.annotation.SuppressLint
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
|
||||
object MediaServiceManager {
|
||||
@@ -13,6 +14,12 @@ object MediaServiceManager {
|
||||
private var mediaService: MediaProvider? =
|
||||
ARouter.getInstance().build(OchCommonConst.BIZ_Media).navigation() as MediaProvider
|
||||
|
||||
fun invokeMediaSourceDataChange(newDataList: List<MediaItem>) {
|
||||
mediaService?.invokeMediaDataChange(newDataList)
|
||||
}
|
||||
|
||||
fun invokeCreateCacheFileDir() {
|
||||
mediaService?.createCacheFileDir()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,8 +15,8 @@ import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager.EVENT_KEY_INFE_WITH_MUSIC
|
||||
import com.mogo.och.common.module.utils.FileUtils
|
||||
import com.mogo.och.common.module.wigets.media.MediaBeanManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayLogger
|
||||
import com.mogo.och.biz.media.video.MediaBeanManager
|
||||
import com.mogo.och.biz.media.video.MediaPlayLogger
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.Vehicle
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
|
||||
object MediaBeanManager {
|
||||
@@ -72,56 +73,13 @@ object MediaBeanManager {
|
||||
}
|
||||
}
|
||||
|
||||
data class MediaDataWithVehicleList(val musicDataWithEnvList: MutableList<MediaDataWithVehicle>) {
|
||||
|
||||
}
|
||||
|
||||
data class MediaDataWithVehicle(
|
||||
val B1: B1,
|
||||
val B2: B2,
|
||||
val T1T2: T1T2,
|
||||
val M1: M1,
|
||||
val B1: MediaVehicle,
|
||||
val B2: MediaVehicle,
|
||||
val T1T2: MediaVehicle,
|
||||
val M1: MediaVehicle,
|
||||
)
|
||||
|
||||
|
||||
data class B1(val medias: MutableList<MediaItem>, val musics: MutableList<MusicData>)
|
||||
data class B2(val medias: MutableList<MediaItem>, val musics: MutableList<MusicData>)
|
||||
data class T1T2(val medias: MutableList<MediaItem>, val musics: MutableList<MusicData>)
|
||||
data class M1(val medias: MutableList<MediaItem>, val musics: MutableList<MusicData>)
|
||||
|
||||
data class MediaBean(
|
||||
val medias: MutableList<MediaItem>,
|
||||
val musics: MutableList<MusicData>,
|
||||
)
|
||||
|
||||
data class MediaItem(
|
||||
var priority: Int,
|
||||
var fileUrl: String,
|
||||
var fileType: Int,
|
||||
var coverImageUrl: String,
|
||||
var title: String,
|
||||
val isTemp: Boolean = false
|
||||
) {
|
||||
companion object {
|
||||
const val MEDIA_TYPE_IMAGE = 1
|
||||
const val MEDIA_TYPE_VIDEO = 2
|
||||
|
||||
const val PriorityConfi = 2
|
||||
const val PriorityAd = 1
|
||||
const val PrioritySite = 0
|
||||
|
||||
// 站点优先级 0
|
||||
// 广告优先级 1
|
||||
// 本地配置是 2
|
||||
}
|
||||
|
||||
fun isImageType(): Boolean {
|
||||
return this.fileType == MEDIA_TYPE_IMAGE
|
||||
}
|
||||
|
||||
fun isVideoType(): Boolean {
|
||||
return this.fileType == MEDIA_TYPE_VIDEO
|
||||
}
|
||||
data class MediaVehicle (val medias: MutableList<MediaItem>, val musics: MutableList<MusicData>)
|
||||
|
||||
|
||||
}
|
||||
@@ -1,31 +1,30 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.env.ProjectUtils
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.biz.media.MediaServiceManager
|
||||
import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem.Companion.MEDIA_TYPE_IMAGE
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem.Companion.MEDIA_TYPE_VIDEO
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformTry
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem.Companion.MEDIA_TYPE_IMAGE
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem.Companion.MEDIA_TYPE_VIDEO
|
||||
import io.reactivex.Observable
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Headers
|
||||
import retrofit2.http.Query
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
/**
|
||||
* 广告视频数据源 管理类
|
||||
@@ -64,23 +63,19 @@ object MediaDataSourceManager {
|
||||
|
||||
private var mHasEverGetMediaDataFromMis = false
|
||||
|
||||
private val mMediaDataSourceListenerMap: ConcurrentHashMap<String, IMediaDataSourceListener> =
|
||||
ConcurrentHashMap()
|
||||
|
||||
private val getAdDataSourceLoopRunnable = Runnable {
|
||||
startGetMediaDataSourceLoop()
|
||||
}
|
||||
|
||||
fun init(tag: String, dataSourceListener: IMediaDataSourceListener) {
|
||||
if (!mMediaDataSourceListenerMap.containsKey(tag)) {
|
||||
mMediaDataSourceListenerMap[tag] = dataSourceListener
|
||||
}
|
||||
fun init() {
|
||||
MediaPlayLogger.printInfoLog("init, 初始化环境 isSassProject=${ProjectUtils.isSaas()}")
|
||||
if (ProjectUtils.isSaas()||ProjectUtils.isDali()) {
|
||||
if(ProjectUtils.isSaas()){
|
||||
mNetworkService = MoGoRetrofitFactory.getInstance(OchCommonConst.getEagleMisUrl()).create(IMediaNetworkApi::class.java)
|
||||
mNetworkService = MoGoRetrofitFactory.getInstance(OchCommonConst.getEagleMisUrl()).create(
|
||||
IMediaNetworkApi::class.java)
|
||||
}else if(ProjectUtils.isDali()){
|
||||
mNetworkService = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(IMediaNetworkApi::class.java)
|
||||
mNetworkService = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
|
||||
IMediaNetworkApi::class.java)
|
||||
}
|
||||
MediaPlayLogger.printInfoLog("init, 开始检查后台配置数据")
|
||||
startGetMediaDataSourceLoop()
|
||||
@@ -92,12 +87,9 @@ object MediaDataSourceManager {
|
||||
}
|
||||
}
|
||||
|
||||
fun unInit(tag: String) {
|
||||
fun unInit() {
|
||||
MediaPlayLogger.printInfoLog("unInit")
|
||||
removeGetMediaDataSourceLoop()
|
||||
if (mMediaDataSourceListenerMap.containsKey(tag)) {
|
||||
mMediaDataSourceListenerMap.remove(tag)
|
||||
}
|
||||
mLastMediaDataSourceList.clear()
|
||||
}
|
||||
|
||||
@@ -226,19 +218,12 @@ object MediaDataSourceManager {
|
||||
private fun updateMediaDataSource(newDataList: List<MediaItem>) {
|
||||
mLastMediaDataSourceList.clear()
|
||||
mLastMediaDataSourceList.addAll(newDataList)
|
||||
mMediaDataSourceListenerMap.forEach {
|
||||
val listener = it.value
|
||||
listener.onMediaDataSourceChanged(newDataList)
|
||||
}
|
||||
MediaServiceManager.invokeMediaSourceDataChange(newDataList)
|
||||
MediaPlayLogger.printInfoLog("下发新MediaData给监听者,dataSize=${newDataList.size}")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
interface IMediaDataSourceListener {
|
||||
fun onMediaDataSourceChanged(list: List<MediaItem>)
|
||||
}
|
||||
|
||||
interface IMediaNetworkApi {
|
||||
@Headers("Content-type:application/json;charset=UTF-8")
|
||||
@GET("/platform/biz/adv/screen/advs")
|
||||
@@ -1,10 +1,9 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Environment
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import com.mogo.eagle.core.utilcode.download.DownloadUtils
|
||||
import com.mogo.eagle.core.utilcode.download.callback.IDownloadListener
|
||||
import com.mogo.eagle.core.utilcode.util.EncryptUtils
|
||||
import com.mogo.och.common.module.manager.download.DownloadManager
|
||||
@@ -59,7 +58,7 @@ object MediaFileCacheManager {
|
||||
* 获取文件缓存的缓存path, 文件名以base64编码避免 中文命名,重复文件名的影响
|
||||
*/
|
||||
fun getCacheFileFullPathByUrl(context: Context, mediaUrl: String): String {
|
||||
return getFileCacheDir(context) +File.separator +getCacheFileName(mediaUrl)
|
||||
return getFileCacheDir(context) +File.separator + getCacheFileName(mediaUrl)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import AdvanceImageView
|
||||
import AdvanceVideoView
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.MotionEvent
|
||||
@@ -13,8 +11,9 @@ import androidx.viewpager.widget.ViewPager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.CountDownTimer
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.wigets.media.MediaLoopPlayView.Companion.IMAGE_COUNT_DOWN_SECONDS
|
||||
import com.mogo.och.common.module.wigets.media.MediaLoopPlayView.Companion.TAG
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.biz.media.video.MediaLoopPlayView.Companion.IMAGE_COUNT_DOWN_SECONDS
|
||||
import com.mogo.och.biz.media.video.MediaLoopPlayView.Companion.TAG
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
|
||||
|
||||
class MediaLoopPlayView @JvmOverloads constructor(
|
||||
@@ -93,7 +92,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
|
||||
fun setMediaData(list: MutableList<MediaItem>) {
|
||||
if (list.isEmpty()) {
|
||||
MediaPlayLogger.printInfoLog( "setMediaData, list为空")
|
||||
MediaPlayLogger.printInfoLog("setMediaData, list为空")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -162,7 +161,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
videoView.initVideoUrlData(item.fileUrl, item.coverImageUrl,item.priority,item.isTemp)
|
||||
mItemViewList.add(videoView)
|
||||
} else {
|
||||
MediaPlayLogger.printErrorLog( "addItemView 不支持的文件类型:${item.fileType}")
|
||||
MediaPlayLogger.printErrorLog("addItemView 不支持的文件类型:${item.fileType}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -340,7 +339,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
MediaPlayLogger.printInfoLog( "mImageCountDownTimer, 倒计时${IMAGE_COUNT_DOWN_SECONDS}秒, onFinish")
|
||||
MediaPlayLogger.printInfoLog("mImageCountDownTimer, 倒计时${IMAGE_COUNT_DOWN_SECONDS}秒, onFinish")
|
||||
playNextItemView(false)
|
||||
}
|
||||
}.start()
|
||||
@@ -404,7 +403,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
|
||||
fun setPause() {
|
||||
MediaPlayLogger.printInfoLog("${MediaLoopPlayView.TAG}, setPause")
|
||||
MediaPlayLogger.printInfoLog("$TAG, setPause")
|
||||
if (mItemViewList.size <= 0) {
|
||||
return
|
||||
}
|
||||
@@ -418,7 +417,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
|
||||
fun setResume() {
|
||||
MediaPlayLogger.printInfoLog("${MediaLoopPlayView.TAG}, setResume")
|
||||
MediaPlayLogger.printInfoLog("$TAG, setResume")
|
||||
if (mItemViewList.size <= 0) {
|
||||
return
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -32,13 +33,7 @@ object MediaPlayLogger {
|
||||
*/
|
||||
private fun trackEvent(level: String, msg: String) {
|
||||
ProcessLifecycleOwner.get().lifecycleScope.launch(Dispatchers.IO) {
|
||||
val map: MutableMap<String, Any> = HashMap()
|
||||
map["level"] = level
|
||||
map["msg"] = msg
|
||||
MogoAnalyticUtils.track(
|
||||
MEDIA_PLAY_PROCESS_KEY_NODE_LOG,
|
||||
map
|
||||
)
|
||||
OchChainLogManager.writeChainLogMedia(level,msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
@@ -1,3 +1,5 @@
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.media.AudioManager
|
||||
@@ -21,10 +23,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
|
||||
import com.mogo.och.common.module.utils.CustomManager
|
||||
import com.mogo.och.common.module.R
|
||||
import com.mogo.och.common.module.wigets.media.MediaFileCacheManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.common.module.wigets.media.MediaLoopPlayView
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayLogger
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.skin.utils.SkinResources
|
||||
import com.mogo.skin.widget.SkinImageView
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
package com.mogo.och.biz.media.video
|
||||
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.commons.mvp.Presenter
|
||||
@@ -8,16 +8,18 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
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.biz.R
|
||||
import com.mogo.och.biz.media.MediaServiceManager
|
||||
import com.mogo.och.common.module.biz.media.IVideoListener
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.manager.download.DownloadManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.shuyu.gsyvideoplayer.GSYVideoManager
|
||||
import io.reactivex.disposables.Disposable
|
||||
import kotlinx.android.synthetic.main.fragment_video_player.acb_add_site_video
|
||||
import kotlinx.android.synthetic.main.fragment_video_player.imageVideoRotationView
|
||||
import kotlinx.android.synthetic.main.biz_fragment_video_player.acb_add_site_video
|
||||
import kotlinx.android.synthetic.main.biz_fragment_video_player.imageVideoRotationView
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -33,7 +35,7 @@ class VideoPlayerFragment :
|
||||
private var arrayListOf = mutableListOf<MediaItem>()
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.fragment_video_player
|
||||
return R.layout.biz_fragment_video_player
|
||||
}
|
||||
|
||||
override fun createPresenter(): MediaPlayerPresenter {
|
||||
@@ -52,33 +54,34 @@ class VideoPlayerFragment :
|
||||
setHightPriorityMediaItem(siteList)
|
||||
}
|
||||
MediaManager.addListener(TAG,this)
|
||||
MediaFileCacheManager.createFileCacheDir(MainMoGoApplication.getApp().applicationContext)
|
||||
MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener {
|
||||
override fun onMediaDataSourceChanged(list: List<MediaItem>) {
|
||||
val isNewData = arrayListOf.isNotEmpty()
|
||||
CallerLogger.d(
|
||||
TAG, "onMediaDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}"
|
||||
)
|
||||
arrayListOf.clear()
|
||||
arrayListOf.addAll(list)
|
||||
UiThreadHandler.post {
|
||||
if (isNewData) {
|
||||
imageVideoRotationView?.setNewMediaData(arrayListOf)
|
||||
} else {
|
||||
imageVideoRotationView?.setMediaData(arrayListOf)
|
||||
}
|
||||
}
|
||||
MediaServiceManager.invokeCreateCacheFileDir()
|
||||
MediaDataSourceManager.init()
|
||||
}
|
||||
|
||||
override fun onMediaDataSourceChanged(list: List<MediaItem>) {
|
||||
val isNewData = arrayListOf.isNotEmpty()
|
||||
CallerLogger.d(
|
||||
TAG,
|
||||
"onMediaDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}"
|
||||
)
|
||||
arrayListOf.clear()
|
||||
arrayListOf.addAll(list)
|
||||
UiThreadHandler.post {
|
||||
if (isNewData) {
|
||||
imageVideoRotationView?.setNewMediaData(arrayListOf)
|
||||
} else {
|
||||
imageVideoRotationView?.setMediaData(arrayListOf)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun setHightPriorityMediaItem(list: MutableList<MediaItem>){
|
||||
context?.let {context->
|
||||
val cacheList = list.filter {
|
||||
if(!MediaFileCacheManager.isLocalCacheFileExists(context,it.fileUrl)){
|
||||
if(!MediaFileCacheManager.isLocalCacheFileExists(context, it.fileUrl)){
|
||||
DownloadManager.downloadVideoFile(it.fileUrl,null)
|
||||
}
|
||||
MediaFileCacheManager.isLocalCacheFileExists(context,it.fileUrl)
|
||||
MediaFileCacheManager.isLocalCacheFileExists(context, it.fileUrl)
|
||||
}
|
||||
ThreadUtils.runOnUiThread {
|
||||
imageVideoRotationView.setsetHightPriorityMediaItem(cacheList.toMutableList())
|
||||
@@ -99,7 +102,7 @@ class VideoPlayerFragment :
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
MediaDataSourceManager.unInit(TAG)
|
||||
MediaDataSourceManager.unInit()
|
||||
GSYVideoManager.releaseAllVideos()
|
||||
MediaManager.removeListener(TAG)
|
||||
super.onDestroy()
|
||||
@@ -4,7 +4,7 @@
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<!-- 图片或视频广告-->
|
||||
<com.mogo.och.common.module.wigets.media.MediaLoopPlayView
|
||||
<com.mogo.och.biz.media.video.MediaLoopPlayView
|
||||
android:id="@+id/imageVideoRotationView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
@@ -45,7 +45,6 @@ import com.mogo.och.common.module.biz.order.OrderManager
|
||||
import com.mogo.och.common.module.debug.location.MogoLocationExit
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.view.DebugFloatWindow
|
||||
import com.mogo.och.common.module.wigets.media.MediaBeanManager
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo_msg.MogoReportMsg
|
||||
@@ -78,7 +77,6 @@ object DebugDataDispatch {
|
||||
const val scanner = "scanner"
|
||||
const val ota = "ota"
|
||||
const val video = "video"
|
||||
const val mediaMusic = "mediaAndMusic"
|
||||
const val vlmMessage = "vlmMessage"
|
||||
const val vlmImage = "vlmImage"
|
||||
const val pncAction = "pncAction"
|
||||
@@ -148,11 +146,6 @@ object DebugDataDispatch {
|
||||
CallerVlmManager.invokeVllmImage(time.toDouble(),byteArray)
|
||||
}
|
||||
}
|
||||
mediaMusic -> {
|
||||
val musicList = MediaBeanManager.getMusicList()
|
||||
val mediaList = MediaBeanManager.getMediaList()
|
||||
CallerLogger.d(TAG,"${mediaList}\n${musicList}")
|
||||
}
|
||||
video -> {
|
||||
val ota = intent.getIntExtra("video",0)
|
||||
// rtmp://video.zhidaozhixing.com/live/861130041693196C_2
|
||||
|
||||
@@ -1,17 +1,4 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.mogo.och.common.module">
|
||||
|
||||
<application>
|
||||
<activity
|
||||
android:name=".wigets.media.MediaPlayerActivity"
|
||||
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:resizeableActivity="false"
|
||||
android:resumeWhilePausing="true"
|
||||
android:screenOrientation="landscape"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/Main"
|
||||
android:windowSoftInputMode="adjustPan|stateHidden" />
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -1,16 +1,18 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
|
||||
interface IVideoListener {
|
||||
|
||||
fun diapatchMedia(list :MutableList<MediaItem>)
|
||||
fun diapatchMedia(list :MutableList<MediaItem>){}
|
||||
|
||||
fun setMediaPause(){}
|
||||
|
||||
fun setMediaResume(){}
|
||||
|
||||
fun onMediaDataSourceChanged(list: List<MediaItem>){}
|
||||
|
||||
}
|
||||
|
||||
interface MusicDataChangeListener{
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.tts.base.IMogoTTSCallback
|
||||
import com.mogo.tts.base.LangTtsEntity
|
||||
|
||||
@@ -91,6 +92,27 @@ object MediaManager {
|
||||
|
||||
}
|
||||
|
||||
object Video{
|
||||
fun startSecondAds(){
|
||||
mediaService?.startSecondAds()
|
||||
}
|
||||
|
||||
fun getAdFragment(): Fragment? {
|
||||
return mediaService?.getAdFragment()
|
||||
}
|
||||
|
||||
fun createCacheFileDir() {
|
||||
mediaService?.createCacheFileDir()
|
||||
}
|
||||
|
||||
fun init() {
|
||||
mediaService?.initMediaData()
|
||||
}
|
||||
|
||||
fun unInit() {
|
||||
mediaService?.unInitMediaData()
|
||||
}
|
||||
}
|
||||
object Tts{
|
||||
|
||||
fun loadOuttts(){
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package com.mogo.och.common.module.biz.media
|
||||
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.alibaba.android.arouter.facade.template.IProvider
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MusicData
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.tts.base.IMogoTTSCallback
|
||||
import com.mogo.tts.base.LangTtsEntity
|
||||
|
||||
@@ -58,4 +59,14 @@ interface MediaService : IProvider {
|
||||
|
||||
fun showNoticeOut(notice: String?)
|
||||
|
||||
fun startSecondAds()
|
||||
|
||||
fun getAdFragment() :Fragment
|
||||
|
||||
fun createCacheFileDir()
|
||||
|
||||
fun initMediaData()
|
||||
|
||||
fun unInitMediaData()
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.mogo.och.common.module.biz.media.data
|
||||
|
||||
data class MediaItem(
|
||||
var priority: Int,
|
||||
var fileUrl: String,
|
||||
var fileType: Int,
|
||||
var coverImageUrl: String,
|
||||
var title: String,
|
||||
val isTemp: Boolean = false
|
||||
) {
|
||||
companion object {
|
||||
const val MEDIA_TYPE_IMAGE = 1
|
||||
const val MEDIA_TYPE_VIDEO = 2
|
||||
|
||||
const val PriorityConfi = 2
|
||||
const val PriorityAd = 1
|
||||
const val PrioritySite = 0
|
||||
|
||||
// 站点优先级 0
|
||||
// 广告优先级 1
|
||||
// 本地配置是 2
|
||||
}
|
||||
|
||||
fun isImageType(): Boolean {
|
||||
return this.fileType == MEDIA_TYPE_IMAGE
|
||||
}
|
||||
|
||||
fun isVideoType(): Boolean {
|
||||
return this.fileType == MEDIA_TYPE_VIDEO
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -68,6 +68,11 @@ object OchChainLogManager {
|
||||
|
||||
const val EVENT_KEY_INFO_BRIDGE = "analytics_event_och_bridge"
|
||||
|
||||
const val EVENT_KEY_INFO_MEDIA = "analytics_event_och_media"
|
||||
|
||||
fun writeChainLogMedia(title: String,info: String) {
|
||||
writeChainLog(title, info, true, EVENT_KEY_INFO_MEDIA)
|
||||
}
|
||||
|
||||
fun writeCHainLogBridge(title: String,info: String) {
|
||||
writeChainLog(title, info, false, EVENT_KEY_INFO_BRIDGE)
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.shuttle.weaknet.passenger.ui
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerRoadV2NEventWindowListenerManager
|
||||
@@ -17,7 +18,6 @@ import com.mogo.och.common.module.manager.transform.OchTransform
|
||||
import com.mogo.och.common.module.manager.transform.OchTransformDispatch
|
||||
import com.mogo.och.shuttle.weaknet.passenger.R
|
||||
import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2Presenter
|
||||
import com.mogo.och.common.module.wigets.media.VideoPlayerFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.line.PM2DrivingInfoFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.map.PM2HPMapFragment
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.mind.AIMessageManager
|
||||
@@ -40,7 +40,7 @@ class PM2BaseFragment :
|
||||
|
||||
private var drivingFragment: PM2DrivingInfoFragment? = null
|
||||
private var hdMapFragment: PM2HPMapFragment? = null
|
||||
private var mediaFragment: VideoPlayerFragment? = null
|
||||
private var mediaFragment: Fragment? = null
|
||||
|
||||
// 视频直播流
|
||||
private val ochTransform = object : OchTransformDispatch {
|
||||
@@ -99,7 +99,9 @@ class PM2BaseFragment :
|
||||
childFragmentManager.beginTransaction().add(R.id.hd_map_fragment, hdMapFragment!!)
|
||||
.show(hdMapFragment!!).commitAllowingStateLoss()
|
||||
|
||||
if (mediaFragment == null) mediaFragment = VideoPlayerFragment()
|
||||
if (mediaFragment == null) {
|
||||
mediaFragment = MediaManager.Video.getAdFragment()
|
||||
}
|
||||
childFragmentManager.beginTransaction().add(R.id.video_fragment, mediaFragment!!)
|
||||
.show(mediaFragment!!).commitAllowingStateLoss()
|
||||
|
||||
|
||||
@@ -6,13 +6,10 @@ import androidx.fragment.app.Fragment
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils
|
||||
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
|
||||
import com.mogo.och.shuttle.weaknet.passenger.model.TicketModel
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.widget.BusPStatusBarView
|
||||
import com.mogo.och.shuttle.weaknet.passenger.ui.BusPassengerRouteFragment
|
||||
@@ -49,7 +46,7 @@ class ShuttlePassengerProvider : CommonServiceImpl() {
|
||||
|
||||
override fun getFragment(): Fragment {
|
||||
if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode) && DeviceUtils.isEB5Model()) {
|
||||
MultiDisplayUtils.startActWithSecond(ActivityUtils.getTopActivity(), MediaPlayerActivity::class.java)
|
||||
MediaManager.Video.startSecondAds()
|
||||
}
|
||||
if(mPM2Fragment==null){
|
||||
mPM2Fragment = if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.bridge.distance.IDistanceListener
|
||||
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
|
||||
import com.mogo.och.common.module.biz.birdge.BridgeManager
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.manager.download.DownloadManager
|
||||
import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager
|
||||
@@ -37,7 +38,6 @@ import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.PinYinUtil
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.data.bean.BusRoutesResult
|
||||
import com.mogo.och.data.bean.BusStationBean
|
||||
import com.mogo.och.data.bean.BusTransferData
|
||||
|
||||
@@ -12,18 +12,15 @@ import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
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.ToastUtils
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager
|
||||
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.common.module.wigets.media.MediaPlayLogger
|
||||
import com.mogo.och.common.module.biz.media.IVideoListener
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.unmanned.passenger.ui.video.RecyclerVideoAdapterNew.OnThumbImageClilckListener
|
||||
import com.mogo.och.unmanned.passenger.widget.ConsultVideoPlayer
|
||||
@@ -95,17 +92,16 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
MediaFileCacheManager.createFileCacheDir(MainMoGoApplication.getApp().applicationContext)
|
||||
MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener {
|
||||
MediaManager.Video.createCacheFileDir()
|
||||
MediaManager.addListener(TAG,object :IVideoListener{
|
||||
override fun onMediaDataSourceChanged(list: List<MediaItem>) {
|
||||
val isNewData = mediaList.isNotEmpty()
|
||||
MediaPlayLogger.printInfoLog(
|
||||
OchChainLogManager.writeChainLogMedia("info",
|
||||
"onMediaDataSourceChanged:isNewData=$isNewData, dataSize=${list.size}, list=${
|
||||
GsonUtils.toJson(
|
||||
list
|
||||
)
|
||||
}"
|
||||
)
|
||||
GsonUtils.toJson(
|
||||
list
|
||||
)
|
||||
}")
|
||||
val localMediaList = mutableListOf<TaxiPassengerVideoPlay>()
|
||||
list.forEach {
|
||||
val taxiPassengerVideoPlay = TaxiPassengerVideoPlay(
|
||||
@@ -119,17 +115,18 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
if (isNewData) {
|
||||
if (!isVisible) {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
OchChainLogManager.writeChainLogMedia("info","onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
} else {
|
||||
mNewMediaList.clear()
|
||||
mNewMediaList.addAll(localMediaList)
|
||||
}
|
||||
} else {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
OchChainLogManager.writeChainLogMedia("info","onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
}
|
||||
}
|
||||
})
|
||||
MediaManager.Video.init()
|
||||
}
|
||||
|
||||
private fun updateMediaListDataAndView(newList: MutableList<TaxiPassengerVideoPlay>) {
|
||||
@@ -224,7 +221,8 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
MediaDataSourceManager.unInit(TAG)
|
||||
MediaManager.removeListener(TAG)
|
||||
MediaManager.Video.unInit()
|
||||
GSYVideoManager.releaseAllVideos()
|
||||
super.onDetachedFromWindow()
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem;
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem;
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerVideoPlay;
|
||||
import com.mogo.och.unmanned.taxi.passenger.R;
|
||||
import com.mogo.skin.utils.SkinResources;
|
||||
|
||||
@@ -9,7 +9,7 @@ import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
import com.mogo.skin.utils.SkinResources
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.mogo.eagle.core.utilcode.util.TimeTransformUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
|
||||
import com.mogo.och.common.module.biz.media.MediaManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaItem
|
||||
import com.mogo.och.common.module.biz.media.data.MediaItem
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.unmanned.passenger.ui.statusview.StatusBarView
|
||||
import com.mogo.och.unmanned.passenger.ui.video.FullVideoUtils
|
||||
|
||||
@@ -87,12 +87,12 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvAnswer"
|
||||
style="@style/AIMsgTextTitle"
|
||||
tools:text="前方道路施工" />
|
||||
|
||||
|
||||
<com.youth.banner.Banner
|
||||
android:id="@+id/picBanner"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
Reference in New Issue
Block a user