[宣传视频] feat: 宣传视频相关的统一日志打印TAG,关键日志统一上传大数据平台;
This commit is contained in:
@@ -24,6 +24,7 @@ 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.shuyu.gsyvideoplayer.video.base.GSYVideoView
|
||||
import kotlinx.android.synthetic.main.charter_p_video_fragment.view.rvVideoPlaylist
|
||||
import kotlin.math.floor
|
||||
@@ -80,6 +81,7 @@ class VideoView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
prePlayerPosition = centerItemPosition
|
||||
MediaPlayLogger.printInfoLog("pageSelect, currentPosition=$prePlayerPosition")
|
||||
}
|
||||
|
||||
override fun pageStop() {
|
||||
@@ -125,10 +127,7 @@ class VideoView @JvmOverloads constructor(
|
||||
MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener {
|
||||
override fun onMediaDataSourceChanged(list: List<MediaItem>) {
|
||||
val isNewData = mediaList.isNotEmpty()
|
||||
CallerLogger.d(
|
||||
TAG,
|
||||
"onMediaDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged:isNewData=$isNewData, dataSize=${list.size}, list=${GsonUtils.toJson(list)}")
|
||||
val localMediaList = mutableListOf<TaxiPassengerVideoPlay>()
|
||||
list.forEach {
|
||||
val taxiPassengerVideoPlay = TaxiPassengerVideoPlay(
|
||||
@@ -142,12 +141,14 @@ class VideoView @JvmOverloads constructor(
|
||||
if (isNewData) {
|
||||
if (!isVisible) {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
} else {
|
||||
mNewMediaList.clear()
|
||||
mNewMediaList.addAll(localMediaList)
|
||||
}
|
||||
} else {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -193,6 +194,7 @@ class VideoView @JvmOverloads constructor(
|
||||
if (mNewMediaList.isNotEmpty()) {
|
||||
updateMediaListDataAndView(mNewMediaList)
|
||||
mNewMediaList.clear()
|
||||
MediaPlayLogger.printInfoLog("onVisibilityChanged, 宣传视频数据已更新")
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
|
||||
@@ -10,7 +10,6 @@ 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.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
@@ -32,7 +31,7 @@ import java.util.concurrent.ConcurrentHashMap
|
||||
* 如果无网络或无司机SN或请求异常 失败5次后,立马使用第二优先级本地数据播放
|
||||
* 失败尝试时间间隔:1秒
|
||||
* 2.第二优先级:使用本地数据播放
|
||||
* 3.请求管理后台数据成功后:间隔10分钟再次检查
|
||||
* 3.请求管理后台数据成功后:间隔5分钟再次检查
|
||||
*/
|
||||
object MediaDataSourceManager {
|
||||
private val TAG = MediaDataSourceManager::class.java.simpleName
|
||||
@@ -77,17 +76,12 @@ object MediaDataSourceManager {
|
||||
mMediaDataSourceListenerMap[tag] = dataSourceListener
|
||||
}
|
||||
val isSassProject = isSassProject()
|
||||
CallerLogger.i(
|
||||
TAG,
|
||||
"init, 初始化环境 isSassProject=$isSassProject"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("init, 初始化环境 isSassProject=$isSassProject")
|
||||
if (isSassProject) {
|
||||
MediaPlayLogger.printInfoLog("init, 开始检查后台配置数据")
|
||||
startGetMediaDataSourceLoop()
|
||||
} else {
|
||||
CallerLogger.i(
|
||||
TAG,
|
||||
"init, 使用本地配置数据"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("init, 使用本地配置数据初始化")
|
||||
//非Sass环境下后端没有实现可配置,默认只走本地配置
|
||||
val localAdDataList = getMediaDataFromLocalConfig()
|
||||
updateMediaDataSource(localAdDataList)
|
||||
@@ -95,6 +89,7 @@ object MediaDataSourceManager {
|
||||
}
|
||||
|
||||
fun unInit(tag: String) {
|
||||
MediaPlayLogger.printInfoLog("unInit")
|
||||
removeGetMediaDataSourceLoop()
|
||||
if (mMediaDataSourceListenerMap.containsKey(tag)) {
|
||||
mMediaDataSourceListenerMap.remove(tag)
|
||||
@@ -110,28 +105,22 @@ object MediaDataSourceManager {
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
private fun startGetMediaDataSourceLoop() {
|
||||
MediaPlayLogger.printInfoLog("startGetMediaDataSourceLoop, 开始执行后台配置数据检查")
|
||||
removeGetMediaDataSourceLoop()
|
||||
// 失败5次,且从来没有从MIS获取配置信息成功过,先试用本地数据播放
|
||||
if (mRetryCount == RETRY_MAX_COUNT && !mHasEverGetMediaDataFromMis) {
|
||||
val localAdDataList = getMediaDataFromLocalConfig()
|
||||
updateMediaDataSource(localAdDataList)
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:失败${mRetryCount}次,先使用本地数据播放"
|
||||
)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:失败${mRetryCount}次,先使用本地数据播放")
|
||||
}
|
||||
if (driverSn.isBlank()) {
|
||||
CallerLogger.e(
|
||||
TAG, "startGetMediaDataSourceLoop:司机屏sn为空,跳过本次查询"
|
||||
)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:司机屏sn为空,跳过本次查询")
|
||||
mRetryCount++
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 1000L)
|
||||
return
|
||||
}
|
||||
if (!NetworkUtils.isConnected()) {
|
||||
CallerLogger.e(
|
||||
TAG, "startGetMediaDataSourceLoop:当前无网络,跳过本次查询"
|
||||
)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:当前无网络,跳过本次查询")
|
||||
mRetryCount++
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 1000L)
|
||||
return
|
||||
@@ -139,9 +128,8 @@ object MediaDataSourceManager {
|
||||
getMediaDataFromMis(object : OchCommonServiceCallback<MediaDataResp> {
|
||||
override fun onSuccess(data: MediaDataResp?) {
|
||||
mHasEverGetMediaDataFromMis = true
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,MediaData=${
|
||||
MediaPlayLogger.printInfoLog(
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,MediaSize=${data?.data?.size}, MediaData=${
|
||||
GsonUtils.toJson(
|
||||
data
|
||||
)
|
||||
@@ -152,45 +140,39 @@ object MediaDataSourceManager {
|
||||
if (newDataList.isNotEmpty()) {
|
||||
if (compareMediaDataSource(newDataList)) {
|
||||
updateMediaDataSource(newDataList)
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,更新数据"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("startGetMediaDataSourceLoop:success, 从管理后台获取到数据,数据有变化更新数据")
|
||||
} else {
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:success, 从管理后台获取到数据,数据无变化"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("startGetMediaDataSourceLoop:success, 从管理后台获取到数据,数据无变化无需更新")
|
||||
}
|
||||
} else {
|
||||
//请求成功获取到后台配置数据了,但是数据为空,此时为了有内容展示,还是使用本地数据更新播放
|
||||
if (mLastMediaDataSourceList.isEmpty()) {
|
||||
val localAdDataList = getMediaDataFromLocalConfig()
|
||||
updateMediaDataSource(localAdDataList)
|
||||
MediaPlayLogger.printInfoLog("startGetMediaDataSourceLoop:success, 从管理后台获取到数据,返回数据为空,使用本地配置数据播放")
|
||||
}
|
||||
}
|
||||
|
||||
// 获取成功后,延迟5分钟再查询
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 5 * 60 * 1000L)
|
||||
MediaPlayLogger.printInfoLog("startGetMediaDataSourceLoop:success, 延迟5分钟后再次检查更新")
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
CallerLogger.e(
|
||||
TAG,
|
||||
"startGetMediaDataSourceLoop:failed, code=$code, msg=$msg"
|
||||
)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:failed, code=$code, msg=$msg")
|
||||
mRetryCount++
|
||||
val delay = if (mHasEverGetMediaDataFromMis) 5000L else 1000L
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, delay)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:failed, 延迟${delay / 1000L}秒后再次请求")
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
CallerLogger.e(
|
||||
TAG, "startGetMediaDataSourceLoop:error, 网络异常"
|
||||
)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:error, 网络异常")
|
||||
mRetryCount++
|
||||
val delay = if (mHasEverGetMediaDataFromMis) 5000L else 1000L
|
||||
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, delay)
|
||||
MediaPlayLogger.printErrorLog("startGetMediaDataSourceLoop:error, 网络异常,延迟${delay / 1000L}秒后再次请求")
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -200,9 +182,7 @@ object MediaDataSourceManager {
|
||||
}
|
||||
|
||||
private fun getMediaDataFromMis(callback: OchCommonServiceCallback<MediaDataResp>) {
|
||||
CallerLogger.d(
|
||||
TAG, "getMediaDataFromMis:准备发送请求,driverSn=$driverSn"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("getMediaDataFromMis:准备发送请求,driverSn=$driverSn")
|
||||
mNetworkService.queryMediaDataFromMis(
|
||||
sn = driverSn,
|
||||
screenType = "2",
|
||||
@@ -219,6 +199,7 @@ object MediaDataSourceManager {
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
MediaPlayLogger.printInfoLog("getMediaDataFromLocalConfig, 获取本地配置数据,dataSize=${localAdDataList.size}")
|
||||
return localAdDataList
|
||||
}
|
||||
|
||||
@@ -249,6 +230,7 @@ object MediaDataSourceManager {
|
||||
val listener = it.value
|
||||
listener.onMediaDataSourceChanged(newDataList)
|
||||
}
|
||||
MediaPlayLogger.printInfoLog("下发新MediaData给监听者,dataSize=${newDataList.size}")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ object MediaFileCacheManager {
|
||||
*/
|
||||
fun createFileCacheDir(context: Context): Boolean {
|
||||
val cacheDirPath = getFileCacheDir(context)
|
||||
MediaPlayLogger.printInfoLog("createFileCacheDir, dirPath=$cacheDirPath")
|
||||
return com.mogo.eagle.core.utilcode.util.FileUtils.createFileDir(cacheDirPath)
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ class MediaLoopPlayView @JvmOverloads constructor(
|
||||
pagerAdapter?.setMediaData(list)
|
||||
}
|
||||
|
||||
fun setNewMediaData(list: MutableList<MediaItem>){
|
||||
fun setNewMediaData(list: MutableList<MediaItem>) {
|
||||
pagerAdapter?.setNewMediaData(list)
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
|
||||
private var mDataList = mutableListOf<MediaItem>()
|
||||
private var mItemViewList = mutableListOf<View>()
|
||||
|
||||
//新的数据,在轮播下一次切换的时机完成整体数据的更新
|
||||
private val mNewDataList: MutableList<MediaItem> = mutableListOf()
|
||||
|
||||
@@ -85,7 +86,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
|
||||
fun setMediaData(list: MutableList<MediaItem>) {
|
||||
if (list.isEmpty()) {
|
||||
CallerLogger.d(MediaLoopPlayView.TAG, "setMediaData, list为空")
|
||||
MediaPlayLogger.printInfoLog( "setMediaData, list为空")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -105,7 +106,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
}
|
||||
|
||||
fun setNewMediaData(list: MutableList<MediaItem>){
|
||||
fun setNewMediaData(list: MutableList<MediaItem>) {
|
||||
mNewDataList.clear()
|
||||
mNewDataList.addAll(list)
|
||||
}
|
||||
@@ -124,7 +125,6 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
@@ -147,7 +147,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
videoView.initVideoUrlData(item.fileUrl, item.coverImageUrl)
|
||||
mItemViewList.add(videoView)
|
||||
} else {
|
||||
CallerLogger.d(MediaLoopPlayView.TAG, "addItemView 不支持的文件类型:${item.fileType}")
|
||||
MediaPlayLogger.printErrorLog( "addItemView 不支持的文件类型:${item.fileType}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,26 +160,17 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
val currentPosition = mViewPager.currentItem
|
||||
val currentMediaItem = mDataList[currentPosition]
|
||||
if (mItemViewList[currentPosition] is AdvanceVideoView) {
|
||||
CallerLogger.d(
|
||||
MediaLoopPlayView.TAG,
|
||||
"startLoopPlay: AdvanceVideoView, url=${currentMediaItem.fileUrl}"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("startLoopPlay: AdvanceVideoView, url=${currentMediaItem.fileUrl}")
|
||||
val videoView = mItemViewList[currentPosition] as AdvanceVideoView
|
||||
videoView.setThumbImageViewVisible()
|
||||
videoView.startPlayVideo(videoPlayLifecycleCallBack)
|
||||
} else if (mItemViewList[currentPosition] is AdvanceImageView) {
|
||||
CallerLogger.d(
|
||||
MediaLoopPlayView.TAG,
|
||||
"startLoopPlay: AdvanceImageView, url=${currentMediaItem.fileUrl}"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("startLoopPlay: AdvanceImageView, url=${currentMediaItem.fileUrl}")
|
||||
val imageView = mItemViewList[currentPosition] as AdvanceImageView
|
||||
imageView.displayImage()
|
||||
startImageCountDownTimer()
|
||||
} else {
|
||||
CallerLogger.d(
|
||||
MediaLoopPlayView.TAG,
|
||||
"startLoopPlay 不支持的文件类型:${currentMediaItem.fileType}, url=${currentMediaItem.fileUrl}"
|
||||
)
|
||||
MediaPlayLogger.printErrorLog("startLoopPlay 不支持的文件类型:${currentMediaItem.fileType}, url=${currentMediaItem.fileUrl}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,10 +206,11 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
|
||||
override fun onFinish() {
|
||||
CallerLogger.d(MediaLoopPlayView.TAG, "mImageCountDownTimer倒计时秒, onFinish")
|
||||
MediaPlayLogger.printInfoLog( "mImageCountDownTimer, 倒计时${IMAGE_COUNT_DOWN_SECONDS}秒, onFinish")
|
||||
playNextItemView(false)
|
||||
}
|
||||
}.start()
|
||||
MediaPlayLogger.printInfoLog("mImageCountDownTimer, 开始倒计时 ${IMAGE_COUNT_DOWN_SECONDS}秒")
|
||||
}
|
||||
|
||||
private fun cancelImageCountDownTimer() {
|
||||
@@ -237,16 +229,15 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
setMediaData(mNewDataList)
|
||||
mNewDataList.clear()
|
||||
ToastUtils.showShort("宣传视频数据已更新")
|
||||
MediaPlayLogger.printInfoLog("playNextItemView, 宣传视频数据已更新")
|
||||
return
|
||||
}
|
||||
MediaPlayLogger.printInfoLog("playNextItemView")
|
||||
|
||||
val currentPosition = mViewPager.currentItem
|
||||
val currentMediaItem = mDataList[currentPosition]
|
||||
val currentItemView = mItemViewList[currentPosition]
|
||||
CallerLogger.d(
|
||||
MediaLoopPlayView.TAG,
|
||||
"playNextItemView, currentPosition=$currentPosition, type=${currentMediaItem.fileType}, url=${currentMediaItem.fileUrl}"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("playNextItemView, currentPosition=$currentPosition, type=${currentMediaItem.fileType}, url=${currentMediaItem.fileUrl}")
|
||||
if (currentItemView is AdvanceVideoView) {
|
||||
currentItemView.onVideoReset()
|
||||
//videoView.setCacheImageViewVisible()
|
||||
@@ -271,6 +262,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
|
||||
fun setPause() {
|
||||
MediaPlayLogger.printInfoLog("${MediaLoopPlayView.TAG}, setPause")
|
||||
if (mItemViewList.size <= 0) {
|
||||
return
|
||||
}
|
||||
@@ -284,6 +276,7 @@ class AdvancePagerAdapter(context: Context, viewPager: ViewPager) : PagerAdapter
|
||||
}
|
||||
|
||||
fun setResume() {
|
||||
MediaPlayLogger.printInfoLog("${MediaLoopPlayView.TAG}, setResume")
|
||||
if (mItemViewList.size <= 0) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.mogo.och.common.module.wigets.media
|
||||
|
||||
import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
object MediaPlayLogger {
|
||||
const val TAG = "MediaPlayLogger"
|
||||
private const val MEDIA_PLAY_PROCESS_KEY_NODE_LOG =
|
||||
"och.media.play.process.key.node.log"
|
||||
|
||||
fun printInfoLog(msg: String) {
|
||||
CallerLogger.i(TAG, msg)
|
||||
trackEvent("Info", msg)
|
||||
}
|
||||
|
||||
fun printWarnLog(msg: String) {
|
||||
CallerLogger.w(TAG, msg)
|
||||
trackEvent("Warn", msg)
|
||||
}
|
||||
|
||||
fun printErrorLog(msg: String) {
|
||||
CallerLogger.e(TAG, msg)
|
||||
trackEvent("Error", msg)
|
||||
}
|
||||
|
||||
/**
|
||||
* 上报埋点
|
||||
*/
|
||||
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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import android.widget.RelativeLayout
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.mogo.eagle.core.utilcode.download.callback.IDownloadListener
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.FileUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
@@ -15,6 +16,7 @@ import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
|
||||
import com.mogo.och.common.module.R
|
||||
import com.mogo.och.common.module.wigets.media.MediaFileCacheManager
|
||||
import com.mogo.och.common.module.wigets.media.MediaLoopPlayView
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayLogger
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
|
||||
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
|
||||
@@ -43,10 +45,14 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onProgress(url: String, downloaded: Long, total: Long) {
|
||||
val percent = (downloaded * 100 / total).toInt()
|
||||
Logger.d(
|
||||
MediaLoopPlayView.TAG,
|
||||
"video play download, onProgress= ${(downloaded * 100 / total).toInt()}"
|
||||
"video play download, onProgress= ${percent}"
|
||||
)
|
||||
if (percent % 10 == 0) {
|
||||
MediaPlayLogger.printInfoLog("downListener,percent=$percent, downloadUrl=${videoUrl}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFinished(url: String, path: String) {
|
||||
@@ -57,6 +63,7 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
ThreadUtils.runOnUiThread {
|
||||
startPlay(Uri.fromFile(File(path)).toString())
|
||||
}
|
||||
MediaPlayLogger.printInfoLog("download finished, 开始播放,downloadUrl=${videoUrl}")
|
||||
} else {//如果当前文件不存在再次去下载当前的
|
||||
Logger.d(
|
||||
MediaLoopPlayView.TAG,
|
||||
@@ -67,6 +74,7 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
ThreadUtils.runOnUiThread {
|
||||
startPlay(Uri.fromFile(File(path)).toString())
|
||||
}
|
||||
MediaPlayLogger.printInfoLog("download finished, 开始播放,downloadUrl=${videoUrl}")
|
||||
} else {
|
||||
startDownLoadVideoFile()
|
||||
}
|
||||
@@ -75,6 +83,7 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
|
||||
override fun onError(url: String, error: String?) {
|
||||
Logger.d(MediaLoopPlayView.TAG, "video play download, onError msg=$error")
|
||||
MediaPlayLogger.printErrorLog("download error, 准备重新下载,downloadUrl=${videoUrl}")
|
||||
//出错再次下载
|
||||
startDownLoadVideoFile()
|
||||
}
|
||||
@@ -127,15 +136,11 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
val localVideoCacheFilePath = MediaFileCacheManager.getCacheFileFullPathByUrl(
|
||||
context, this.videoUrl
|
||||
)
|
||||
Logger.d(
|
||||
MediaLoopPlayView.TAG, "本地已经有缓存文件,准备开始播放,videoPath=${
|
||||
localVideoCacheFilePath
|
||||
}"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("本地已经有缓存文件,准备开始播放,videoPath=${localVideoCacheFilePath}")
|
||||
val realUri = Uri.fromFile(File(localVideoCacheFilePath)).toString()
|
||||
setThumbImageViewGone()
|
||||
startPlay(realUri)
|
||||
Logger.d(
|
||||
CallerLogger.d(
|
||||
MediaLoopPlayView.TAG, "播放视频,videoUri=$realUri"
|
||||
)
|
||||
} else {
|
||||
@@ -155,6 +160,7 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
setThumbImageViewVisible()
|
||||
|
||||
startDownLoadVideoFile()
|
||||
MediaPlayLogger.printInfoLog("本地无缓存文件,准备下载,downloadUrl=${this.videoUrl}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +178,7 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
|
||||
private fun startDownLoadVideoFile() {
|
||||
//下载视频,下载成功后再播放
|
||||
Logger.d(MediaLoopPlayView.TAG, "startDownLoadVideoFile")
|
||||
MediaPlayLogger.printInfoLog( "startDownLoadVideoFile, downloadUrl=${this.videoUrl}")
|
||||
MediaFileCacheManager.downloadFile(
|
||||
context,
|
||||
videoUrl,
|
||||
@@ -185,6 +191,7 @@ class AdvanceVideoView @JvmOverloads constructor(
|
||||
if (FileUtils.isFileExists(localVideoPath)) {
|
||||
FileUtils.delete(localVideoPath)
|
||||
}
|
||||
MediaPlayLogger.printInfoLog( "clearLocalErrorVideo, localPath=${localVideoPath}")
|
||||
}
|
||||
|
||||
fun startPlay(localVideoPath: String?) {
|
||||
|
||||
@@ -17,6 +17,7 @@ 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.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay
|
||||
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselLayoutManager
|
||||
@@ -79,10 +80,7 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
MediaDataSourceManager.init(TAG, object : IMediaDataSourceListener {
|
||||
override fun onMediaDataSourceChanged(list: List<MediaItem>) {
|
||||
val isNewData = mediaList.isNotEmpty()
|
||||
CallerLogger.d(
|
||||
TAG,
|
||||
"onMediaDataSourceChanged:isNewData=$isNewData, list=${GsonUtils.toJson(list)}"
|
||||
)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged:isNewData=$isNewData, dataSize=${list.size}, list=${GsonUtils.toJson(list)}")
|
||||
val localMediaList = mutableListOf<TaxiPassengerVideoPlay>()
|
||||
list.forEach {
|
||||
val taxiPassengerVideoPlay = TaxiPassengerVideoPlay(
|
||||
@@ -96,12 +94,14 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
if (isNewData) {
|
||||
if (!isVisible) {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
} else {
|
||||
mNewMediaList.clear()
|
||||
mNewMediaList.addAll(localMediaList)
|
||||
}
|
||||
} else {
|
||||
updateMediaListDataAndView(localMediaList)
|
||||
MediaPlayLogger.printInfoLog("onMediaDataSourceChanged, 宣传视频数据已更新")
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -148,6 +148,7 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
if (mNewMediaList.isNotEmpty()) {
|
||||
updateMediaListDataAndView(mNewMediaList)
|
||||
mNewMediaList.clear()
|
||||
MediaPlayLogger.printInfoLog("onVisibilityChanged, 宣传视频数据已更新")
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
@@ -198,6 +199,7 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
prePlayerPosition = centerItemPosition
|
||||
MediaPlayLogger.printInfoLog("pageSelect, currentPosition=$prePlayerPosition")
|
||||
}
|
||||
|
||||
override fun pageStop() {
|
||||
@@ -206,7 +208,6 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
player.onVideoPause()
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
carouselLayoutManager.addOnDargAutoDiffListener { adapterPosition, currentPosition ->
|
||||
val fl = adapterPosition - floor(adapterPosition)
|
||||
@@ -250,7 +251,6 @@ internal class InfoVideoView @JvmOverloads constructor(
|
||||
player.onVideoPause()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
|
||||
Reference in New Issue
Block a user