From 5640289b8e33c98c187d187bd34ae3efe8a92ea4 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Thu, 27 Jun 2024 19:24:23 +0800 Subject: [PATCH] =?UTF-8?q?[650]feat:=20=E9=80=9A=E7=94=A8=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E5=BC=B9=E6=A1=86=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=E5=8D=B0=E5=92=8C=E7=9B=B8=E5=85=B3=E5=9F=8B?= =?UTF-8?q?=E7=82=B9=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmi/ui/v2n/RoadV2NEventLivePlayView.kt | 13 ++++++-- .../hmi/ui/v2n/RoadV2NEventWindowView.kt | 32 ++++++++++++++++--- .../core/data/v2x/RoadV2NEventWindowBean.kt | 4 +-- ...CallerRoadV2NEventWindowListenerManager.kt | 5 +++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventLivePlayView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventLivePlayView.kt index 279dcb5f47..995d7f0e5f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventLivePlayView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventLivePlayView.kt @@ -11,6 +11,7 @@ import androidx.core.content.ContextCompat import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.business.roadcross.net.NDERoadV2NModel import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView.Companion.trackEvent import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant @@ -113,23 +114,26 @@ class RoadV2NEventLivePlayView @JvmOverloads constructor( /** * 开始查询拉流url */ - fun startRoadCameraLive( + fun startRoadCameraLive(eventId:String, cameraId: String, lon: Double, lat: Double, cityCode: String ) { CallerLogger.i( "${SceneConstant.M_HMI}$TAG", - "startRoadCameraLive, cameraId=$cameraId, lon=$lon, lat=$lat" + "startRoadCameraLive, eventId=$eventId, cameraId=$cameraId, lon=$lon, lat=$lat, cityCode=$cityCode" ) + trackEvent("startRoadCameraLive --> eventId=$eventId, cameraId=$cameraId, lon=$lon, lat=$lat, cityCode=$cityCode") startLoading() NDERoadV2NModel.ndeRoadV2NModel.querySingleCameraLiveByCameraIp(cameraId, lon, lat, cityCode, onSuccess = { startPlay(it?.liveUrl) + trackEvent("startRoadCameraLive --> success, eventId=$eventId, liveUrl=${it?.liveUrl}") }, onError = { CallerLogger.e( "${SceneConstant.M_HMI}$TAG", "查询视频播放地址error, msg=$it" ) + trackEvent("startRoadCameraLive --> error, eventId=$eventId, msg=$it") stopLoading() showPlayFail() @@ -147,6 +151,7 @@ class RoadV2NEventLivePlayView @JvmOverloads constructor( "${SceneConstant.M_HMI}$TAG", "stopRoadCameraLive" ) + trackEvent("stopRoadCameraLive --> ") stopLoading() try { svpPlayer?.gsyVideoManager?.stop() @@ -156,15 +161,18 @@ class RoadV2NEventLivePlayView @JvmOverloads constructor( "${SceneConstant.M_HMI}$TAG", "onDetachedFromWindow, e=${e.message}" ) + trackEvent("stopRoadCameraLive --> e=${e.message}") } } private fun startPlay(flvUrl: String?) { + trackEvent("startPlay --> flvUrl=${flvUrl}") if (TextUtils.isEmpty(flvUrl)) { CallerLogger.e( "${SceneConstant.M_HMI}$TAG", "播放视频数据异常, flvUrl=${flvUrl}" ) + trackEvent("startPlay --> 播放视频数据异常, flvUrl=${flvUrl}") stopLoading() showPlayFail() return @@ -173,6 +181,7 @@ class RoadV2NEventLivePlayView @JvmOverloads constructor( "${SceneConstant.M_HMI}$TAG", "开始加载视频, flvUrl=${flvUrl}" ) + trackEvent("startPlay --> 开始加载视频, flvUrl=${flvUrl}") flvUrl?.also { startLoadVideo(it) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventWindowView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventWindowView.kt index ca23b0a328..ce01fd6058 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventWindowView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/v2n/RoadV2NEventWindowView.kt @@ -9,6 +9,9 @@ import android.view.View import android.widget.RelativeLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat +import androidx.lifecycle.ProcessLifecycleOwner +import androidx.lifecycle.lifecycleScope +import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.v2x.RoadV2NEventWindowBean @@ -27,6 +30,8 @@ import kotlinx.android.synthetic.main.hmi_view_road_v2n_event_window.view.ivV2XI import kotlinx.android.synthetic.main.hmi_view_road_v2n_event_window.view.roundRoadV2NEventContainer import kotlinx.android.synthetic.main.hmi_view_road_v2n_event_window.view.tvV2XHintContent import kotlinx.android.synthetic.main.hmi_view_road_v2n_event_window.view.tvV2XTimeStr +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import me.jessyan.autosize.utils.AutoSizeUtils import java.util.UUID @@ -41,6 +46,18 @@ class RoadV2NEventWindowView @JvmOverloads constructor( companion object { const val TAG = "RoadV2NEventWindowView" + const val ANALYTICS_KEY = "hmi_road_event_window_view" + + public fun trackEvent(msg: String) { + ProcessLifecycleOwner.get().lifecycleScope.launch(Dispatchers.IO) { + val map: MutableMap = HashMap() + map["msg"] = msg + MogoAnalyticUtils.track( + ANALYTICS_KEY, + map + ) + } + } } private val isPassengerScreen by lazy { @@ -265,8 +282,9 @@ class RoadV2NEventWindowView @JvmOverloads constructor( } override fun show(dataBean: RoadV2NEventWindowBean) { + trackEvent("show --> ${dataBean.toString()}") UiThreadHandler.post { - currentEventUUID = dataBean.uuid + currentEventUUID = dataBean.eventId ivV2XImage.setImageDrawable( ContextCompat.getDrawable( context, @@ -280,19 +298,25 @@ class RoadV2NEventWindowView @JvmOverloads constructor( AIAssist.getInstance(context) .speakTTSVoiceWithLevel(dataBean.hintStr, AIAssist.LEVEL0) } - val cityCode = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode - containerLivePlay.startRoadCameraLive( - dataBean.cameraIp, dataBean.lon, dataBean.lat, cityCode) + val cityCode = + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode + containerLivePlay.startRoadCameraLive(dataBean.eventId, + dataBean.cameraIp, dataBean.lon, dataBean.lat, cityCode + ) visibility = View.VISIBLE } } override fun dismiss(eventId: String) { + trackEvent("dismiss --> eventId=${eventId}") UiThreadHandler.post { if (eventId == currentEventUUID) { visibility = View.GONE currentEventUUID = "" containerLivePlay.stopRoadCameraLive() + trackEvent("dismiss --> eventId=${eventId}, 执行dismiss") + } else { + trackEvent("dismiss --> eventId=${eventId}, 跳过dismiss") } } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/RoadV2NEventWindowBean.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/RoadV2NEventWindowBean.kt index ddd45686d5..a75e96ce20 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/RoadV2NEventWindowBean.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/RoadV2NEventWindowBean.kt @@ -4,7 +4,7 @@ package com.mogo.eagle.core.data.v2x * 路侧道路事件 弹框 */ data class RoadV2NEventWindowBean( - var uuid: String, //当前事件弹框 ID, show时生成,用于dismiss时使用 + var eventId: String, //当前事件弹框 ID, show时生成,用于dismiss时使用 var timestamp: Long = 0, //事件发生事件戳 var iconResId: Int, //事件icon resource id var hintStr: String, //事件提示文案 @@ -14,6 +14,6 @@ data class RoadV2NEventWindowBean( var lat: Double, //事件坐标-纬度 ) { override fun toString(): String { - return "RoadV2NEventWindowBean(uuid='$uuid', timestamp=$timestamp, iconResId=$iconResId, hintStr='$hintStr', isNeedTTS=$isNeedTTS, cameraIp='$cameraIp', lon=$lon, lat=$lat)" + return "RoadV2NEventWindowBean(eventId='$eventId', timestamp=$timestamp, iconResId=$iconResId, hintStr='$hintStr', isNeedTTS=$isNeedTTS, cameraIp='$cameraIp', lon=$lon, lat=$lat)" } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerRoadV2NEventWindowListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerRoadV2NEventWindowListenerManager.kt index d159883d1d..df34bdccbd 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerRoadV2NEventWindowListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerRoadV2NEventWindowListenerManager.kt @@ -3,12 +3,15 @@ package com.mogo.eagle.core.function.call.hmi import com.mogo.eagle.core.data.v2x.RoadV2NEventWindowBean import com.mogo.eagle.core.function.api.hmi.v2n.IRoadV2NEventWindowListener import com.mogo.eagle.core.function.call.base.CallerBase +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger /** * 路侧V2N事件弹框 调用者管理类 */ object CallerRoadV2NEventWindowListenerManager : CallerBase() { + const val TAG = "CallerRoadV2NEventWindowListenerManager" + /** * 通用事件弹框,通过caremaIp, lon , lat请求查询拉流地址 * @param eventId 调用者设置唯一的事件 ID @@ -44,6 +47,7 @@ object CallerRoadV2NEventWindowListenerManager : CallerBase