From cc408649c46980934edddbb7cc6cf882a5fec3f9 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 20 Apr 2023 11:10:10 +0800 Subject: [PATCH 1/4] [2.15.0] fix bug of traffic light sync --- .../hmi/ui/widget/SingleTrafficLightView.kt | 103 +++++++++--------- 1 file changed, 52 insertions(+), 51 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt index fd5a0ebbf1..434d3cee65 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt @@ -7,17 +7,15 @@ import android.view.View import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView -import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.TrafficLightEnum +import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG -import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler /** @@ -72,9 +70,11 @@ class SingleTrafficLightView @JvmOverloads constructor( */ override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) { super.showTrafficLight(checkLightId, lightSource) - mCurrentLightId = checkLightId - if (!HmiBuildConfig.isShowTrafficLightView) { - updateTrafficLightIcon(checkLightId, lightSource) + UiThreadHandler.post { + mCurrentLightId = checkLightId + if (!HmiBuildConfig.isShowTrafficLightView) { + updateTrafficLightIcon(checkLightId, lightSource) + } } } @@ -95,14 +95,15 @@ class SingleTrafficLightView @JvmOverloads constructor( // 小巴车的司机端需要展示红绿灯信号来源 // if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) // && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ - val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.dp_325).toInt() - this.layoutParams = lp - mLightSourceTV!!.visibility = VISIBLE - mLightSourceDivider!!.visibility = VISIBLE - mLightTimeTV!!.visibility = GONE - mLightSourceTV!!.setPadding(0,0,75,0) - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.dp_310).toInt() + val lp = this.layoutParams as MarginLayoutParams + lp.width = context.resources.getDimension(R.dimen.dp_325).toInt() + this.layoutParams = lp + mLightSourceTV!!.visibility = VISIBLE + mLightSourceDivider!!.visibility = VISIBLE + mLightTimeTV!!.visibility = GONE + mLightSourceTV!!.setPadding(0, 0, 75, 0) + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.dp_310).toInt() // }else{ // val lp = this.layoutParams as MarginLayoutParams // lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_icon_size).toInt() @@ -200,51 +201,51 @@ class SingleTrafficLightView @JvmOverloads constructor( * @param lightSource 1:云端下发;2:自车感知; 3:OBU */ private fun updateTrafficLightIcon(lightId: TrafficLightEnum, lightSource: DataSourceType) { - UiThreadHandler.post { - when (lightId) { - TrafficLightEnum.RED -> { - mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor) - this@SingleTrafficLightView.visibility = VISIBLE - } - TrafficLightEnum.YELLOW -> { - mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor) - this@SingleTrafficLightView.visibility = VISIBLE - } - TrafficLightEnum.GREEN -> { - mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor) - this@SingleTrafficLightView.visibility = VISIBLE - } - else -> this@SingleTrafficLightView.visibility = GONE + when (lightId) { + TrafficLightEnum.RED -> { + mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_red_nor) + this@SingleTrafficLightView.visibility = VISIBLE } - when (lightSource) { - DataSourceType.AICLOUD -> { - mLightSourceTV!!.text = "云端下发" - } - DataSourceType.TELEMATIC -> { - mLightSourceTV!!.text = "自车感知" - } - DataSourceType.OBU -> { - mLightSourceTV!!.text = "OBU" - } - else -> { - mLightSourceTV!!.visibility = GONE - } + TrafficLightEnum.YELLOW -> { + mLightIconIV!!.setBackgroundResource(R.drawable.hmi_lightyellow_nor) + this@SingleTrafficLightView.visibility = VISIBLE + } + TrafficLightEnum.GREEN -> { + mLightIconIV!!.setBackgroundResource(R.drawable.hmi_light_green_nor) + this@SingleTrafficLightView.visibility = VISIBLE + } + else -> this@SingleTrafficLightView.visibility = GONE + } + when (lightSource) { + DataSourceType.AICLOUD -> { + mLightSourceTV!!.text = "云端下发" + } + DataSourceType.TELEMATIC -> { + mLightSourceTV!!.text = "自车感知" + } + DataSourceType.OBU -> { + mLightSourceTV!!.text = "OBU" + } + else -> { + mLightSourceTV!!.visibility = GONE } } } - private fun resetView(){ + private fun resetView() { // 小巴车的司机端需要展示红绿灯信号来源 ,由于需要知道来源,这里不在限制 // if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) // && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ - val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bus_layout_width).toInt() - this.layoutParams = lp - mLightTimeTV!!.visibility = View.VISIBLE - mLightSourceDivider!!.visibility = View.VISIBLE - mLightSourceTV!!.visibility = View.VISIBLE - mLightSourceTV!!.setPadding(0,0,0,0) - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bus_bg_width).toInt() + val lp = this.layoutParams as MarginLayoutParams + lp.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bus_layout_width).toInt() + this.layoutParams = lp + mLightTimeTV!!.visibility = View.VISIBLE + mLightSourceDivider!!.visibility = View.VISIBLE + mLightSourceTV!!.visibility = View.VISIBLE + mLightSourceTV!!.setPadding(0, 0, 0, 0) + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bus_bg_width).toInt() // }else{ // val lp = this.layoutParams as MarginLayoutParams // lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_layout_width).toInt() From 596066ca4bee1fda3c93bc96249bcaab5613865a Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 20 Apr 2023 14:17:05 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[dev2.15.0][adas]=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96=E5=BA=94?= =?UTF-8?q?=E7=AD=94=E5=9B=9E=E8=B0=83=E8=A7=A3=E6=9E=90=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/bean/AdasParamReceiveData.java | 35 +++++ .../zhidao/adas/client/ui/MainActivity.java | 6 +- .../support/adas/high/OnAdasListener.java | 4 +- .../support/adas/high/bean/AdasParam.java | 128 ++++++++++++++++++ .../adas/high/msg/GetParamRespMessage.java | 3 +- 5 files changed, 172 insertions(+), 4 deletions(-) create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AdasParam.java diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java new file mode 100644 index 0000000000..6dd27670ae --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/AdasParamReceiveData.java @@ -0,0 +1,35 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.GeneratedMessageV3; +import com.google.protobuf.TextFormat; +import com.zhidao.adas.client.R; +import com.zhidao.support.adas.high.bean.AdasParam; +import com.zhidao.support.adas.high.common.ByteUtil; + +import java.text.SimpleDateFormat; + +import mogo.telematics.pad.MessagePad; + +public class AdasParamReceiveData extends BaseInfo { + public final GeneratedMessageV3 bean; + private final AdasParam adasParam; + + public AdasParamReceiveData(MessagePad.Header header, GeneratedMessageV3 bean, AdasParam adasParam, SimpleDateFormat sdf) { + super("接收", bean.getSerializedSize(), header, sdf); + this.bean = bean; + this.adasParam = adasParam; + } + + public String toString(int resId) { + String srt = ""; + if (resId == R.id.rb_analysis) { + srt = TextFormat.printer().shortDebugString(bean); + } else if (resId == R.id.rb_original) { + srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()); + } else if (resId == R.id.rb_all) { + srt = "Payload原始数据:" + ByteUtil.byteArrToHex(bean.toByteArray()) + '\n' + TextFormat.printer().shortDebugString(bean); + } + return super.toString(resId) + srt + "\n原始数据翻译:\n" + adasParam.toString(); + } + +} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index f795234fd4..3541465902 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -59,6 +59,7 @@ import com.zhidao.adas.client.adapter.InfoTitleAdapter; import com.zhidao.adas.client.base.BaseActivity; import com.zhidao.adas.client.base.BaseAdapter; import com.zhidao.adas.client.base.BaseFragment; +import com.zhidao.adas.client.bean.AdasParamReceiveData; import com.zhidao.adas.client.bean.ErrorData; import com.zhidao.adas.client.bean.IPCConnectState; import com.zhidao.adas.client.bean.ObuMap; @@ -84,6 +85,7 @@ import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.AdasOptions; import com.zhidao.support.adas.high.OnAdasConnectStatusListener; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.bean.AdasParam; import com.zhidao.support.adas.high.bean.VersionCompatibility; import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS; import com.zhidao.support.adas.high.common.CupidLogUtils; @@ -1279,8 +1281,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } @Override - public void onGetParamResp(@NonNull MessagePad.Header header, @NonNull MessagePad.SetParamReq getParamResp) { - ReceiveData base = new ReceiveData(header, getParamResp, sdf); + public void onGetParamResp(@NonNull MessagePad.Header header, @NonNull MessagePad.SetParamReq getParamResp, @NonNull AdasParam adasParam) { + AdasParamReceiveData base = new AdasParamReceiveData(header, getParamResp, adasParam, sdf); DataDistribution.getInstance().addData(base); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 8baedd2c90..048bf1a8fd 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -1,6 +1,7 @@ package com.zhidao.support.adas.high; import com.mogo.support.obu.ObuScene; +import com.zhidao.support.adas.high.bean.AdasParam; import com.zhidao.support.adas.high.common.ProtocolStatus; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; @@ -292,8 +293,9 @@ public interface OnAdasListener { * * @param header 头 * @param getParamResp 配置参数 + * @param adasParam 解析后的配置参数 */ - void onGetParamResp(@NotNull MessagePad.Header header, @NotNull MessagePad.SetParamReq getParamResp); + void onGetParamResp(@NotNull MessagePad.Header header, @NotNull MessagePad.SetParamReq getParamResp, @NotNull AdasParam adasParam); /** * 是否有能力启动自动驾驶 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AdasParam.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AdasParam.java new file mode 100644 index 0000000000..b6e763271d --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/bean/AdasParam.java @@ -0,0 +1,128 @@ +package com.zhidao.support.adas.high.bean; + +import android.text.TextUtils; + +import com.zhidao.support.adas.high.common.Constants; + +import mogo.telematics.pad.MessagePad; + +/** + * 工控机配置参数 + * -1表示未知,说明没有这个param或者get失败 + */ +public class AdasParam { + /** + * 绕障类功能开关 + * -1:未知 0:关闭 1:开启 + */ + public final int detouringCmd; + /** + * 变道绕障的目标障碍物速度阈值 + * -1:未知 + */ + public final double detouringSpeed; + /** + * AEB开关 + * -1:未知 0:关闭自动紧急制动功能 1:启用自动紧急制动功能 + */ + public final int aebCmd; + /** + * 限制绕障开关 + * -1:未知 0(默认):正常绕障 1:限制绕障 + */ + public final int laneChangeRestrainValid; + /** + * 停车让行线前避让等待开关 + * -1:未知 0(默认):停车让行线前无需等待 1:停车让行线前需要等待 + */ + public final int stopYieldValid; + /** + * 地图限速功能开关 + * -1:未知 0(默认):不使用地图限速功能 1:使用地图限速功能 + */ + public final int hadmapSpeedLimitValid; + /** + * 环岛模式开关 + * -1:未知 0(默认):普通模式 1:环岛模式 + */ + public final int rampThetaValid; + /** + * 弱网减速停车策略开关 + * -1:未知 0:关闭弱网减速停车策略 1(默认):使用弱网减速停车策略 + */ + public final int weakNetSlowDown; + + public AdasParam(MessagePad.SetParamReq param) { + int detouringCmd = -1; + double detouringSpeed = -1.0; + int aebCmd = -1; + int laneChangeRestrainValid = -1; + int stopYieldValid = -1; + int hadmapSpeedLimitValid = -1; + int rampThetaValid = -1; + int weakNetSlowDown = -1; + if (param != null) { + int size = param.getReqsCount(); + if (size > 0) { + for (int i = 0; i < size; i++) { + MessagePad.SetOneParam oneParam = param.getReqs(i); + int type = oneParam.getType(); + String value = oneParam.getValue(); + if (type == Constants.PARAM_TYPE.DETOURING) { + if (!TextUtils.isEmpty(value)) { + detouringCmd = Integer.parseInt(value); + } + } else if (type == Constants.PARAM_TYPE.DETOURING_SPEED) { + if (!TextUtils.isEmpty(value)) { + detouringSpeed = Double.parseDouble(value); + } + } else if (type == Constants.PARAM_TYPE.AEB) { + if (!TextUtils.isEmpty(value)) { + aebCmd = Integer.parseInt(value); + } + } else if (type == Constants.PARAM_TYPE.LANE_CHANGE_RESTRAIN_VALID) { + if (!TextUtils.isEmpty(value)) { + laneChangeRestrainValid = Integer.parseInt(value); + } + } else if (type == Constants.PARAM_TYPE.STOP_YIELD_VALID) { + if (!TextUtils.isEmpty(value)) { + stopYieldValid = Integer.parseInt(value); + } + } else if (type == Constants.PARAM_TYPE.HADMAP_SPEED_LIMIT_VALID) { + if (!TextUtils.isEmpty(value)) { + hadmapSpeedLimitValid = Integer.parseInt(value); + } + } else if (type == Constants.PARAM_TYPE.RAMP_THETA_VALID) { + if (!TextUtils.isEmpty(value)) { + rampThetaValid = Integer.parseInt(value); + } + } else if (type == Constants.PARAM_TYPE.WEAK_NET_SLOW_DOWN) { + if (!TextUtils.isEmpty(value)) { + weakNetSlowDown = Integer.parseInt(value); + } + } + } + } + } + this.detouringCmd = detouringCmd; + this.detouringSpeed = detouringSpeed; + this.aebCmd = aebCmd; + this.laneChangeRestrainValid = laneChangeRestrainValid; + this.stopYieldValid = stopYieldValid; + this.hadmapSpeedLimitValid = hadmapSpeedLimitValid; + this.rampThetaValid = rampThetaValid; + this.weakNetSlowDown = weakNetSlowDown; + } + + @Override + public String toString() { + return "绕障类功能开关=" + (detouringCmd == -1 ? "未知" : detouringCmd == 0 ? "关" : "开") + + "\n变道绕障的目标障碍物速度阈值=" + (detouringSpeed == -1 ? "未知" : detouringSpeed + "m/s") + + "\nAEB开关=" + (aebCmd == -1 ? "未知" : aebCmd == 0 ? "关" : "开") + + "\n限制绕障开关=" + (laneChangeRestrainValid == -1 ? "未知" : laneChangeRestrainValid == 0 ? "正常绕障" : "限制绕障") + + "\n停车让行线前避让等待开关=" + (stopYieldValid == -1 ? "未知" : stopYieldValid == 0 ? "无需等待" : "等待") + + "\n地图限速功能开关=" + (hadmapSpeedLimitValid == -1 ? "未知" : hadmapSpeedLimitValid == 0 ? "不使用" : "使用") + + "\n环岛模式开关=" + (rampThetaValid == -1 ? "未知" : rampThetaValid == 0 ? "普通模式" : "环岛模式") + + "\n弱网减速停车策略开关=" + (weakNetSlowDown == -1 ? "未知" : weakNetSlowDown == 0 ? "关闭" : "使用"); + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GetParamRespMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GetParamRespMessage.java index 8eb3299767..465262b385 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GetParamRespMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/GetParamRespMessage.java @@ -5,6 +5,7 @@ import android.os.SystemClock; import com.google.protobuf.InvalidProtocolBufferException; import com.zhidao.support.adas.high.AdasChannel; import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.bean.AdasParam; import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.protocol.RawData; @@ -23,7 +24,7 @@ public class GetParamRespMessage extends MyAbstractMessageHandler { if (CupidLogUtils.isEnableLog()) nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { - adasListener.onGetParamResp(raw.getHeader(), getParamResp); + adasListener.onGetParamResp(raw.getHeader(), getParamResp, new AdasParam(getParamResp)); } AdasChannel.calculateTimeConsumingBusiness("参数获取应答", nowTime); // CupidLogUtils.e("到站提醒--->" + arrivalNotification.toString()); From 563859efca82ed7c9a5a81f6b23551008f95be87 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 20 Apr 2023 14:21:55 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[dev2.15.0][adas]=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0=E8=8E=B7=E5=8F=96=E5=BA=94?= =?UTF-8?q?=E7=AD=94=E5=9B=9E=E8=B0=83=E8=A7=A3=E6=9E=90=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E9=81=97=E6=BC=8F=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 649c663fe1..976d213930 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -60,6 +60,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.support.obu.ObuScene import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener +import com.zhidao.support.adas.high.bean.AdasParam import com.zhidao.support.adas.high.common.ProtocolStatus import com.zhjt.mogo.adas.data.bean.AutopilotStatistics import com.zhjt.service.chain.ChainLog @@ -684,8 +685,9 @@ class MoGoAdasListenerImpl : OnAdasListener { * * @param header 头 * @param getParamResp 配置参数 + * @param adasParam 解析后的配置参数 */ - override fun onGetParamResp(header: MessagePad.Header, getParamResp: MessagePad.SetParamReq) { + override fun onGetParamResp(header: MessagePad.Header, getParamResp: MessagePad.SetParamReq, adasParam: AdasParam) { } /** From d5712ad9a7d2d2bef2a8ea92911bc3440e1dbccc Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 20 Apr 2023 14:23:29 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[2.15=E3=80=820]=20[=E5=85=A8=E8=A7=88?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E3=80=81=E9=81=93=E8=B7=AF=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presenter/BaseTaxiPassengerPresenter.java | 2 + .../och/taxi/passenger/ui/OverviewFragment.kt | 76 +++++++++++++++++++ .../ui/TaxiPassengerBaseFragment.java | 5 ++ 3 files changed, 83 insertions(+) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index d74028ff9d..38e481ae81 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -162,6 +162,7 @@ public class BaseTaxiPassengerPresenter extends Presenter { mView.showOrHideServingOrderFragment(false,true); + mView.showOrHideOverMapViewFragment(false); mView.showOrHideStartAutopilotView(false,false); mView.showOrHidePressengerCheckPager(false, "", "", "", "", ""); @@ -217,6 +218,7 @@ public class BaseTaxiPassengerPresenter extends Presenter { mView.showOrHideServingOrderFragment(false,true); mView.showOrHideArrivedEndLayout(true, order.endSiteAddr,order.orderNo); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt index ee3174b8ee..7229e39206 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/OverviewFragment.kt @@ -1,16 +1,33 @@ package com.mogo.och.taxi.passenger.ui +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.mogo.commons.mvp.BaseFragment +import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.function.view.OverMapView +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum +import com.mogo.och.taxi.passenger.model.TaxiPassengerModel +import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import java.util.concurrent.TimeUnit class OverviewFragment : BaseFragment() { private var overmapview: OverMapView?=null + private var lifeVisable2User = false + private var finalVisable2User = false + + private var subscribe: Disposable?=null + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -23,24 +40,83 @@ class OverviewFragment : BaseFragment() { viewGroup.removeView(overmapview) } overmapview?.onCreateView(savedInstanceState) + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onCreateView") + statusChange(TaxiPassengerModel.getInstance().curOrderStatus) return overmapview!! } override fun onResume() { super.onResume() overmapview?.onResume() + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onResume") + lifeVisable2User = true + checkVisable() } override fun onPause() { super.onPause() overmapview?.onPause() + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onPause") + lifeVisable2User = false + checkVisable() + } + + private fun checkVisable() { + + subscribe?.let { + if (!it.isDisposed) { + it.dispose() + } + } + subscribe = Observable.timer(500, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + if(lifeVisable2User){//展示 + if(!finalVisable2User){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"正在展示") + finalVisable2User = true + statusChange(TaxiPassengerModel.getInstance().curOrderStatus) + } + + }else{//没有展示 + if(finalVisable2User){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"已经隐藏") + finalVisable2User = false + stopAndClear() + } + } + } } override fun onDestroy() { super.onDestroy() overmapview?.onDestroy() + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"onDestroy") } + private fun statusChange(currentStatusEnum: TaxiPassengerOrderStatusEnum){ + CallerLogger.d(SceneConstant.M_TAXI_P + TAG,"状态变更最新状态:$currentStatusEnum") + when (currentStatusEnum) { + TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> { + CallerFuncBizManager.bizProvider.getAllV2XEvents() + } + TaxiPassengerOrderStatusEnum.ArriveAtEnd,TaxiPassengerOrderStatusEnum.JourneyCompleted, + TaxiPassengerOrderStatusEnum.Cancel -> { + // stop clear + stopAndClear() + } + else -> {} + } + } + + private fun stopAndClear(){ + CallerFuncBizManager.bizProvider.stopQueryV2XEvents() + UiThreadHandler.post({ + overmapview?.clearV2XMarkers() + }, UiThreadHandler.MODE.QUEUE) + } + + override fun getLayoutId(): Int { return 0 } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index c7ce8bb793..fcd52eea97 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -11,6 +11,7 @@ import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.Lifecycle; import com.mogo.commons.module.status.MogoStatusManager; import com.mogo.commons.mvp.MvpFragment; @@ -356,21 +357,25 @@ public class TaxiPassengerBaseFragment extends MvpFragment