opt videoplayer
This commit is contained in:
@@ -1,32 +1,28 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.notice
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.mogo.eagle.core.data.notice.NoticeNormalData
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
|
||||
import com.mogo.eagle.core.widget.media.video.NoticeSimpleVideoPlayer
|
||||
import com.mogo.module.common.dialog.BaseFloatDialog
|
||||
import com.mogo.utils.BitmapHelper
|
||||
import com.mogo.utils.glide.GlideApp
|
||||
import com.mogo.utils.logger.Logger
|
||||
import com.shuyu.gsyvideoplayer.GSYVideoManager
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.cache.CacheFactory
|
||||
import com.shuyu.gsyvideoplayer.cache.ProxyCacheManager
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYMediaPlayerListener
|
||||
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
|
||||
import com.shuyu.gsyvideoplayer.player.IjkPlayerManager
|
||||
import com.shuyu.gsyvideoplayer.player.PlayerFactory
|
||||
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
|
||||
import tv.danmaku.ijk.media.player.IjkMediaPlayer
|
||||
import java.util.*
|
||||
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
|
||||
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
|
||||
|
||||
|
||||
/**
|
||||
* 点击查看对话框,需要做接口的请求
|
||||
*
|
||||
* @brief 点击查看对话框
|
||||
* @author lixiaopeng
|
||||
*/
|
||||
class NoticeCheckDialog(context: Context) : BaseFloatDialog(context) {
|
||||
|
||||
@@ -35,9 +31,11 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context) {
|
||||
private var pushCheckTitle: TextView? = null
|
||||
private var pushCheckContent: TextView? = null
|
||||
private var pushImageView: ImageView? = null
|
||||
private var pushVideo: SimpleVideoPlayer? = null
|
||||
private var pushVideo: NoticeSimpleVideoPlayer? = null
|
||||
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
|
||||
// private var mLoading: ProgressBar? = null
|
||||
private var playImageView: ImageView? = null
|
||||
private var thumbnailImageView: ImageView? = null
|
||||
private var mVideoUrl: String = ""
|
||||
|
||||
init {
|
||||
setContentView(R.layout.notice_dialog_check_with_accessory)
|
||||
@@ -47,19 +45,28 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context) {
|
||||
pushCheckContent = findViewById(R.id.module_push_dialog_bottom_title)
|
||||
pushImageView = findViewById(R.id.notice_image)
|
||||
pushVideo = findViewById(R.id.notice_video_layout)
|
||||
// mLoading = findViewById(R.id.loading)
|
||||
// mLoading!!.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(context, R.color.notice_video_progressbar_loading_color), PorterDuff.Mode.MULTIPLY)
|
||||
playImageView = findViewById(R.id.notice_video_play)
|
||||
thumbnailImageView = findViewById(R.id.thumbnail_image)
|
||||
|
||||
pushCheckClose?.setOnClickListener {
|
||||
stopLive()
|
||||
dismiss()
|
||||
}
|
||||
|
||||
playImageView!!.setOnClickListener {
|
||||
if (pushVideo!!.currentState == GSYVideoView.CURRENT_STATE_PAUSE) { /*播放中*/
|
||||
resume()
|
||||
} else {
|
||||
pause()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示详情页面
|
||||
*/
|
||||
fun showCheckDialog(noticeNormal: NoticeNormalData) {
|
||||
Logger.d("liyz", "------1--------")
|
||||
if (isShowing || noticeNormal == null) {
|
||||
return
|
||||
}
|
||||
@@ -72,18 +79,17 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context) {
|
||||
pushCheckContent?.text = noticeNormal.content
|
||||
|
||||
if (!TextUtils.isEmpty(noticeNormal.imageUrl) && noticeNormal.fileType == 1) {
|
||||
Logger.d("liyz", "------2--------")
|
||||
pushVideo?.visibility = View.GONE
|
||||
pushImageView?.visibility = View.VISIBLE
|
||||
pushImageView?.let { GlideApp.with(context!!).load(noticeNormal.imageUrl).into(it) }
|
||||
}
|
||||
|
||||
if (!TextUtils.isEmpty(noticeNormal.videoUrl) && noticeNormal.fileType == 2) {
|
||||
Logger.d("liyz", "------3--------")
|
||||
pushImageView?.visibility = View.GONE
|
||||
pushVideo?.visibility = View.VISIBLE
|
||||
//加载视频播放
|
||||
playLiveVideo(noticeNormal.videoUrl)
|
||||
playVideo(noticeNormal.videoUrl)
|
||||
mVideoUrl = noticeNormal.videoUrl
|
||||
}
|
||||
|
||||
show()
|
||||
@@ -91,26 +97,19 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context) {
|
||||
|
||||
|
||||
/**
|
||||
* 播放直播流,且开始心跳
|
||||
* 播放视频
|
||||
*/
|
||||
private fun playLiveVideo(videoUrl: String) {
|
||||
// pushVideo?.setPlayListener(object : PlayListener {
|
||||
// override fun onPlayEvent(event: Int) {
|
||||
// Logger.d("liyz", "event ----- $event")
|
||||
// if (event == SimpleVideoPlayer.PLAY_EVT_PLAY_LOADING) {
|
||||
//// mLoading!!.visibility = View.VISIBLE
|
||||
// } else if (event == SimpleVideoPlayer.PLAY_EVT_PLAY_BEGIN) {
|
||||
//// mLoading!!.visibility = View.GONE
|
||||
// } else if (event < 0) {
|
||||
// stopLive()
|
||||
//// mLoading!!.visibility = View.GONE
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
|
||||
gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG)
|
||||
.build(pushVideo)
|
||||
pushVideo!!.startButton.performClick()
|
||||
private fun playVideo(videoUrl: String) {
|
||||
try {
|
||||
gsyVideoOptionBuilder.setUrl(videoUrl).setCacheWithPlay(false).setPlayTag(TAG)
|
||||
.build(pushVideo)
|
||||
pushVideo!!.startButton.performClick()
|
||||
playImageView!!.visibility = View.GONE
|
||||
thumbnailImageView!!.visibility = View.GONE
|
||||
startVideoCallBack(videoUrl)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
fun stopLive() {
|
||||
@@ -121,7 +120,78 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context) {
|
||||
}
|
||||
}
|
||||
|
||||
//播放完成的回调 TODO
|
||||
/**
|
||||
* 暂停
|
||||
*/
|
||||
private fun pause() {
|
||||
playImageView!!.visibility = View.VISIBLE
|
||||
playImageView!!.setImageResource(R.drawable.notice_video_play)
|
||||
thumbnailImageView!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
/**
|
||||
* 继续
|
||||
*/
|
||||
private fun resume() {
|
||||
playImageView!!.visibility = View.VISIBLE
|
||||
playImageView!!.setImageResource(R.drawable.notice_video_pause)
|
||||
thumbnailImageView!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
/**
|
||||
* 播放结束后
|
||||
*/
|
||||
private fun complete(firstbitmap: Bitmap, path: String) {
|
||||
thumbnailImageView!!.visibility = View.VISIBLE
|
||||
thumbnailImageView!!.setImageBitmap(firstbitmap)
|
||||
playImageView!!.setImageResource(R.drawable.notice_video_play)
|
||||
playImageView!!.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
private fun startVideoCallBack(path: String) {
|
||||
Thread(Runnable {
|
||||
val firstBitmap = BitmapHelper.getVideoThumbnail(path) /*获取第一帧图*/
|
||||
pushVideo!!.setVideoAllCallBack(object : VideoAllCallBack {
|
||||
override fun onAutoComplete(url: String, vararg objects: Any) {
|
||||
complete(firstBitmap, path)
|
||||
}
|
||||
|
||||
override fun onClickResume(url: String, vararg objects: Any) {
|
||||
thumbnailImageView!!.visibility = View.GONE
|
||||
playImageView!!.visibility = View.GONE
|
||||
}
|
||||
|
||||
override fun onClickStop(url: String, vararg objects: Any) {
|
||||
Log.d(TAG, "onClickStop")
|
||||
}
|
||||
|
||||
override fun onStartPrepared(url: String, vararg objects: Any) {
|
||||
Log.d(TAG, "onStartPrepared")
|
||||
}
|
||||
|
||||
override fun onPrepared(url: String, vararg objects: Any) {}
|
||||
override fun onClickStartIcon(url: String, vararg objects: Any) {}
|
||||
override fun onClickStartError(url: String, vararg objects: Any) {}
|
||||
override fun onClickStopFullscreen(url: String, vararg objects: Any) {}
|
||||
override fun onClickResumeFullscreen(url: String, vararg objects: Any) {}
|
||||
override fun onClickSeekbar(url: String, vararg objects: Any) {}
|
||||
override fun onClickSeekbarFullscreen(url: String, vararg objects: Any) {}
|
||||
override fun onEnterFullscreen(url: String, vararg objects: Any) {}
|
||||
override fun onQuitFullscreen(url: String, vararg objects: Any) {}
|
||||
override fun onQuitSmallWidget(url: String, vararg objects: Any) {}
|
||||
override fun onEnterSmallWidget(url: String, vararg objects: Any) {}
|
||||
override fun onTouchScreenSeekVolume(url: String, vararg objects: Any) {}
|
||||
override fun onTouchScreenSeekPosition(url: String, vararg objects: Any) {}
|
||||
override fun onTouchScreenSeekLight(url: String, vararg objects: Any) {}
|
||||
override fun onPlayError(url: String, vararg objects: Any) {}
|
||||
override fun onClickStartThumb(url: String, vararg objects: Any) {}
|
||||
override fun onClickBlank(url: String, vararg objects: Any) {}
|
||||
override fun onClickBlankFullscreen(url: String, vararg objects: Any) {
|
||||
Log.d(TAG, "onClickBlankFullscreen")
|
||||
}
|
||||
})
|
||||
}).start()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -14,15 +14,11 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData;
|
||||
import com.mogo.eagle.core.function.hmi.R;
|
||||
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer;
|
||||
import com.mogo.module.common.dialog.BaseFloatDialog;
|
||||
import com.mogo.module.common.view.SpacesItemDecoration;
|
||||
import com.mogo.utils.BitmapHelper;
|
||||
import com.mogo.utils.ResourcesHelper;
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
|
||||
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack;
|
||||
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liujing
|
||||
* @description 描述
|
||||
@@ -109,7 +105,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
|
||||
* 继续
|
||||
*/
|
||||
private void resume() {
|
||||
playImageView.setImageResource(R.drawable.video_pause);
|
||||
playImageView.setImageResource(R.drawable.notice_video_pause);
|
||||
playImageView.setVisibility(View.GONE);
|
||||
thumbnailImage.setVisibility(View.GONE);
|
||||
}
|
||||
@@ -120,7 +116,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog {
|
||||
private void complete(Bitmap firstbitmap, String path) {
|
||||
thumbnailImage.setVisibility(View.VISIBLE);
|
||||
thumbnailImage.setImageBitmap(firstbitmap);
|
||||
playImageView.setImageResource(R.drawable.video_play);
|
||||
playImageView.setImageResource(R.drawable.notice_video_play);
|
||||
playImageView.setVisibility(View.VISIBLE);
|
||||
playImageView.setOnClickListener(v -> {
|
||||
startLive();
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
android:layout_marginLeft="@dimen/dp_150"
|
||||
android:layout_marginRight="@dimen/dp_150"
|
||||
android:layout_marginBottom="@dimen/dp_56"
|
||||
android:layout_marginTop="@dimen/dp_6"
|
||||
android:ellipsize="end"
|
||||
android:gravity="left"
|
||||
android:maxLines="2"
|
||||
@@ -63,7 +64,7 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/module_push_dialog_acc_title" />
|
||||
|
||||
<!--中间视频-->
|
||||
<com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
|
||||
<com.mogo.eagle.core.widget.media.video.NoticeSimpleVideoPlayer
|
||||
android:id="@+id/notice_video_layout"
|
||||
android:layout_width="@dimen/module_push_dialog_check_acc_image_width"
|
||||
android:layout_height="@dimen/module_push_dialog_check_acc_image__height"
|
||||
@@ -71,20 +72,39 @@
|
||||
android:layout_marginTop="@dimen/dp_52"
|
||||
android:layout_marginRight="@dimen/dp_150"
|
||||
android:gravity="center"
|
||||
android:visibility="visible"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@+id/module_push_dialog_bottom_title"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/module_push_dialog_acc_title" />
|
||||
|
||||
<androidx.core.widget.ContentLoadingProgressBar
|
||||
android:id="@+id/loading"
|
||||
style="?android:attr/progressBarStyleSmall"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
<!--缩略图-->
|
||||
<com.mogo.service.imageloader.MogoImageView
|
||||
android:id="@+id/thumbnail_image"
|
||||
android:layout_width="@dimen/module_push_dialog_check_acc_image_width"
|
||||
android:layout_height="@dimen/module_push_dialog_check_acc_image__height"
|
||||
android:layout_marginLeft="@dimen/dp_200"
|
||||
android:layout_marginTop="@dimen/dp_50"
|
||||
android:layout_marginRight="@dimen/dp_200"
|
||||
android:background="@drawable/notice_unsuccess_image"
|
||||
android:scaleType="fitXY"
|
||||
android:visibility="gone"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true" />
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--播放按钮-->
|
||||
<ImageView
|
||||
android:id="@+id/notice_video_play"
|
||||
android:layout_width="@dimen/dp_100"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
app:layout_constraintBottom_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="parent" />
|
||||
android:src="@drawable/video_play"
|
||||
android:visibility="gone" />
|
||||
|
||||
<!--加载失败默认图-->
|
||||
<ImageView
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
android:layout_width="@dimen/dp_100"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
android:layout_centerInParent="true"
|
||||
android:src="@drawable/video_play"
|
||||
android:src="@drawable/notice_video_play"
|
||||
android:visibility="gone" />
|
||||
<!--事故来源等事故详情-->
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
Reference in New Issue
Block a user