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 { - 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() 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());