Merge remote-tracking branch 'origin/dev_robotaxi-d_240705_6.5.0' into dev_robotaxi-d_240705_6.5.0
This commit is contained in:
@@ -159,6 +159,17 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 事件弹框 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.och.common.module.wigets.rodedata.OchAutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -431,16 +442,6 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_45"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.mogo.och.common.module.wigets.LoadingMapStatusView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
@@ -236,6 +236,7 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 事件弹框 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -219,6 +219,17 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 事件弹框 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.och.common.module.wigets.rodedata.OchAutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -434,16 +445,6 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_45"
|
||||
android:layout_marginBottom="@dimen/dp_30"
|
||||
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.mogo.och.common.module.wigets.LoadingMapStatusView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
@@ -246,7 +246,8 @@
|
||||
android:layout_marginEnd="@dimen/dp_60"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
|
||||
<!-- 事件弹框 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventWindowView
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.ui.tools.SweeperModeChangedConfirmDialog
|
||||
import com.mogo.eagle.core.function.call.unmanned.CallerUnmannedListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.SOPAnalyticsManager.clickEventAnalytics
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils
|
||||
@@ -142,6 +143,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scV2XSwitch.setOnCheckedChangeListener { _, isChecked ->
|
||||
FunctionBuildConfig.v2xMainSwitch = isChecked
|
||||
hmiAction("SOP V2X总开关, ", isChecked)
|
||||
clickEventAnalytics("V2X总开关",isChecked)
|
||||
if (isChecked) {
|
||||
//V2N总开关
|
||||
scV2NSwitch.isChecked = FunctionBuildConfig.v2nMainSwitch
|
||||
@@ -190,6 +192,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
//绿波通行(默认关闭)
|
||||
scGreenWaveSop.isEnabled = FunctionBuildConfig.v2nMainSwitch
|
||||
scV2NSwitch.setOnCheckedChangeListener { compoundButton, isChecked ->
|
||||
clickEventAnalytics("V2N总开关",isChecked)
|
||||
if (isChecked) {
|
||||
//V2N新链路
|
||||
scNewV2NData.isChecked = FunctionBuildConfig.isNewV2NData
|
||||
@@ -242,6 +245,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scRunRedLightSop.isEnabled = HmiBuildConfig.isShowObuV2iView
|
||||
scObuWeaknessTrafficSop.isEnabled = HmiBuildConfig.isShowObuV2iView
|
||||
scV2ISwitch.setOnCheckedChangeListener { compoundButton, isChecked ->
|
||||
clickEventAnalytics("V2I总开关",isChecked)
|
||||
if (isChecked) {
|
||||
//V2I场景进PNC
|
||||
scV2iPnc.isChecked = FunctionBuildConfig.isV2IPnc
|
||||
@@ -288,6 +292,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("V2N新链路",isChecked)
|
||||
hmiAction("SOP 是否是V2N新链路(云->工控机->App)", isChecked)
|
||||
FunctionBuildConfig.isNewV2NData = isChecked
|
||||
|
||||
@@ -304,6 +309,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("V2N场景进PNC",isChecked)
|
||||
hmiAction("SOP V2N场景进PNC, ", isChecked)
|
||||
CallerAutoPilotControlManager.sendV2nToPncCmd(isChecked)
|
||||
FunctionBuildConfig.isV2NPnc = isChecked
|
||||
@@ -315,6 +321,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("绿波通行",isChecked)
|
||||
hmiAction("SOP obu绿波通行, ", isChecked)
|
||||
HmiBuildConfig.isShowGreenWaveView = isChecked
|
||||
if (HmiBuildConfig.isShowGreenWaveView) {
|
||||
@@ -336,6 +343,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("V2I场景进PNC",isChecked)
|
||||
hmiAction("SOP V2I场景进PNC, ", isChecked)
|
||||
CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked)
|
||||
FunctionBuildConfig.isV2IPnc = isChecked
|
||||
@@ -347,6 +355,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("闯红灯预警",isChecked)
|
||||
hmiAction("SOP obu闯红灯预警, ", isChecked)
|
||||
HmiBuildConfig.isShowRunRedLightView = isChecked
|
||||
if (HmiBuildConfig.isShowRunRedLightView) {
|
||||
@@ -368,6 +377,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("路侧弱势交通参与者",isChecked)
|
||||
hmiAction("SOP obu弱势交通控制, ", isChecked)
|
||||
HmiBuildConfig.isShowObuWeaknessTrafficView = isChecked
|
||||
}
|
||||
@@ -378,6 +388,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("V2V总开关",isChecked)
|
||||
hmiAction("SOP obuV2V开关, ", isChecked)
|
||||
HmiBuildConfig.isShowObuV2vView = isChecked
|
||||
}
|
||||
@@ -389,6 +400,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
clickEventAnalytics("OBU总开关",isChecked)
|
||||
hmiAction("SOP OBU控制总开关, ", isChecked)
|
||||
if (isChecked) {
|
||||
CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP)
|
||||
@@ -408,6 +420,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scMarkingObstacles.isChecked = FunctionBuildConfig.isPNCWarning
|
||||
scMarkingObstacles.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 危险障碍物颜色标记开关, ", isChecked)
|
||||
clickEventAnalytics("危险障碍物颜色标记",isChecked)
|
||||
FunctionBuildConfig.isPNCWarning = isChecked
|
||||
}
|
||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
|
||||
@@ -418,6 +431,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scRouteDynamicEffect.isChecked = HmiBuildConfig.isShowRouteStrategy
|
||||
scRouteDynamicEffect.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 引导线动态效果, ", isChecked)
|
||||
clickEventAnalytics("引导线动态效果",isChecked)
|
||||
HmiBuildConfig.isShowRouteStrategy = isChecked
|
||||
CallerDevaToolsManager.setRouteDynamicColorEnable(isChecked)
|
||||
}
|
||||
@@ -441,6 +455,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
CallerMapUIServiceManager.getMapUIController()?.setIsDrawPointCloud(isChecked)
|
||||
CallerSopSettingManager.invokePointCloudListener(isChecked)
|
||||
hmiAction("SOP 是否渲染点云数据, ", isChecked)
|
||||
clickEventAnalytics("点云效果",isChecked)
|
||||
}
|
||||
|
||||
//自车光圈
|
||||
@@ -461,6 +476,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
FunctionBuildConfig.isDisplayAnimEnable = isChecked
|
||||
clickEventAnalytics("自车光圈",isChecked)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,6 +491,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
hmiAction("SOP 演示模式开关, ", !FunctionBuildConfig.isDemoMode)
|
||||
clickEventAnalytics("美化模式",isChecked)
|
||||
FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode
|
||||
CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode)
|
||||
CallerHmiViewControlListenerManager.invokeFuncMode(
|
||||
@@ -497,6 +514,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scShowBagRecordWindow.setOnCheckedChangeListener { _, isChecked ->
|
||||
FunctionBuildConfig.isShowBagRecordWindow = isChecked
|
||||
hmiAction("SOP 是否展示录包弹窗, ", isChecked)
|
||||
clickEventAnalytics("录包弹窗",isChecked)
|
||||
}
|
||||
|
||||
//接管提醒
|
||||
@@ -504,6 +522,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scTakeOverRemind.setOnCheckedChangeListener { _, isChecked ->
|
||||
FunctionBuildConfig.isTakeoverRemind = isChecked
|
||||
hmiAction("SOP 是否展示接管提醒, ", isChecked)
|
||||
clickEventAnalytics("接管提醒",isChecked)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -518,6 +537,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
hmiAction("SOP 绕障类功能开关, ", isChecked)
|
||||
CallerAutoPilotControlManager.sendDetouring(isChecked)
|
||||
FunctionBuildConfig.isDetouring = isChecked
|
||||
clickEventAnalytics("绕障类功能",isChecked)
|
||||
}
|
||||
|
||||
// 雨天模式,上一次勾选的数据
|
||||
@@ -527,6 +547,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
hmiAction("SOP 雨天模式开关, ", isChecked)
|
||||
clickEventAnalytics("雨天模式",isChecked)
|
||||
FunctionBuildConfig.isRainMode = isChecked
|
||||
CallerAutoPilotControlManager.setRainMode(isChecked)
|
||||
CallerHmiViewControlListenerManager.invokeFuncMode(FUNC_MODE_RAIN, isChecked)
|
||||
@@ -543,6 +564,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
FunctionBuildConfig.isWeakNetSlowDown = isChecked
|
||||
CallerAutoPilotControlManager.sendWeakNetSlowDown(isChecked)
|
||||
hmiAction("SOP 弱网减速停车, ", isChecked)
|
||||
clickEventAnalytics("弱网减速停车",isChecked)
|
||||
}
|
||||
|
||||
//故障减速停车
|
||||
@@ -551,6 +573,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
FunctionBuildConfig.isFaultSlowDown = isChecked
|
||||
CallerAutoPilotControlManager.sendBreakdownSlowDown(isChecked)
|
||||
hmiAction("SOP 故障减速停车, ", isChecked)
|
||||
clickEventAnalytics("故障减速停车",isChecked)
|
||||
}
|
||||
//融合模式
|
||||
rgFusionMode.setOnCheckedChangeListener { _, p1 ->
|
||||
@@ -577,6 +600,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode)
|
||||
clickEventAnalytics("融合模式",true)
|
||||
CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode)
|
||||
}
|
||||
|
||||
@@ -610,6 +634,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败")
|
||||
hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "失败")
|
||||
}
|
||||
clickEventAnalytics("变道速度阈值",true)
|
||||
}
|
||||
|
||||
ivSpeedOverTakeReduce.setOnClickListener {
|
||||
@@ -640,6 +665,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置失败")
|
||||
hmiAction("SOP 超车目标障碍物速度阈值设置", "失败")
|
||||
}
|
||||
clickEventAnalytics("超车速度阈值",true)
|
||||
}
|
||||
|
||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
|
||||
@@ -669,6 +695,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scTrafficLight.isChecked = !HmiBuildConfig.isShowTrafficLightView
|
||||
scTrafficLight.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 红绿灯标识开关, ", isChecked)
|
||||
clickEventAnalytics("红绿灯标识",isChecked)
|
||||
if (isChecked) {
|
||||
CallerHmiManager.showTrafficLightView()
|
||||
} else {
|
||||
@@ -680,6 +707,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scCarUnionTrafficLight.isChecked = HmiBuildConfig.isShowCarSourceTrafficLightView
|
||||
scCarUnionTrafficLight.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 红绿灯车端来源标识开关, ", isChecked)
|
||||
clickEventAnalytics("红绿灯车端融合标识",isChecked)
|
||||
HmiBuildConfig.isShowCarSourceTrafficLightView = isChecked
|
||||
}
|
||||
|
||||
@@ -687,6 +715,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scConnectionSwitch.isChecked = HmiBuildConfig.isShowConnectionProgressView
|
||||
scConnectionSwitch.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 系统启动状态展示, ", isChecked)
|
||||
clickEventAnalytics("系统启动状态展示",isChecked)
|
||||
HmiBuildConfig.isShowConnectionProgressView = isChecked
|
||||
CallerHmiViewControlListenerManager.updateConnectionProgressView(isChecked)
|
||||
}
|
||||
@@ -695,6 +724,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView
|
||||
scSpeedLimit.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 限速标识开关, ", isChecked)
|
||||
clickEventAnalytics("限速标识",isChecked)
|
||||
if (isChecked) {
|
||||
HmiBuildConfig.isShowLimitingVelocityView = true
|
||||
CallerHmiViewControlListenerManager.invokeVisible(
|
||||
@@ -714,6 +744,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
scIPCReport.isChecked = FunctionBuildConfig.isReportWarning
|
||||
scIPCReport.setOnCheckedChangeListener { _, isChecked ->
|
||||
hmiAction("SOP 是否开启异常上报, ", isChecked)
|
||||
clickEventAnalytics("异常上报提示",isChecked)
|
||||
FunctionBuildConfig.isReportWarning = isChecked
|
||||
}
|
||||
|
||||
@@ -729,6 +760,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
} else {
|
||||
CallerHmiManager.hidM1360LookAround()
|
||||
}
|
||||
clickEventAnalytics("360环视",isChecked)
|
||||
}
|
||||
it.isChecked = CallerHmiManager.isM1360LookAroundShowing()
|
||||
}
|
||||
@@ -761,6 +793,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
}
|
||||
CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(false)
|
||||
}
|
||||
clickEventAnalytics("自主算路验证模式",isChecked)
|
||||
}
|
||||
it.isChecked = CallerHmiManager.isTaxiUnmanedDriverLineRoutingVerifyMode()
|
||||
} else {
|
||||
@@ -784,6 +817,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
it.setOnCheckedChangeListener { _, isChecked ->
|
||||
CallerLogger.d(TAG, "发送开关数据:${isChecked}到乘客屏")
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.WEATHER_SWITCH_STATUS, (if (isChecked) "1" else "0").toByteArray())
|
||||
clickEventAnalytics("天气效果开关",isChecked)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -822,6 +856,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
})
|
||||
confirmDialog.showSweeperModeChangeConfirmDialog()
|
||||
}
|
||||
clickEventAnalytics("清扫云控业务",isChecked)
|
||||
}
|
||||
} else {
|
||||
switchView.isEnabled = false
|
||||
@@ -850,6 +885,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
CallerUnmannedListenerManager.dispatchVirtualTaskPullTaskInterval(5)
|
||||
}
|
||||
}
|
||||
clickEventAnalytics("Taxi无人化演练任务拉取时间间隔",true)
|
||||
}
|
||||
rgPullTime.visibility =
|
||||
if(AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode))
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.utils
|
||||
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||
|
||||
/**
|
||||
* 运营面板埋点统计管理
|
||||
*/
|
||||
object SOPAnalyticsManager {
|
||||
private const val sopButtonClick = "sop_button_click"
|
||||
|
||||
private const val eventParamButtonName = "buttonName" //开关名称
|
||||
private const val eventParamButtonStatus = "buttonStatus" //开关状态
|
||||
private const val eventParamPlateNumber = "plateNumber" //车牌号
|
||||
private const val eventParamCarSn = "carSn" //鹰眼SN
|
||||
private const val eventParamMapVersion = "mapVersion" //工控机版本
|
||||
private const val eventParamEyeVersion = "eyeVersion" //鹰眼版本
|
||||
|
||||
/**
|
||||
* 运营面板开关点击状态统计
|
||||
* @param buttonName 开关名称
|
||||
* @param buttonStatus 开关状态
|
||||
* @param plateNumber 车牌号
|
||||
* @param carSn 鹰眼SN
|
||||
* @param mapVersion 工控机版本
|
||||
* @param eyeVersion 鹰眼版本
|
||||
*/
|
||||
private fun realSOPButtonEvent(buttonName: String,buttonStatus: Boolean,plateNumber: String,
|
||||
carSn: String,mapVersion: String,eyeVersion: String){
|
||||
val clickButtonParams = HashMap<String,Any>()
|
||||
clickButtonParams[eventParamButtonName] = buttonName
|
||||
clickButtonParams[eventParamButtonStatus] = buttonStatus
|
||||
clickButtonParams[eventParamPlateNumber] = plateNumber
|
||||
clickButtonParams[eventParamCarSn] = carSn
|
||||
clickButtonParams[eventParamMapVersion] = mapVersion
|
||||
clickButtonParams[eventParamEyeVersion] = eyeVersion
|
||||
MogoAnalyticUtils.track(sopButtonClick,clickButtonParams)
|
||||
}
|
||||
|
||||
/**
|
||||
* 运营面板开关点击状态统计
|
||||
* @param buttonName 开关名称
|
||||
* @param buttonStatus 开关状态
|
||||
*/
|
||||
fun clickEventAnalytics(buttonName: String, buttonStatus: Boolean){
|
||||
realSOPButtonEvent(buttonName,buttonStatus, AppConfigInfo.plateNumber,
|
||||
SharedPrefsMgr.getInstance().sn,
|
||||
CallerAutoPilotStatusListenerManager.getDockerVersion() ?: "",
|
||||
AppUtils.getAppVersionName())
|
||||
}
|
||||
|
||||
}
|
||||
@@ -142,6 +142,10 @@ class RoadV2NEventWindowView @JvmOverloads constructor(
|
||||
)
|
||||
tvV2XHintContent.layoutParams = tvV2XHintContentLayoutParams
|
||||
tvV2XHintContent.setTextColor(Color.parseColor("#131415"))
|
||||
tvV2XHintContent.setTextSize(
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
AutoSizeUtils.dp2px(context, 28f).toFloat()
|
||||
)
|
||||
tvV2XHintContent.setPadding(0, 0, 0, AutoSizeUtils.dp2px(context, 28f))
|
||||
|
||||
val containerImageAndLiveVideoLayoutParams =
|
||||
@@ -210,28 +214,32 @@ class RoadV2NEventWindowView @JvmOverloads constructor(
|
||||
containerIconHintLayoutParams.width = LayoutParams.MATCH_PARENT
|
||||
containerIconHintLayoutParams.height = LayoutParams.WRAP_CONTENT
|
||||
containerIconHintLayoutParams.setMargins(
|
||||
AutoSizeUtils.dp2px(context, 30f),
|
||||
AutoSizeUtils.dp2px(context, 31f),
|
||||
AutoSizeUtils.dp2px(context, 30f),
|
||||
AutoSizeUtils.dp2px(context, 30f - 22f),
|
||||
AutoSizeUtils.dp2px(context, 31f - 15f),
|
||||
AutoSizeUtils.dp2px(context, 30f - 22f),
|
||||
0
|
||||
)
|
||||
containerIconHint.layoutParams = containerIconHintLayoutParams
|
||||
|
||||
val ivV2XImageLayoutParams = ivV2XImage.layoutParams as RelativeLayout.LayoutParams
|
||||
ivV2XImageLayoutParams.width = AutoSizeUtils.dp2px(context, 84f)
|
||||
ivV2XImageLayoutParams.height = AutoSizeUtils.dp2px(context, 84f)
|
||||
ivV2XImageLayoutParams.width = AutoSizeUtils.dp2px(context, 84f + 22f + 22f)
|
||||
ivV2XImageLayoutParams.height = AutoSizeUtils.dp2px(context, 84f + 15f + 29f)
|
||||
ivV2XImage.layoutParams = ivV2XImageLayoutParams
|
||||
|
||||
val tvV2XHintContentLayoutParams =
|
||||
tvV2XHintContent.layoutParams as RelativeLayout.LayoutParams
|
||||
tvV2XHintContentLayoutParams.setMargins(
|
||||
AutoSizeUtils.dp2px(context, 32f),
|
||||
0,
|
||||
AutoSizeUtils.dp2px(context, 15f),
|
||||
AutoSizeUtils.dp2px(context, 20f - 22f),
|
||||
AutoSizeUtils.dp2px(context, (42f + 15f) - (46f / 2f)),
|
||||
AutoSizeUtils.dp2px(context, 5f),
|
||||
0
|
||||
)
|
||||
tvV2XHintContent.layoutParams = tvV2XHintContentLayoutParams
|
||||
tvV2XHintContent.setTextColor(Color.parseColor("#FFFFFF"))
|
||||
tvV2XHintContent.setTextSize(
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
AutoSizeUtils.dp2px(context, 32f).toFloat()
|
||||
)
|
||||
|
||||
val containerImageAndLiveVideoLayoutParams =
|
||||
containerImageAndLiveVideo.layoutParams as ConstraintLayout.LayoutParams
|
||||
@@ -239,7 +247,7 @@ class RoadV2NEventWindowView @JvmOverloads constructor(
|
||||
containerImageAndLiveVideoLayoutParams.height = AutoSizeUtils.dp2px(context, 300f)
|
||||
containerImageAndLiveVideoLayoutParams.setMargins(
|
||||
AutoSizeUtils.dp2px(context, 30f),
|
||||
AutoSizeUtils.dp2px(context, 30f),
|
||||
AutoSizeUtils.dp2px(context, 30f - 29f),
|
||||
AutoSizeUtils.dp2px(context, 30f),
|
||||
0
|
||||
)
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import java.util.LinkedList
|
||||
|
||||
/**
|
||||
* 融合红绿灯View
|
||||
@@ -45,6 +44,8 @@ class FusionTrafficLightView @JvmOverloads constructor(
|
||||
|
||||
private var currentLightState = TrafficLightEnum.BLACK //当前灯态
|
||||
private var currentLightDuration = 0 //当前灯态倒计时
|
||||
private var previousLightStatus = TrafficLightEnum.BLACK //上一帧灯态
|
||||
private var previousLightDuration = 0 //上一帧灯态倒计时
|
||||
|
||||
private var redLightRoundNum = 0 //当前路口红灯出现的轮数
|
||||
private var greenLightRoundNum = 0 //当前路口绿灯出现的轮数
|
||||
@@ -82,11 +83,11 @@ class FusionTrafficLightView @JvmOverloads constructor(
|
||||
override fun disableTrafficLight() {
|
||||
super.disableTrafficLight()
|
||||
UiThreadHandler.post{
|
||||
mCurrentLightId = TrafficLightEnum.BLACK
|
||||
this@FusionTrafficLightView.visibility = GONE
|
||||
CallerHmiViewControlListenerManager.invokeV2XEvent(View.GONE, TAG)
|
||||
//将灯态轮归零
|
||||
returnToZero()
|
||||
resetLight()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,11 +100,21 @@ class FusionTrafficLightView @JvmOverloads constructor(
|
||||
yellowLightRoundNum = 0 //当前路口黄灯出现的轮数
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置灯态
|
||||
*/
|
||||
private fun resetLight(){
|
||||
currentLightState = TrafficLightEnum.BLACK
|
||||
currentLightDuration = 0
|
||||
previousLightStatus = TrafficLightEnum.BLACK
|
||||
previousLightDuration = 0
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否进入新的一轮灯态
|
||||
* @param currentState 当前灯态
|
||||
*/
|
||||
private fun judgeRoundNun(currentState: TrafficLightEnum): Boolean{
|
||||
private fun judgeRoundNum(currentState: TrafficLightEnum): Boolean{
|
||||
if(currentLightState == currentState){
|
||||
return false
|
||||
}else{
|
||||
@@ -155,8 +166,30 @@ class FusionTrafficLightView @JvmOverloads constructor(
|
||||
if(this@FusionTrafficLightView.visibility == View.GONE && currentDuration < 1){
|
||||
return@runOnUiThread
|
||||
}
|
||||
/**
|
||||
* 如果红绿灯显示过程中遇到突然灯态发生改变即当前灯态未倒计时完成灯态发生变化
|
||||
* (正常情况下不会出现此情况,兼容异常状态)
|
||||
* 重置灯态占比和指针指向
|
||||
*/
|
||||
if(previousLightStatus == TrafficLightEnum.BLACK && previousLightDuration == 0
|
||||
&& currentState != TrafficLightEnum.BLACK && currentDuration != 0){
|
||||
previousLightStatus = currentState
|
||||
previousLightDuration = currentDuration
|
||||
}else{
|
||||
if((currentState != previousLightStatus && previousLightDuration >1)
|
||||
|| (currentState == previousLightStatus && previousLightDuration < currentDuration)){
|
||||
//灯态未倒计时到1,灯态发生变化(正常情况是倒计时到0,考虑到可能存在的异常情况,倒计时到1也算正常)
|
||||
returnToZero()
|
||||
resetLight()
|
||||
}else{
|
||||
previousLightStatus = currentState
|
||||
previousLightDuration = currentDuration
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//如果当前红绿灯视图为隐藏状态则设置为显示状态
|
||||
if(judgeRoundNun(currentState)){
|
||||
if(judgeRoundNum(currentState)){
|
||||
if(this@FusionTrafficLightView.visibility == View.GONE){
|
||||
this@FusionTrafficLightView.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user