From 2a7bc4066791e5187ecdfb682b696cff7bc125ac Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 3 Jul 2024 18:12:01 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0]=E7=BA=A2=E7=BB=BF=E7=81=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacenter/v2x/TrafficLightDispatcher.kt | 44 ++-- .../exploration/AutomaticExplorationView.kt | 13 ++ .../notice/traffic/TrafficLightPromptView.kt | 68 ++++-- .../hmi/ui/widget/FusionTrafficLightView.kt | 207 ++++++++++-------- .../hmi/ui/widget/ItinerarySummaryDialog.kt | 8 + .../layout/hmi_view_fusion_traffic_light.xml | 4 +- .../res/layout/view_traffic_light_prompt.xml | 4 - .../layout/view_traffic_light_prompt_p.xml | 3 - .../data/autopilot/AutopilotSummaryInfo.kt | 7 + .../union/IMoGoTrafficLightListener.kt | 8 +- .../v2x/CallerTrafficLightListenerManager.kt | 6 +- 11 files changed, 234 insertions(+), 138 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt index faeca9e548..e33751bd52 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt @@ -105,6 +105,12 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight "${SceneConstant.M_D_C}${TAG}", "onAutopilotPerceptionTrafficLight ---- hasObuLightStatus = $hasObuLightStatus ----hasAiLightStatus = $hasAiLightStatus , trafficLights : ${trafficLights?:"null"}" ) + Log.i(TAG,"source="+trafficLights?.source) + if(trafficLights?.source == 2){ + hasObuLightStatus = false + hasAiLightStatus = false + hasFusionLightStatus = true + } if (!hasObuLightStatus) { if (!hasAiLightStatus) { trafficLights?.let { @@ -130,6 +136,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight if (!hasAutopilotPerception) { hasAutopilotPerception = true } + if(light.nextState == null || light.nextState == FusionTrafficLightOuterClass.FusionLightState.STATE_OFF_FUSION || light.nextTwoState == null || light.nextTwoState == FusionTrafficLightOuterClass.FusionLightState.STATE_OFF_FUSION){ if (HmiBuildConfig.isShowCarSourceTrafficLightView) { @@ -147,17 +154,25 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight onTrafficLightPlusSource(convert(light.state), 0, DataSourceType.TELEMATIC) } }else{ - //有下一和下二灯态,则为融合V2N红绿灯数据 - onFusionTrafficLight(convert(light.state),light.duration.toInt(), - convert(light.nextState),light.nextDuration.toInt(), - convert(light.nextTwoState),light.nextTwoDuration.toInt(), - DataSourceType.TELEMATIC_UNION_V2N - ) - //当前灯态倒计时小于5S时,展示额外的提示框 - if(light.duration < 5){ - onTrafficLightPrompt(convert(light.state),light.duration.toInt()) + Log.i(TAG,"current state="+light.state+" current duration="+light.duration+ + " nextState="+light.nextState+" nextDuration="+light.nextDuration+ + " nextTwoState="+light.nextTwoState+" nextTwoDuration="+light.nextTwoDuration) + if(convert(light.state) == TrafficLightEnum.BLACK){ + //隐藏当前红绿灯以及额外提示框 + CallerTrafficLightListenerManager.disableTrafficLight() + }else{ + //有下一和下二灯态,则为融合V2N红绿灯数据 + onFusionTrafficLight(convert(light.state),light.duration.toInt(), + convert(light.nextState),light.nextDuration.toInt(), + convert(light.nextTwoState),light.nextTwoDuration.toInt(), + DataSourceType.TELEMATIC_UNION_V2N + ) + //当前灯态倒计时小于5S时,展示额外的提示框 + if(light.duration < 5){ + onTrafficLightPrompt(convert(light.state),light.duration,convert(light.nextState),light.nextDuration, + convert(light.nextTwoState),light.nextTwoDuration) + } } - //TODO 提示框的消失逻辑 } } } @@ -277,10 +292,11 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight linkCode = ChainConstant.CHAIN_SOURCE_ADAS, nodeAliasCode = ChainConstant.CHAIN_CODE_ADAS_TRAFFIC_LIGHT, paramIndexes = [0, 1]) - override fun onTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Int) { - super.onTrafficLightPrompt(currentState, currentDuration) - Log.i("xuxinchao","融合V2N红绿灯额外提示框提醒 Dis") - CallerTrafficLightListenerManager.onShowTrafficLightPrompt(currentState, currentDuration) + override fun onTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Float, + nextState: TrafficLightEnum, nextDuration: Float, + nextTwoState: TrafficLightEnum, nextTwoDuration: Float) { + super.onTrafficLightPrompt(currentState, currentDuration,nextState, nextDuration, nextTwoState, nextTwoDuration) + CallerTrafficLightListenerManager.onShowTrafficLightPrompt(currentState, currentDuration,nextState, nextDuration, nextTwoState, nextTwoDuration) } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt index 3ee10b2cda..bba7a7f340 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt @@ -11,6 +11,7 @@ import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo import com.mogo.eagle.core.data.notice.AutoExplorationEntity import com.mogo.eagle.core.function.hmi.R @@ -86,6 +87,18 @@ class AutomaticExplorationView @JvmOverloads constructor( dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",6000L)) dataList.add(AutoExplorationEntity("路侧视频分析",8000L)) automaticExplorationAdapter?.setData(dataList) + + //每出现一次自动探查,增加相应的服务次数 + //车辆服务次数 + AutopilotSummaryInfo.vehicleServiceNum += 31 + //道路信息提醒次数 + AutopilotSummaryInfo.infoTipNum += 9 + //车辆行为提醒次数 + AutopilotSummaryInfo.vehicleTipNum += 13 + //弱势参与者提醒次数 + AutopilotSummaryInfo.vulnerableTipNum += 4 + //消除安全风险隐患次数 + AutopilotSummaryInfo.dangerNum += 24 } override fun onDetachedFromWindow() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt index 11d1277f4c..2e9696dc27 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/TrafficLightPromptView.kt @@ -13,6 +13,7 @@ import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.widget.TypefaceTextView import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler /** * 融合红绿灯变灯提示 @@ -33,7 +34,6 @@ class TrafficLightPromptView @JvmOverloads constructor( private var tvPromptContent: TextView ?= null private var tvTrafficNum: TypefaceTextView ?= null private var tvTrafficNumDecimal: TypefaceTextView ?= null - private val randomList = ArrayList() init { val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TrafficLightPromptView) @@ -53,16 +53,6 @@ class TrafficLightPromptView @JvmOverloads constructor( tvTrafficNum = findViewById(R.id.tvTrafficNum) tvTrafficNumDecimal = findViewById(R.id.tvTrafficNumDecimal) CallerTrafficLightListenerManager.addListener(TAG, this) - - randomList.add(0.99f) - randomList.add(0.72f) - randomList.add(0.44f) - randomList.add(0.21f) - randomList.add(0.06f) - -// tvPromptContent?.text = "请准备出发" -// tvTrafficNum?.text = "12" -// tvTrafficNumDecimal?.text = ".56" } override fun onDetachedFromWindow() { @@ -70,6 +60,12 @@ class TrafficLightPromptView @JvmOverloads constructor( CallerTrafficLightListenerManager.removeListener(TAG) } + override fun disableTrafficLight() { + super.disableTrafficLight() + UiThreadHandler.post{ + this@TrafficLightPromptView.visibility = GONE + } + } /** @@ -77,8 +73,10 @@ class TrafficLightPromptView @JvmOverloads constructor( * @param currentState 当前灯态 * @param currentDuration 当前灯态倒计时 */ - override fun onShowTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Int) { - super.onShowTrafficLightPrompt(currentState, currentDuration) + override fun onShowTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Float, + nextState: TrafficLightEnum, nextDuration: Float, + nextTwoState: TrafficLightEnum, nextTwoDuration: Float) { + super.onShowTrafficLightPrompt(currentState, currentDuration,nextState, nextDuration, nextTwoState, nextTwoDuration) ThreadUtils.runOnUiThread { when(currentState){ TrafficLightEnum.GREEN->{ @@ -115,7 +113,49 @@ class TrafficLightPromptView @JvmOverloads constructor( this@TrafficLightPromptView.visibility = View.GONE } } - tvTrafficNum?.text = currentDuration.toString() + if(currentDuration>0 && currentDuration<5){ + tvTrafficNum?.text = "${currentDuration.toInt()}." + tvTrafficNumDecimal?.text = (currentDuration*100 - currentDuration.toInt()*100).toInt().toString() + }else{ + tvTrafficNum?.text = "0." + tvTrafficNumDecimal?.text = "0" + this@TrafficLightPromptView.visibility = View.GONE + } + when(nextState){ + TrafficLightEnum.GREEN->{ + if(user == 0){ + //司机端提示 + tvPromptTitle?.text = "即将绿灯" + tvPromptContent?.text = "请准备出发" + }else{ + //乘客端提示 + tvPromptContent?.text = "即将绿灯,请准备出发" + } + } + TrafficLightEnum.RED->{ + if(user == 0){ + //司机端提示 + tvPromptTitle?.text = "即将红灯" + tvPromptContent?.text = "请减速慢行" + }else{ + //乘客端提示 + tvPromptContent?.text = "即将红灯,请减速慢行" + } + } + TrafficLightEnum.YELLOW->{ + if(user == 0){ + //司机端提示 + tvPromptTitle?.text = "即将黄灯" + tvPromptContent?.text = "请减速慢行" + }else{ + //乘客端提示 + tvPromptContent?.text = "即将红灯,请减速慢行" + } + } + TrafficLightEnum.BLACK->{ + this@TrafficLightPromptView.visibility = View.GONE + } + } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt index 08dc7f67c6..5eeae227da 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt @@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.content.Context import android.util.AttributeSet -import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout @@ -12,6 +11,7 @@ import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener 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 kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightBg import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightNum @@ -19,6 +19,7 @@ import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionT import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightProportion import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightScale import kotlinx.android.synthetic.main.hmi_view_fusion_traffic_light.view.fusionTrafficLightState +import java.util.LinkedList /** * 融合红绿灯View @@ -69,7 +70,6 @@ class FusionTrafficLightView @JvmOverloads constructor( */ override fun disableTrafficLight() { super.disableTrafficLight() - Log.i("xuxinchao","disableTrafficLight 关闭红绿灯预警展示") UiThreadHandler.post{ mCurrentLightId = TrafficLightEnum.BLACK this@FusionTrafficLightView.visibility = GONE @@ -94,116 +94,129 @@ class FusionTrafficLightView @JvmOverloads constructor( ) { super.showFusionTrafficLight(currentState, currentDuration, nextState, nextDuration, nextTwoState, nextTwoDuration, lightSource) - //如果当前红绿灯视图为隐藏状态则设置为显示状态 - if(this@FusionTrafficLightView.visibility == View.GONE){ - this@FusionTrafficLightView.visibility = View.VISIBLE - //首次展示,需要将当前、下一、下二灯态的时间占比绘制出来,只绘制一次 - val proportionList = ArrayList() - //按照绿、黄、红的顺序将灯态时间添加到数组 - when (currentState) { + ThreadUtils.runOnUiThread { + //如果当前红绿灯视图为隐藏状态则设置为显示状态 + if(this@FusionTrafficLightView.visibility == View.GONE){ + this@FusionTrafficLightView.visibility = View.VISIBLE + //首次展示,需要将当前、下一、下二灯态的时间占比绘制出来,只绘制一次 + val proportionList = ArrayList(3) + proportionList.add(0) + proportionList.add(0) + proportionList.add(0) + //按照绿、黄、红的顺序将灯态时间添加到数组 + when (currentState) { + TrafficLightEnum.GREEN -> { + proportionList.add(0,currentDuration) + maxGreenDuration = currentDuration + } + TrafficLightEnum.YELLOW -> { + proportionList.add(1,currentDuration) + if(currentDuration < 3){ + maxYellowDuration = 3 + }else{ + maxYellowDuration = currentDuration + } + } + else -> { + proportionList.add(2,currentDuration) + maxRedDuration = currentDuration + } + } + when(nextState){ + TrafficLightEnum.GREEN -> { + proportionList.add(0,nextDuration) + maxGreenDuration = nextDuration + } + TrafficLightEnum.YELLOW -> { + proportionList.add(1,nextDuration) + if(nextDuration<3){ + maxYellowDuration = 3 + }else{ + maxYellowDuration = nextDuration + } + } + else -> { + proportionList.add(2,nextDuration) + maxRedDuration = nextDuration + } + } + when(nextTwoState){ + TrafficLightEnum.GREEN -> { + proportionList.add(0,nextTwoDuration) + maxGreenDuration = nextTwoDuration + } + TrafficLightEnum.YELLOW -> { + proportionList.add(1,nextTwoDuration) + if(nextTwoDuration<3){ + maxYellowDuration = 3 + }else{ + maxYellowDuration = nextTwoDuration + } + } + else -> { + proportionList.add(2,nextTwoDuration) + maxRedDuration = nextTwoDuration + } + } + fusionTrafficLightProportion.updateProportion(proportionList) + totalDuration = maxGreenDuration + maxYellowDuration + maxRedDuration + } + //根据当前灯态设置转盘、刻度、指针背景 + when(currentState){ TrafficLightEnum.GREEN -> { - proportionList.add(0,currentDuration) - maxGreenDuration = currentDuration + fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green)) + fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_scale)) + fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_pointer)) } TrafficLightEnum.YELLOW -> { - proportionList.add(1,currentDuration) - maxYellowDuration = currentDuration + fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow)) + fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_scale)) + fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_pointer)) } else -> { - proportionList.add(2,currentDuration) - maxRedDuration = currentDuration + fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red)) + fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_scale)) + fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_pointer)) } } - when(nextState){ + //更新当前灯态倒计时时间 + if(currentDuration>0){ + fusionTrafficLightNum.text = currentDuration.toString() + }else{ + fusionTrafficLightNum.text = "0" + } + //当时间为1开头时时间视觉上看不是左右居中对齐,需要做便宜操作 + if(currentDuration.toString().startsWith("1")){ + val numLayoutParams = fusionTrafficLightNum.layoutParams as LayoutParams + numLayoutParams.rightMargin = 10 + fusionTrafficLightNum.layoutParams = numLayoutParams + }else{ + val numLayoutParams = fusionTrafficLightNum.layoutParams as LayoutParams + numLayoutParams.rightMargin = 0 + fusionTrafficLightNum.layoutParams = numLayoutParams + } + + //更新指针指向 + val pointerLayoutParams = fusionTrafficLightPointer.layoutParams as LayoutParams + var currentAngle = 0f + currentAngle = when (currentState) { TrafficLightEnum.GREEN -> { - proportionList.add(0,nextDuration) - maxGreenDuration = nextDuration + 360f*(maxGreenDuration-currentDuration)/totalDuration } + TrafficLightEnum.YELLOW -> { - proportionList.add(1,nextDuration) - maxYellowDuration = nextDuration + 360f*(maxGreenDuration+maxYellowDuration-currentDuration)/totalDuration } + else -> { - proportionList.add(2,nextDuration) - maxRedDuration = nextDuration + 360f*(maxGreenDuration+maxYellowDuration+maxRedDuration-currentDuration)/totalDuration } } - when(nextTwoState){ - TrafficLightEnum.GREEN -> { - proportionList.add(0,nextTwoDuration) - maxGreenDuration = nextTwoDuration - } - TrafficLightEnum.YELLOW -> { - proportionList.add(1,nextTwoDuration) - maxYellowDuration = nextTwoDuration - } - else -> { - proportionList.add(2,nextTwoDuration) - maxRedDuration = nextTwoDuration - } - } - fusionTrafficLightProportion.updateProportion(proportionList) - totalDuration = maxGreenDuration + maxYellowDuration + maxRedDuration - Log.i("xuxinchao","totalDuration="+totalDuration) - Log.i("xuxinchao","maxGreenDuration="+maxGreenDuration) - Log.i("xuxinchao","maxYellowDuration="+maxYellowDuration) - Log.i("xuxinchao","maxRedDuration="+maxRedDuration) - } - //根据当前灯态设置转盘、刻度、指针背景 - when(currentState){ - TrafficLightEnum.GREEN -> { - fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green)) - fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_scale)) - fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_green_pointer)) - } - TrafficLightEnum.YELLOW -> { - fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow)) - fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_scale)) - fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_yellow_pointer)) - } - else -> { - fusionTrafficLightState.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red)) - fusionTrafficLightScale.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_scale)) - fusionTrafficLightPointer.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.icon_light_red_pointer)) - } - } - //更新当前灯态倒计时时间 - if(currentDuration>0){ - fusionTrafficLightNum.text = currentDuration.toString() - }else{ - fusionTrafficLightNum.text = "0" - } - //当时间为1开头时时间视觉上看不是左右居中对齐,需要做便宜操作 - if(currentDuration.toString().startsWith("1")){ - val numLayoutParams = fusionTrafficLightNum.layoutParams as LayoutParams - numLayoutParams.rightMargin = 10 - fusionTrafficLightNum.layoutParams = numLayoutParams - }else{ - val numLayoutParams = fusionTrafficLightNum.layoutParams as LayoutParams - numLayoutParams.rightMargin = 0 - fusionTrafficLightNum.layoutParams = numLayoutParams + pointerLayoutParams.circleAngle = currentAngle + fusionTrafficLightPointer.rotation = currentAngle + fusionTrafficLightPointer.layoutParams = pointerLayoutParams } - //更新指针指向 - val pointerLayoutParams = fusionTrafficLightPointer.layoutParams as LayoutParams - var currentAngle = 0f - currentAngle = when (currentState) { - TrafficLightEnum.GREEN -> { - 360f*(maxGreenDuration-currentDuration)/totalDuration - } - - TrafficLightEnum.YELLOW -> { - 360f*(maxGreenDuration+maxYellowDuration-currentDuration)/totalDuration - } - - else -> { - 360f*(maxGreenDuration+maxYellowDuration+maxRedDuration-currentDuration)/totalDuration - } - } - pointerLayoutParams.circleAngle = currentAngle - fusionTrafficLightPointer.rotation = currentAngle - fusionTrafficLightPointer.layoutParams = pointerLayoutParams - - } +} } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ItinerarySummaryDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ItinerarySummaryDialog.kt index 35f66a7159..ebade2c614 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ItinerarySummaryDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ItinerarySummaryDialog.kt @@ -56,6 +56,14 @@ class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: Int) : //关闭Dialog按钮 ivSummaryClose = findViewById(R.id.ivSummaryClose) ivSummaryClose?.setOnClickListener { + //对本次服务记录清零 + AutopilotSummaryInfo.intersectionServicesNum = 0 + AutopilotSummaryInfo.lightServicesNum = 0 + AutopilotSummaryInfo.infoTipNum = 0 + AutopilotSummaryInfo.vehicleTipNum = 0 + AutopilotSummaryInfo.vulnerableTipNum = 0 + AutopilotSummaryInfo.dangerNum = 0 + //关闭弹窗 dismiss() } //小智总结 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml index 170c3e95e1..899b894680 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/hmi_view_fusion_traffic_light.xml @@ -3,8 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fusionTrafficLightBg" - android:layout_width="@dimen/dp_250" - android:layout_height="@dimen/dp_250" + android:layout_width="wrap_content" + android:layout_height="wrap_content" android:background="@drawable/bg_fusion_traffic_light_p" > diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml index 610468aafb..b62e693de6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt.xml @@ -15,7 +15,6 @@ android:layout_marginLeft="@dimen/dp_150" android:textSize="@dimen/sp_30" android:textColor="@color/white" - android:text="即将绿灯" /> @@ -50,7 +47,6 @@ app:layout_constraintBottom_toBottomOf="@id/tvTrafficNumDecimal" app:layout_constraintRight_toLeftOf="@id/tvTrafficNumDecimal" android:textSize="@dimen/sp_90" - android:text="3" android:textColor="@color/light_prompt_red" app:textType="DS_DIGIB_2" /> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml index 87dfef8b33..1eb0ad5102 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_traffic_light_prompt_p.xml @@ -15,7 +15,6 @@ android:textColor="@color/light_prompt_content" android:layout_marginTop="@dimen/dp_50" android:layout_marginStart="@dimen/dp_50" - android:text="即将红灯,请减速慢行" /> @@ -37,7 +35,6 @@ app:layout_constraintBottom_toBottomOf="@id/tvTrafficNum" app:layout_constraintLeft_toRightOf="@id/tvTrafficNum" android:textSize="@dimen/sp_30" - android:text=".99" app:textType="DS_DIGIB_2" android:gravity="bottom" /> diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotSummaryInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotSummaryInfo.kt index 693723af34..d4bedfe80b 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotSummaryInfo.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/AutopilotSummaryInfo.kt @@ -5,6 +5,13 @@ package com.mogo.eagle.core.data.autopilot */ object AutopilotSummaryInfo { + /** + * 车辆服务次数 + */ + @JvmField + @Volatile + var vehicleServiceNum = 0 + /** * 全息路口服务次数 */ diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/union/IMoGoTrafficLightListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/union/IMoGoTrafficLightListener.kt index 2278328f24..4c0fec1918 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/union/IMoGoTrafficLightListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/union/IMoGoTrafficLightListener.kt @@ -33,7 +33,9 @@ interface IMoGoTrafficLightListener { /** * 红绿灯额外提示框 */ - fun onTrafficLightPrompt(currentState: TrafficLightEnum,currentDuration: Int){} + fun onTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Float, + nextState: TrafficLightEnum, nextDuration: Float, + nextTwoState: TrafficLightEnum, nextTwoDuration: Float){} /** * 融合红绿灯,带有下一灯态和下二灯态 @@ -67,7 +69,9 @@ interface IMoGoTrafficLightListener { * @param currentState 当前灯态 * @param currentDuration 当前灯态倒计时 */ - fun onShowTrafficLightPrompt(currentState: TrafficLightEnum,currentDuration: Int){} + fun onShowTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Float, + nextState: TrafficLightEnum, nextDuration: Float, + nextTwoState: TrafficLightEnum, nextTwoDuration: Float){} /** * 展示融合带有下一下二灯态的红绿灯 diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt index 40d3cc465f..fa5c3cb131 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt @@ -77,10 +77,12 @@ object CallerTrafficLightListenerManager : CallerBase * @param currentState 当前灯态 * @param currentDuration 当前灯态倒计时 */ - fun onShowTrafficLightPrompt(currentState: TrafficLightEnum,currentDuration: Int){ + fun onShowTrafficLightPrompt(currentState: TrafficLightEnum, currentDuration: Float, + nextState: TrafficLightEnum, nextDuration: Float, + nextTwoState: TrafficLightEnum, nextTwoDuration: Float){ M_LISTENERS.forEach{ val listener = it.value - listener.onShowTrafficLightPrompt(currentState,currentDuration) + listener.onShowTrafficLightPrompt(currentState,currentDuration,nextState, nextDuration, nextTwoState, nextTwoDuration) } }