@@ -465,6 +465,10 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
}
|
||||
}
|
||||
|
||||
override fun startRoadCameraLive(flvUrl: String) {
|
||||
cameraListView?.startRoadCameraLive(flvUrl)
|
||||
}
|
||||
|
||||
private fun showCameraList(cameraList: List<CameraEntity>?) {
|
||||
context?.let {
|
||||
if (cameraViewFloat == null) {
|
||||
@@ -474,7 +478,11 @@ class MoGoHmiFragment : MvpFragment<MoGoWarningContract.View?, WaringPresenter?>
|
||||
}
|
||||
cameraListView!!.setClickListener(object : CameraListView.ClickListener {
|
||||
override fun onClose(v: View) {
|
||||
// Builder和cameraListView都置空
|
||||
dismissFloatView()
|
||||
// 丢弃开启摄像头推流请求,同时monitor回调hmi的startRoadCameraLive()
|
||||
// 也做了cameraListView的非空判断
|
||||
CallerMonitorManager.disposeCameraStream()
|
||||
}
|
||||
|
||||
override fun onShowLive(isShow: Boolean) {
|
||||
|
||||
@@ -36,7 +36,7 @@ class CameraListAdapter : Adapter<CameraListAdapter.CameraListHolder> {
|
||||
data?.let {
|
||||
val cameraEntity = it[position]
|
||||
holder.cameraInfo.text = with(cameraEntity) {
|
||||
if (!isCarLive()) "${roadName}${crossingName}${getHeadingStr()}" else sn
|
||||
if (!isCarLive()) "${roadName}${crossingName}${getHeadingStr()}" else "${street}${township}"
|
||||
}
|
||||
holder.bottomLine.visibility =
|
||||
if (it.size - 1 == position) View.INVISIBLE else View.VISIBLE
|
||||
|
||||
@@ -17,8 +17,10 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.cloud.trafficlive.api.ITrafficCarLiveCallBack
|
||||
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive
|
||||
import com.mogo.eagle.core.data.camera.CameraEntity
|
||||
import com.mogo.eagle.core.function.call.monitor.CallerMonitorManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
|
||||
import com.mogo.utils.logger.Logger
|
||||
import com.shuyu.gsyvideoplayer.GSYVideoManager
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
|
||||
@@ -60,6 +62,7 @@ class CameraListView : FrameLayout {
|
||||
}
|
||||
private var liveSn: String? = ""
|
||||
private var isCarLive = false
|
||||
private var isFirstPage = true
|
||||
|
||||
@JvmOverloads
|
||||
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : super(
|
||||
@@ -79,6 +82,7 @@ class CameraListView : FrameLayout {
|
||||
rvCameraList.adapter = CameraListAdapter(context, cameraInfoList) {
|
||||
it.tag?.let { cameraEntity ->
|
||||
showLiveView()
|
||||
isFirstPage = false
|
||||
isCloseStatus = false
|
||||
isPlaySuccess = false
|
||||
isCarLive = false
|
||||
@@ -86,7 +90,12 @@ class CameraListView : FrameLayout {
|
||||
when {
|
||||
!cameraEntity.isCarLive() -> {
|
||||
isCarLive = false
|
||||
if (!cameraEntity.flvUrl.isNullOrEmpty()) gsyVideoPlay(cameraEntity.flvUrl!!)
|
||||
// 开启摄像头推流
|
||||
cameraEntity.ip?.let { ip ->
|
||||
CallerMonitorManager.openCameraStream(ip)
|
||||
// 测试一直打开的顺义摄像头,不需要调接口让摄像头开启推流
|
||||
// if (!cameraEntity.flvUrl.isNullOrEmpty()) gsyVideoPlay(cameraEntity.flvUrl!!)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
isCarLive = true
|
||||
@@ -104,6 +113,7 @@ class CameraListView : FrameLayout {
|
||||
ivCloseIcon.setOnClickListener {
|
||||
isPlaySuccess = false
|
||||
isCarLive = false
|
||||
isFirstPage = true
|
||||
when {
|
||||
isCloseStatus -> clickListener?.onClose(it)// 直接退出
|
||||
else -> {// 返回摄像头列表
|
||||
@@ -124,6 +134,7 @@ class CameraListView : FrameLayout {
|
||||
GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL)
|
||||
svpPlayer.setPlayListener(object : SimpleVideoPlayer.PlayListener {
|
||||
override fun onPlayEvent(event: Int) {
|
||||
Logger.d(TAG, "onPlayEvent: event is:$event")
|
||||
when (event) {
|
||||
SimpleVideoPlayer.PLAY_EVT_PLAY_LOADING -> {
|
||||
|
||||
@@ -135,7 +146,9 @@ class CameraListView : FrameLayout {
|
||||
}
|
||||
else -> {
|
||||
showNoSignalView()
|
||||
valueAnimator.start()
|
||||
if (!valueAnimator.isStarted && !valueAnimator.isRunning) {
|
||||
valueAnimator.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -184,6 +197,10 @@ class CameraListView : FrameLayout {
|
||||
}
|
||||
}
|
||||
|
||||
fun startRoadCameraLive(flvUrl: String) {
|
||||
gsyVideoPlay(flvUrl)
|
||||
}
|
||||
|
||||
private fun handleSnLiveStatus(status: Int) {
|
||||
when (status) {
|
||||
0 -> {// 正在直播
|
||||
@@ -197,22 +214,38 @@ class CameraListView : FrameLayout {
|
||||
|
||||
private val trafficCarLiveCallBack = object : ITrafficCarLiveCallBack {
|
||||
override fun onLive(liveSn: String?) {
|
||||
// 开始直播
|
||||
progressBar.visibility = View.GONE
|
||||
surfaceView.visibility = View.VISIBLE
|
||||
isPlaySuccess = true
|
||||
Logger.d(TAG, "onLive")
|
||||
}
|
||||
|
||||
override fun onFirstFrame() {
|
||||
Logger.d(TAG, "onFirstFrame:isFirstPage is:$isFirstPage,isCarLive is:$isCarLive")
|
||||
if (!isFirstPage && isCarLive) {
|
||||
// 开始直播
|
||||
progressBar.visibility = View.GONE
|
||||
surfaceView.visibility = View.VISIBLE
|
||||
isPlaySuccess = true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDisConnect() {
|
||||
// 断开连接
|
||||
showNoSignalView()
|
||||
valueAnimator.start()
|
||||
Logger.e(TAG, "onDisConnect")
|
||||
if (!isFirstPage && isCarLive) {
|
||||
showNoSignalView()
|
||||
if (!valueAnimator.isStarted && !valueAnimator.isRunning) {
|
||||
valueAnimator.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError(errorMsg: String?) {
|
||||
// 发生错误
|
||||
showNoSignalView()
|
||||
valueAnimator.start()
|
||||
Logger.e(TAG, "onError msg is:${errorMsg}")
|
||||
if (!isFirstPage && isCarLive) {
|
||||
// 发生错误
|
||||
showNoSignalView()
|
||||
if (!valueAnimator.isStarted && !valueAnimator.isRunning) {
|
||||
valueAnimator.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,7 +279,6 @@ class CameraListView : FrameLayout {
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
stopLive()
|
||||
svpPlayer.removeAllViews()
|
||||
valueAnimator.cancel()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user