diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/callback/IBusControllerStatusCallback.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/callback/IBusControllerStatusCallback.java index e10afc44e7..8e4528feba 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/callback/IBusControllerStatusCallback.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/callback/IBusControllerStatusCallback.java @@ -8,8 +8,6 @@ import com.mogo.eagle.core.data.map.MogoLocation; * Model->Presenter回调:状态控制器监听(accOn、adas ui show、voice ui show、push ui show、v2x ui show等等) */ public interface IBusControllerStatusCallback { - // 是否vr map模式 - void onVRModeChanged(boolean isVRMode); // 自车定位 void onCarLocationChanged(MogoLocation location); //开始开启自动驾驶 diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 2a352f1cb5..7be540a61c 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -48,6 +48,7 @@ import com.mogo.och.bus.util.BDRouteDataTestUtils; import com.mogo.och.bus.view.BizMapView; import com.mogo.och.bus.view.SlidePanelView; import com.mogo.och.common.module.utils.SoundPoolHelper; +import com.mogo.och.common.module.utils.ResourcesUtils; import org.greenrobot.eventbus.EventBus; @@ -168,7 +169,7 @@ public abstract class BaseBusTabFragment }); initListener(); - setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() { @Override @@ -307,9 +308,9 @@ public abstract class BaseBusTabFragment if(smallMapView != null){ smallMapView.onDestroy(); } - super.onDestroyView(); CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); EventBus.getDefault().unregister(this); + super.onDestroyView(); } /** @@ -348,9 +349,9 @@ public abstract class BaseBusTabFragment public void run() { tvArrived.setEnabled(isClickable); if (isClickable) { - tvArrived.setTextColor(getResources().getColor(R.color.bus_white)); + tvArrived.setTextColor(ResourcesUtils.getColor(R.color.bus_white)); } else { - tvArrived.setTextColor(getResources().getColor(R.color.bus_arrived_btn_un_clickable_color)); + tvArrived.setTextColor(ResourcesUtils.getColor(R.color.bus_arrived_btn_un_clickable_color)); } } },UiThreadHandler.MODE.QUEUE); @@ -398,7 +399,7 @@ public abstract class BaseBusTabFragment ctvAutopilotStatusTv.setTextColor(AbsMogoApplication.getApp().getColor(R.color.bus_autopilot_text_color_normal)); ctvAutopilotStatusIv.setImageResource(R.drawable.bus_ic_autopilot); if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == autopilotStatus) { //1可用 - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_runnig_tv)); if(canStartAutopilt){ ctvAutopilotStatus.setClickable(true); ctvAutopilotStatus.setBackgroundResource(R.drawable.bus_autopilot_0_1_status_bg); @@ -416,7 +417,7 @@ public abstract class BaseBusTabFragment == autopilotStatus) { ctvAutopilotStatusTv.setText(R.string.bus_pingxing_driver); ctvAutopilotStatus.setClickable(false); - ctvAutopilotStatus.setBackgroundResource(R.drawable.pingxingjiashi); + ctvAutopilotStatus.setBackgroundResource(R.drawable.common_autopilot_pxjs); } } @@ -426,18 +427,18 @@ public abstract class BaseBusTabFragment if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == autopilotStatus) {//2 running ctvAutopilotStatusIv.setImageResource(R.drawable.bus_right_autopilot_icon); - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_success_tv)); + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_success_tv)); // ctvAutopilotStatus.setSelected(false); ctvAutopilotStatus.setClickable(false); } else { ctvAutopilotStatusIv.setImageResource(R.drawable.bus_wrong_autopilot_icon); - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_failure_tv)); + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_failure_tv)); ctvAutopilotStatus.setClickable(false); // ctvAutopilotStatus.setSelected(false); } - UiThreadHandler.postDelayed(() -> setAutopilotBtnStatus(autopilotStatus,CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)), 1000); + UiThreadHandler.postDelayed(() -> setAutopilotBtnStatus(autopilotStatus,CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)), 1000); } private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning, boolean canStartAutopilt) { @@ -499,9 +500,8 @@ public abstract class BaseBusTabFragment */ public void startAutopilotAnimation() { isAnimateRunning = true; - ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_tv)); - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); -// ctvAutopilotStatus.setSelected(false); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_tv)); + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_normal)); ctvAutopilotStatus.setClickable(true); ctvAutopilotStatusIv.setImageResource(R.drawable.bus_loading_autopilot_icon); if (autopilotLoadingAnimator == null) { diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index bda3e60a12..54547608bb 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -39,6 +39,7 @@ import com.mogo.och.bus.view.SlidePanelView; import com.mogo.och.common.module.utils.BlinkAnimationUtil; import com.mogo.och.common.module.utils.OCHThreadPoolManager; import com.mogo.och.common.module.utils.QRUtilsKt; +import com.mogo.och.common.module.utils.ResourcesUtils; import com.mogo.och.common.module.wigets.BindQRCodeDialog; import com.mogo.och.common.module.wigets.MarqueeTextView; import com.mogo.och.common.module.wigets.OCHCommitDialog; @@ -84,6 +85,14 @@ public class BusFragment extends BaseBusTabFragment @Override public void onDestroyView() { + if (mPresenter != null) { + mPresenter.onDestroy(this); + } + IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); + if(overlayManager!=null) { + overlayManager.removeAllLines(); + overlayManager.removeAllPoints(); + } super.onDestroyView(); } @@ -270,23 +279,23 @@ public class BusFragment extends BaseBusTabFragment if (arrivingOrArrivedIndex == 0 || arrivingOrArrivedIndex -1 == 0 || (arrivingOrArrivedIndex -2 == 0 && stationList.size() == 3)){ - firstStationItem.setStationTag(getResources().getString(R.string.bus_station_txt_tag_start)); + firstStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_start)); }else { firstStationItem.setStationTag(""); } if (arrivingOrArrivedIndex + 1 == stationList.size() - 1 || arrivingOrArrivedIndex == stationList.size() - 1 || (arrivingOrArrivedIndex == 0 && arrivingOrArrivedIndex + 2 == stationList.size() - 1)){ //确认是否显示 "终" - thirdStationItem.setStationTag(getResources().getString(R.string.bus_station_txt_tag_end)); + thirdStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_end)); }else { thirdStationItem.setStationTag(""); } //圆点: 0:灰色 过站 1:绿色 到站或者即将到站 2:蓝色:未到站 if (arrivingOrArrivedIndex == 0 && isArrived){ - firstStationItem.setStationNameColor(getResources().getColor(R.color.bus_line_station_color_selected)); - secondStationItem.setStationNameColor(getResources().getColor(R.color.bus_arrived_station_name_text_color)); - thirdStationItem.setStationNameColor(getResources().getColor(R.color.bus_arrived_station_name_text_color)); + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + secondStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); firstStationItem.setStationName(stationList.get(0).getName()); secondStationItem.setStationName(stationList.get(1).getName()); @@ -300,9 +309,9 @@ public class BusFragment extends BaseBusTabFragment secondStationItem.setStationArrowBg(2); }else if (arrivingOrArrivedIndex == stationList.size() - 1){ - firstStationItem.setStationNameColor(getResources().getColor(R.color.bus_station_tag_txt_un_color)); - secondStationItem.setStationNameColor(getResources().getColor(R.color.bus_station_tag_txt_un_color)); - thirdStationItem.setStationNameColor(getResources().getColor(R.color.bus_line_station_color_selected)); + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + secondStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); firstStationItem.setStationName(stationList.get(arrivingOrArrivedIndex -2).getName()); secondStationItem.setStationName(stationList.get(arrivingOrArrivedIndex -1).getName()); @@ -320,9 +329,9 @@ public class BusFragment extends BaseBusTabFragment } }else { - firstStationItem.setStationNameColor(getResources().getColor(R.color.bus_station_tag_txt_un_color)); - secondStationItem.setStationNameColor(getResources().getColor(R.color.bus_line_station_color_selected)); - thirdStationItem.setStationNameColor(getResources().getColor(R.color.bus_arrived_station_name_text_color)); + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + secondStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); firstStationItem.setStationName(stationList.get(arrivingOrArrivedIndex -1).getName()); secondStationItem.setStationName(stationList.get(arrivingOrArrivedIndex).getName()); @@ -356,23 +365,23 @@ public class BusFragment extends BaseBusTabFragment secondStationItem.showOrHideStationArrowBg(false); thirdStationItem.showOrHideStationArrowBg(false); - firstStationItem.setStationTag(getResources().getString(R.string.bus_station_txt_tag_start)); - thirdStationItem.setStationTag(getResources().getString(R.string.bus_station_txt_tag_end)); + firstStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_start)); + thirdStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_end)); firstStationItem.setStationName(stationList.get(0).getName()); thirdStationItem.setStationName(stationList.get(1).getName()); //圆点: 0:灰色 过站 1:绿色 到站或者即将到站 2:蓝色:未到站 if (arrivingOrArrivedIndex == 0 && isArrived){//到站 - firstStationItem.setStationNameColor(getResources().getColor(R.color.bus_line_station_color_selected)); - thirdStationItem.setStationNameColor(getResources().getColor(R.color.bus_arrived_station_name_text_color)); + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); firstStationItem.setStationPointBg(1); firstStationItem.setStationArrowBg(2); thirdStationItem.setStationPointBg(0); }else { - firstStationItem.setStationNameColor(getResources().getColor(R.color.bus_station_tag_txt_un_color)); - thirdStationItem.setStationNameColor(getResources().getColor(R.color.bus_line_station_color_selected)); + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); if (isArrived){ //到终点 firstStationItem.setStationPointBg(0); firstStationItem.setStationArrowBg(0); @@ -389,10 +398,10 @@ public class BusFragment extends BaseBusTabFragment private void showOrHideSwitchLineBtn(boolean isShow) { if (isShow){//显示切换路线 mSwitchLine.setTag(0); - mSwitchLine.setText(getResources().getString(R.string.bus_switch_line_btn)); + mSwitchLine.setText(ResourcesUtils.getString(R.string.bus_switch_line_btn)); }else {//显示结束路线 mSwitchLine.setTag(1); - mSwitchLine.setText(getResources().getString(R.string.bus_close_line_btn)); + mSwitchLine.setText(ResourcesUtils.getString(R.string.bus_close_line_btn)); } } @@ -453,17 +462,6 @@ public class BusFragment extends BaseBusTabFragment smallMapView.clearPolyline(); } - /** - * VR模式切换 - * - * @param isVRMode - */ - public void onVRModeChanged(boolean isVRMode) { - if (mRootView != null) { - mRootView.setVisibility(isVRMode ? View.VISIBLE : View.GONE); - } - } - /** * 绘制地图起点终点 * @@ -517,7 +515,7 @@ public class BusFragment extends BaseBusTabFragment //本次行程未结束,不支持切换路线。点击则toast提示:当前行程未完成,不可切换路线 if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - ToastUtils.showLong(getResources().getString(R.string.bus_switch_line_btn_warning1)); + ToastUtils.showLong(ResourcesUtils.getString(R.string.bus_switch_line_btn_warning1)); return; } if ((int)mSwitchLine.getTag() == 0){//切换路线 diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index cce03cef41..b6e6770a2b 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -151,8 +151,6 @@ public class OrderModel { // 定位监听 CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5, mMapLocationListener); - MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); - TrajectoryManager.INSTANCE.addTrajectoryListListenerr(TAG,iTrajectoryListener); //开启自驾后 异常信息返回 @@ -307,7 +305,6 @@ public class OrderModel { startOrStopOrderLoop(false); //startOrStopQueryPassengerWriteOff(false); - MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); // 注销定位监听 CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG); @@ -326,18 +323,6 @@ public class OrderModel { TrajectoryAndDistanceManager.INSTANCE.removeListener(TAG); } - private final IMogoStatusChangedListener mMogoStatusChangedListener = new IMogoStatusChangedListener() { - // VR mode变更回调 - @Override - public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { - if (StatusDescriptor.VR_MODE == descriptor) { - if (mControllerStatusCallback != null) { - mControllerStatusCallback.onVRModeChanged(isTrue); - } - } - } - }; - private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { @Override public void brakeStatusChanged(boolean isBrakeAvailable) { @@ -359,7 +344,6 @@ public class OrderModel { @Override public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { if (null == gnssInfo) return; - Logger.d(TAG, "onChassisLocationGCJ02"); if (mControllerStatusCallback != null) { mControllerStatusCallback.onCarLocationChanged(gnssInfo); } @@ -533,7 +517,6 @@ public class OrderModel { CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot(); // 取消自驾 setTrajectoryStation(null,null,-1L); - // startOrStopQueryPassengerWriteOff(false); } } @@ -621,7 +604,7 @@ public class OrderModel { // 非自驾状态---->预写日志----> 启动自驾 ---> 自驾启动成功 ----> 上报日志 //  自驾状态---->启动自驾 ---> 自驾启动成功 - //根据开关和后台是否发布轨迹启动自驾 + //1、判断轨迹url是否可用 if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty(busRoutesResult.csvFileUrl) && TextUtils.isEmpty(busRoutesResult.csvFileUrlDPQP) @@ -633,22 +616,15 @@ public class OrderModel { + "busRoutesResult.csvFileUrlDPQP = "+busRoutesResult.csvFileUrlDPQP); return; } - - if (!CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(true)) { + //2、6个条件判断 + if (!CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(true, 0)) { return; } CallerLogger.e(M_BUS + TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand); - - if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { - ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + - ", 请稍候重试"); - triggerUnableStartAPReasonEvent(); - return; - } - + //3、距离轨迹15m计算 String resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long)busRoutesResult.getLineId()); if(TrajectoryAndDistanceManager.errorTypeNoneLineId.equals(resion)){ MogoLocation nextStationPoint = new MogoLocation(); @@ -661,7 +637,7 @@ public class OrderModel { MogoLocation currentStationPoint = new MogoLocation(); currentStationPoint.setLongitude(busStationBean.getGcjLon()); currentStationPoint.setLatitude(busStationBean.getGcjLat()); - setTrajectoryStation(currentStationPoint,nextStationPoint, (long) currentLineId); + setTrajectoryStation(currentStationPoint,nextStationPoint, (long)busRoutesResult.getLineId()); resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long)busRoutesResult.getLineId()); } if(!StringUtils.isEmpty(resion)){ @@ -669,6 +645,16 @@ public class OrderModel { return; } + //4、ssm 给出数据 + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { + ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + + ", 请稍候重试"); + triggerUnableStartAPReasonEvent(); + return; + } + + + firstStartAutopilot++; if(CallerAutoPilotStatusListenerManager.INSTANCE.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ @@ -1282,26 +1268,6 @@ public class OrderModel { return parameters; } - public void setStation(){ - BusStationBean busStationBean = stationList.get(backgroundCurrentStationIndex); - String nextStationName = ""; - String nextStationNameKr = ""; - MogoLocation nextStationPoint = new MogoLocation(); - if (backgroundCurrentStationIndex < stationList.size() - 1) { - BusStationBean nextStation = stationList.get(backgroundCurrentStationIndex + 1); - nextStationName = nextStation.getName(); - nextStationNameKr = nextStation.getNameKr(); - nextStationPoint.setLongitude(nextStation.getGcjLon()); - nextStationPoint.setLatitude(nextStation.getGcjLat()); - } - final String currentStationName = busStationBean.getName(); - String finalNextStationName = nextStationName; - String finalNextStationNameKr = nextStationNameKr; - MogoLocation currentStationPoint = new MogoLocation(); - currentStationPoint.setLongitude(busStationBean.getGcjLon()); - currentStationPoint.setLatitude(busStationBean.getGcjLat()); - } - public void setTrajectoryStation(MogoLocation startStation,MogoLocation endStation,Long lineId){ TrajectoryAndDistanceManager.INSTANCE.setStationPoint(startStation,endStation,lineId); } diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java index 9411be65fd..8a54250475 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java @@ -62,7 +62,14 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onChangeLineIdSuccess() { OrderModel.getInstance().clearBusStationDatas(); - runOnUIThread(() -> mView.onChangeLineIdSuccess()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onChangeLineIdSuccess(); + } + } + }, UiThreadHandler.MODE.QUEUE); } public void queryBusLines(){ @@ -105,6 +112,8 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh) { - mView.onBusLineTasks(o,position,autoRefresh); + if(mView!=null) { + mView.onBusLineTasks(o,position,autoRefresh); + } } } diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 80a79c0161..72f14c7d25 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -84,8 +84,8 @@ public class BusPresenter extends Presenter OrderModel.getInstance().setControllerStatusCallback(this); OrderModel.getInstance().setPassengerCallback(this); OrderModel.getInstance().setAdasStatusCallback(this); - OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); - LoginStatusManager.INSTANCE.addListener(TAG,this); + OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this); + LoginStatusManager.INSTANCE.addListener(TAG, this); } public void releaseListener() { @@ -108,7 +108,7 @@ public class BusPresenter extends Presenter } public void restartAutopilot() { - if (OrderModel.getInstance().isGoingToNextStation()){ + if (OrderModel.getInstance().isGoingToNextStation()) { OrderModel.getInstance().restartAutopilot(); } } @@ -119,32 +119,51 @@ public class BusPresenter extends Presenter } @Override - public void updateBusTaskStatus(String lineName,String lineTime, + public void updateBusTaskStatus(String lineName, String lineTime, List stationList, int arrivingOrArrivedIndex, boolean isArrived) { mStationList.clear(); mStationList.addAll(stationList); - if (arrivingOrArrivedIndex == 0 || isArrived){ + if (arrivingOrArrivedIndex == 0 || isArrived) { mCurrentStation = arrivingOrArrivedIndex; - }else { - mCurrentStation = arrivingOrArrivedIndex -1; + } else { + mCurrentStation = arrivingOrArrivedIndex - 1; } CallerLogger.d(M_BUS + "BusOrderModel =", " mCurrentStation =" + mCurrentStation); - if (mView != null) { - runOnUIThread(() -> mView.updateBusTaskStatus(lineName,lineTime, - stationList, arrivingOrArrivedIndex, isArrived)); - } + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.updateBusTaskStatus(lineName, lineTime, + stationList, arrivingOrArrivedIndex, isArrived); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void updateEmptyUi() { - runOnUIThread(() -> mView.updateLineEmptyUI()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.updateLineEmptyUI(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void clearBusStationsMarkers() { - runOnUIThread(() -> mView.clearBusStationsMarkers()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.clearBusStationsMarkers(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -157,12 +176,12 @@ public class BusPresenter extends Presenter @Override public void onAutopilotArriveAtStation(ArrivedStation arrivedStation) { - CallerLogger.e( M_BUS + TAG, "行程日志-onAutopilotArriveAtStation arrive"); - arriveStation(arrivedStation,"底盘触发进站"); + CallerLogger.e(M_BUS + TAG, "行程日志-onAutopilotArriveAtStation arrive"); + arriveStation(arrivedStation, "底盘触发进站"); } - public void arriveStation(ArrivedStation arrivedStation,String type){ - OrderModel.getInstance().onArriveAt(arrivedStation,type); + public void arriveStation(ArrivedStation arrivedStation, String type) { + OrderModel.getInstance().onArriveAt(arrivedStation, type); } @Override @@ -186,52 +205,62 @@ public class BusPresenter extends Presenter return; } // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: OrderModel.getInstance().triggerStartServiceEvent( - OrderModel.getInstance().isRestartAutopilot(), true); + OrderModel.getInstance().isRestartAutopilot(), true); // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; default: - runOnUIThread(() -> mView.onAutopilotEnableChange(false)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.onAutopilotEnableChange(false); + } + } + }, UiThreadHandler.MODE.QUEUE); break; } } - @Override - public void onVRModeChanged(boolean isVRMode) { - runOnUIThread(() -> mView.onVRModeChanged(isVRMode)); - } - @Override public void onCarLocationChanged(MogoLocation location) { -// if (null != location) { -// runOnUIThread(() -> mView.updateSpeedView((float) location.getGnssSpeed())); -// } + } @Override public void startOpenAutopilot() { //非美化模式下启动动画 - runOnUIThread(() -> mView.startAutopilotAnimation()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.startAutopilotAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - == CallerAutoPilotStatusListenerManager.INSTANCE.getState()){ - mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); - } - } - - private void runOnUIThread(Runnable executor) { - if (executor == null) { - return; - } - if (Looper.myLooper() != Looper.getMainLooper()) { - UiThreadHandler.post(executor); - } else { - executor.run(); + == CallerAutoPilotStatusListenerManager.INSTANCE.getState() && mView != null) { + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } @@ -245,22 +274,24 @@ public class BusPresenter extends Presenter @Override public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo, long lineId) { - BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo,lineId); + BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo, lineId); } @Override public void onStatusChange(LoginStatusEnum currentStatus) { CallerLogger.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin()); - if(LoginStatusManager.isLogin()){ + if (LoginStatusManager.isLogin()) { OrderModel.getInstance().startOrStopOrderLoop(true); OrderModel.getInstance().queryBusRoutes(); - }else { + } else { BusTrajectoryManager.getInstance().stopTrajReqLoop(); OrderModel.getInstance().startOrStopOrderLoop(false); BusTrajectoryManager.getInstance().stopTrajReqLoop(); clearBusStationsMarkers(); - mView.hideSlidePanel(); + if(mView!=null) { + mView.hideSlidePanel(); + } OrderModel.getInstance().closeBeautificationMode(); } } @@ -268,9 +299,9 @@ public class BusPresenter extends Presenter @Override public void playPassenger(WriteOffPassenger passenger) { int passengerNum = passenger.passengerSize; - if (passengerNum > 1){ //多人播报 "x人" ---》x人核验通过 - OrderModel.getInstance().sendWriteOffNumToClient(passengerNum+"人核验通过"); - }else { //是 1 播放 "滴" 2022.11.09 改为: "核验通过" + if (passengerNum > 1) { //多人播报 "x人" ---》x人核验通过 + OrderModel.getInstance().sendWriteOffNumToClient(passengerNum + "人核验通过"); + } else { //是 1 播放 "滴" 2022.11.09 改为: "核验通过" // mView.playDI(); OrderModel.getInstance().sendWriteOffNumToClient("核验通过"); } @@ -279,11 +310,20 @@ public class BusPresenter extends Presenter @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void canStartAutopilot(boolean canStart) { - mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStart); + if(mView!=null) { + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStart); + } } } diff --git a/OCH/bus/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml b/OCH/bus/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml index 21c3611ffe..9c91366aa3 100644 --- a/OCH/bus/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml +++ b/OCH/bus/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml @@ -1,8 +1,8 @@ - + - + diff --git a/OCH/bus/driver/src/main/res/drawable/bus_autopilot_2_status_bg.xml b/OCH/bus/driver/src/main/res/drawable/bus_autopilot_2_status_bg.xml index 1b95919363..f0e15d25d2 100644 --- a/OCH/bus/driver/src/main/res/drawable/bus_autopilot_2_status_bg.xml +++ b/OCH/bus/driver/src/main/res/drawable/bus_autopilot_2_status_bg.xml @@ -1,8 +1,8 @@ - + - + diff --git a/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml b/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml index 34ffb18583..2462451fb7 100644 --- a/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml @@ -19,22 +19,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> - - - - - - - - - - - - - - - - + /> - - diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt index d4b30d1d6b..6872a4ffb3 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/fragment/DriverM1Fragment.kt @@ -15,6 +15,7 @@ import com.magic.mogo.och.charter.view.SlidePanelView import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.temp.EventLogout +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.common.module.utils.DateTimeUtil @@ -108,6 +109,13 @@ class DriverM1Fragment : CharterBaseFragment - - + + diff --git a/OCH/charter/driver/src/main/res/drawable/charter_autopilot_2_status_bg.xml b/OCH/charter/driver/src/main/res/drawable/charter_autopilot_2_status_bg.xml index fda939cf28..f0e15d25d2 100644 --- a/OCH/charter/driver/src/main/res/drawable/charter_autopilot_2_status_bg.xml +++ b/OCH/charter/driver/src/main/res/drawable/charter_autopilot_2_status_bg.xml @@ -1,8 +1,8 @@ - + - + diff --git a/OCH/charter/driver/src/main/res/layout/charter_autopilot_status.xml b/OCH/charter/driver/src/main/res/layout/charter_autopilot_status.xml index ae9faef3d4..d9064ebce3 100644 --- a/OCH/charter/driver/src/main/res/layout/charter_autopilot_status.xml +++ b/OCH/charter/driver/src/main/res/layout/charter_autopilot_status.xml @@ -3,8 +3,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="@dimen/dp_616" - android:layout_height="@dimen/dp_180" + android:layout_width="@dimen/dp_618" + android:layout_height="@dimen/dp_185" android:gravity="center" android:background="@drawable/charter_autopilot_0_1_status_bg" tools:parentTag="RelativeLayout"> diff --git a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml index cbb7a1b508..438d21db04 100644 --- a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml +++ b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml @@ -164,20 +164,24 @@ + android:layout_marginTop="-31dp" + android:layout_marginLeft="@dimen/dp_9"/> diff --git a/OCH/charter/passenger/src/main/assets/m1_style.data b/OCH/charter/passenger/src/main/assets/m1_style.data index da9ae1d72d..4e4bb6709d 100644 Binary files a/OCH/charter/passenger/src/main/assets/m1_style.data and b/OCH/charter/passenger/src/main/assets/m1_style.data differ diff --git a/OCH/charter/passenger/src/main/assets/m1_style_extra.data b/OCH/charter/passenger/src/main/assets/m1_style_extra.data index 4bed4023d5..3ce2c92d11 100644 Binary files a/OCH/charter/passenger/src/main/assets/m1_style_extra.data and b/OCH/charter/passenger/src/main/assets/m1_style_extra.data differ diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt index afded4c1b1..2de61eac89 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt @@ -50,6 +50,7 @@ import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatu import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager import com.mogo.och.common.module.manager.beautifymode.BeautifyManager +import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.socket.lan.LanSocketManager import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil @@ -1120,18 +1121,12 @@ object CharterPassengerModel { * 开启自动驾驶 */ fun startAutopilot() { - if (!OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { - ToastCharterUtils.showToastLong( - OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + - ", 请稍候重试" - ) - return - } orderInfo?.let { if (it.arriveStatus == OrderInfoResponse.ARRIVED) { ToastCharterUtils.showToastLong("已到达目的地请重新选择线路") return } + //1、判断轨迹Id是否可用 locusInfo?.let { //根据开关和后台是否发布轨迹启动自驾 if (FunctionBuildConfig.isPassStartAutopilotCommand @@ -1147,9 +1142,18 @@ object CharterPassengerModel { return } } + // 2、6个条件判断 if (!CallerAutoPilotControlManager.isCanStartAutopilot(true)) { return } + // 4、ssm 给出数据 + if (!OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { + ToastCharterUtils.showToastLong( + OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + + ", 请稍候重试" + ) + return + } val parameters = initAutopilotControlParameters() if (null == parameters) { ToastCharterUtils.showToastShort("请选择站点") @@ -1265,4 +1269,12 @@ object CharterPassengerModel { updateAutopilotControlParameters(null) } + fun setTrajectoryStation( + startStation: MogoLocation?, + endStation: MogoLocation?, + lineId: Long? + ) { + TrajectoryAndDistanceManager.setStationPoint(startStation, endStation, lineId) + } + } \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt index 263ae11877..9c277423c3 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/MainFragment.kt @@ -10,17 +10,14 @@ import com.amap.api.maps.model.LatLng import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.data.config.HdMapBuildConfig -import com.mogo.eagle.core.data.constants.MogoServicePaths -import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController -import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView import com.mogo.eagle.core.function.view.SiteMarkerBean import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.map.listener.IMogoMapListener import com.mogo.map.listener.MogoMapListenerHandler -import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.och.charter.passenger.R import com.mogo.och.charter.passenger.bean.event.EventLineSites import com.mogo.och.charter.passenger.callback.IClearViewCallback @@ -45,9 +42,6 @@ import kotlinx.android.synthetic.main.charter_p_main_fragment.biz_video import kotlinx.android.synthetic.main.charter_p_main_fragment.mapBizView import kotlinx.android.synthetic.main.charter_p_main_fragment.mcv_play_music import kotlinx.android.synthetic.main.charter_p_main_fragment.omvOverMap -//import kotlinx.android.synthetic.main.charter_p_main_fragment.viewBusPM1MsgBoxBubble -//import kotlinx.android.synthetic.main.charter_p_main_fragment.viewBusPM1MsgBoxButton -//import kotlinx.android.synthetic.main.charter_p_main_fragment.viewBusPM1MsgBoxList import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -272,9 +266,16 @@ class MainFragment : MvpFragment(), IMogo override fun onDestroyView() { mapBizView.onDestroy() omvOverMap.onDestroy() + CallerMapUIServiceManager.getOverlayManager()?.let { + it.removeAllLines() + it.removeAllPoints() + } MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener(TAG) - super.onDestroyView() EventBus.getDefault().unregister(this) + if (mPresenter != null) { + mPresenter?.onDestroy(this) + } + super.onDestroyView() } override fun onMapLoaded() { diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt index 74e4dfca3a..f33025bda7 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt @@ -59,7 +59,7 @@ object LoginModel { } fun hasInit(): Boolean { - if (mContext == null && iTaxiLoginCallback == null) { + if (iTaxiLoginCallback == null) { return false } return true diff --git a/OCH/common/biz/src/main/res/layout/biz_login_business_view.xml b/OCH/common/biz/src/main/res/layout/biz_login_business_view.xml index b9b315631e..48ebd3c80b 100644 --- a/OCH/common/biz/src/main/res/layout/biz_login_business_view.xml +++ b/OCH/common/biz/src/main/res/layout/biz_login_business_view.xml @@ -13,7 +13,7 @@ android:gravity="center" android:paddingTop="@dimen/dp_20" android:paddingBottom="@dimen/dp_20" - android:text="小巴" + android:text="公交模式" android:textColor="@color/white" app:layout_constraintBottom_toTopOf="@+id/actv_business_charter" app:layout_constraintEnd_toEndOf="parent" @@ -27,7 +27,7 @@ android:paddingTop="@dimen/dp_20" android:paddingBottom="@dimen/dp_20" android:gravity="center" - android:text="包车" + android:text="包车模式" android:textColor="@color/white" app:layout_constraintBottom_toTopOf="@+id/actv_business_shuttle" app:layout_constraintEnd_toEndOf="parent" @@ -41,7 +41,7 @@ android:paddingTop="@dimen/dp_20" android:paddingBottom="@dimen/dp_20" android:gravity="center" - android:text="接驳" + android:text="接驳模式" android:textColor="@color/white" app:layout_constraintBottom_toTopOf="@+id/actv_business_taxi" app:layout_constraintEnd_toEndOf="parent" @@ -55,7 +55,7 @@ android:paddingTop="@dimen/dp_20" android:paddingBottom="@dimen/dp_20" android:gravity="center" - android:text="出租车" + android:text="出租车模式" android:textColor="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/OCH/common/common/build.gradle b/OCH/common/common/build.gradle index 3562cd026e..1279256a45 100644 --- a/OCH/common/common/build.gradle +++ b/OCH/common/common/build.gradle @@ -45,6 +45,7 @@ android { res.srcDirs = [ 'src/main/res', 'src/main/res/xiaozhi', + 'src/main/res/autopilot', ] } } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt index 334130cf98..7fa2623b27 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt @@ -59,10 +59,10 @@ object LoginLanDriverSocket : ILoginCallback { // 司机端发送业务模式更改和环境校验 override fun onStatusChange(currentStatus: LoginStatusEnum?) { + FlavorUtils.getEnvCheck() if (FlavorUtils.vehicleType != null && FlavorUtils.projectType != null && FlavorUtils.envType != null) { when (currentStatus) { LoginStatusEnum.Login -> { - FlavorUtils.getEnvCheck() val msg = ChangeBusinessType( FlavorUtils.vehicleType!!, @@ -77,7 +77,6 @@ object LoginLanDriverSocket : ILoginCallback { BizLoopManager.setLoopFunction(TAG, LoopInfo(60*10, ::loopCheck)) } } - else -> { BizLoopManager.removeLoopFunction(TAG) val msg = diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanPassengerSocket.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanPassengerSocket.kt index c305ec6afe..f126372eea 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanPassengerSocket.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanPassengerSocket.kt @@ -2,12 +2,16 @@ package com.mogo.och.common.module.biz.lansocket import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.login.BusinessEnum import com.mogo.och.common.module.biz.login.LoginStatusEnum import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.common.module.manager.loop.LoopInfo import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener import com.mogo.och.common.module.manager.socket.lan.LanSocketManager import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg @@ -36,6 +40,24 @@ object LoginLanPassengerSocket : IReceivedMsgListener { } } + var isConnected:Boolean by Delegates.observable(false) { _, oldV, newV -> + if (oldV != newV) { + if(newV){// 已连接 + if(driverSn.isEmpty()){ + LoginStatusManager.changeStatus("连接成功 未收到司机屏sn") + }else{ + LoginStatusManager.changeStatus("连接成功 司机SN:${driverSn}") + } + }else{// 未连接 + if(driverSn.isEmpty()){ + LoginStatusManager.changeStatus("当前状态:连接司机屏中") + }else{ + LoginStatusManager.changeStatus("连接断开 司机SN:${driverSn}") + } + } + } + } + // 环境监测 private val checkListener = object : ILanMessageListener { override fun target(): Class { @@ -94,7 +116,7 @@ object LoginLanPassengerSocket : IReceivedMsgListener { BusinessType.taxi -> LoginStatusManager.setBusinessType(BusinessEnum.Taxi.code) BusinessType.taxiunmanned ->LoginStatusManager.setBusinessType(BusinessEnum.Taxi.code) } - status.append(", 后台配置:${LoginStatusManager.getBusInessType().name}>") + status.append(", 切换后:${LoginStatusManager.getBusInessType().name}>") LoginStatusManager.changeStatus(status.toString()) UiThreadHandler.postDelayed({ LoginStatusManager.setLoginStatus(LoginStatusEnum.Login) @@ -113,6 +135,7 @@ object LoginLanPassengerSocket : IReceivedMsgListener { init { //监听司机端消息 CallerTelematicListenerManager.addListener(TAG, this) + BizLoopManager.setLoopFunction(TAG, LoopInfo(3, ::showConnectStatusWithDriver)) // 乘客屏 LanSocketManager.registerSocketMessageListener( DPMsgType.TYPE_ENV_CHECK.type, @@ -130,6 +153,11 @@ object LoginLanPassengerSocket : IReceivedMsgListener { } + private fun showConnectStatusWithDriver(){ + CallerLogger.d(TAG,"司机屏连接状态:${CallerTelematicManager.getClientConnStatus()}") + isConnected = CallerTelematicManager.getClientConnStatus() + } + override fun onReceivedServerSn(sn: String?) { Logger.d(TAG, "司机屏sn:$sn") driverSn = sn ?: "" diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/distance/TrajectoryAndDistanceManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/distance/TrajectoryAndDistanceManager.kt index fc8023d4a7..431463ec97 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/distance/TrajectoryAndDistanceManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/distance/TrajectoryAndDistanceManager.kt @@ -13,6 +13,7 @@ import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.LocationUtils import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.manager.autopilot.trajectory.TrajectoryCache +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil @@ -661,9 +662,12 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener { */ fun canStartAutopilot(lineId: Long?): String { if (lineId == null) { + OchChainLogManager.writeChainLog("启动自驾距离判断","未传轨迹ID", eventID = OchChainLogManager.EVENT_KEY_INFO_AUTOPILOT_DISTANCE) return "请确认线路ID" } + OchChainLogManager.writeChainLog("启动自驾距离判断","条件记录:lineId:${lineId}----this.lineId:${this.lineId}", eventID = OchChainLogManager.EVENT_KEY_INFO_AUTOPILOT_DISTANCE) + try { if (mRoutePoints.isNullOrEmpty()) { // 判断距离起始站的距离 @@ -697,6 +701,7 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener { } catch (e: Exception) { e.printStackTrace() } + OchChainLogManager.writeChainLog("启动自驾距离判断","距离站点距离:不支持的条件直接放过", eventID = OchChainLogManager.EVENT_KEY_INFO_AUTOPILOT_DISTANCE) return "" } @@ -714,6 +719,7 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener { startStationInfo.stationPoint!!.longitude, startStationInfo.stationPoint!!.latitude ) + OchChainLogManager.writeChainLog("启动自驾距离判断","距离站点距离:${distance}", eventID = OchChainLogManager.EVENT_KEY_INFO_AUTOPILOT_DISTANCE) return if (distance <= OchCommonConst.AUTOMATIC_PLANNING_MAX_DISTANCE) { "" } else { @@ -737,10 +743,12 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener { currentPoint.latitude ) if(pointToLine<=OchCommonConst.AUTOMATIC_PLANNING_MAX_DISTANCE){ + OchChainLogManager.writeChainLog("启动自驾距离判断","距离轨迹线距离:${pointToLine}", eventID = OchChainLogManager.EVENT_KEY_INFO_AUTOPILOT_DISTANCE) return "" } } } + OchChainLogManager.writeChainLog("启动自驾距离判断","距离轨迹线超过15m,无法启动自驾", eventID = OchChainLogManager.EVENT_KEY_INFO_AUTOPILOT_DISTANCE) return "距离轨迹线超过15m,无法启动自驾" } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt index f0dc108a82..eed3f14937 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt @@ -26,6 +26,8 @@ object OchChainLogManager { const val EVENT_KEY_INFO_SOCKET = "analytics_event_och_track_screen_msg" const val EVENT_KEY_INFO_SOCKET_CONNECT = "analytics_event_och_track_screen_connect" + const val EVENT_KEY_INFO_AUTOPILOT_DISTANCE = "event_key_vehicle_start_autopilot_state_distance_15" + fun writeChainLogNet(info: String, changeInfo: String){ writeChainLog(info,changeInfo,true,EVENT_KEY_INFO_Net) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonSubscribeImpl.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonSubscribeImpl.kt index fe21f91cde..1f008ebf20 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonSubscribeImpl.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/network/OchCommonSubscribeImpl.kt @@ -41,6 +41,7 @@ class OchCommonSubscribeImpl( OchChainLogManager.writeChainLogNet("接口:${apiName}", "请求失败:${e.message}") } callback?.onError("$apiName: onError() ${e.message}") + callback?.onError() } override fun onError(message: String, code: Int) { diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/ResourcesUtils.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/ResourcesUtils.kt new file mode 100644 index 0000000000..a0b95be62d --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/ResourcesUtils.kt @@ -0,0 +1,20 @@ +package com.mogo.och.common.module.utils + +import android.graphics.BitmapFactory +import androidx.annotation.ColorRes +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat +import com.mogo.commons.AbsMogoApplication + +object ResourcesUtils { + @JvmStatic + fun getColor(@ColorRes id: Int): Int { + return ContextCompat.getColor(AbsMogoApplication.getApp(),id) + } + + @JvmStatic + fun getString(@StringRes id: Int): String { + return AbsMogoApplication.getApp().getString(id) + } + +} diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_able.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_able.png new file mode 100755 index 0000000000..0266a6cb60 Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_able.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_in_autopilot.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_in_autopilot.png new file mode 100755 index 0000000000..1d08b0f359 Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_in_autopilot.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_press.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_press.png new file mode 100755 index 0000000000..e0370edd24 Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_press.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_pxjs.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_pxjs.png new file mode 100755 index 0000000000..c5bfb8e5ba Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_pxjs.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_start_fail.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_start_fail.png new file mode 100755 index 0000000000..0266a6cb60 Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_start_fail.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_start_success.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_start_success.png new file mode 100755 index 0000000000..3a58c70b24 Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_start_success.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_starting.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_starting.png new file mode 100755 index 0000000000..fe1b9b82b4 Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_starting.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_unable.png b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_unable.png new file mode 100755 index 0000000000..a8d5e1a53c Binary files /dev/null and b/OCH/common/common/src/main/res/autopilot/drawable-nodpi/common_autopilot_unable.png differ diff --git a/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_able_bg.xml b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_able_bg.xml new file mode 100644 index 0000000000..b99a0a1a8f --- /dev/null +++ b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_able_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_in_bg.xml b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_in_bg.xml new file mode 100644 index 0000000000..ffcaaae7f1 --- /dev/null +++ b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_in_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_start_fail_bg.xml b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_start_fail_bg.xml new file mode 100644 index 0000000000..d765512c7c --- /dev/null +++ b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_start_fail_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_start_success_bg.xml b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_start_success_bg.xml new file mode 100644 index 0000000000..c40596b9dc --- /dev/null +++ b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_start_success_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_starting_bg.xml b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_starting_bg.xml new file mode 100644 index 0000000000..b0a24ad7f7 --- /dev/null +++ b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_starting_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_unable_bg.xml b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_unable_bg.xml new file mode 100644 index 0000000000..9bd804af80 --- /dev/null +++ b/OCH/common/common/src/main/res/autopilot/drawable/common_autopilot_unable_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/OCH/facade/script/och.gradle b/OCH/facade/script/och.gradle index 1cf3e062c8..8b4e4d70f7 100644 --- a/OCH/facade/script/och.gradle +++ b/OCH/facade/script/och.gradle @@ -19,8 +19,10 @@ project.dependencies { implementation project.project(':OCH:shuttle:passenger') } else if (isCurrentDriver("M1")) { implementation project.project(':OCH:charter:driver') + implementation project.project(':OCH:shuttle:driver') } else if (isCurrentPassenger("M1")) { implementation project.project(':OCH:charter:passenger') + implementation project.project(':OCH:shuttle:passenger') } else if (isCurrentDriver("B2")) { implementation project.project(':OCH:shuttle:driver') implementation project.project(':OCH:bus:driver') diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt index 0d64c3a8e6..b42c284043 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt @@ -16,10 +16,9 @@ import com.mogo.eagle.core.function.hmi.ui.setting.SopView import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.common.module.biz.lansocket.LoginLanDriverSocket -import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.biz.login.BusinessEnum import com.mogo.och.common.module.biz.login.ILoginCallback @@ -72,7 +71,7 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { if (supportFragmentManager != null) { val back = supportFragmentManager.beginTransaction() back.replace(containerId, fragment, fragment.tag) - back.commit() + back.commitAllowingStateLoss() } } @@ -191,11 +190,13 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { return } } + CallerLogger.d(TAG,"添加statusBar---${commonService}") decorView.addView(statusBarView, statusBarLP) } } private fun removeStatusBar(){ activity?.let { + CallerLogger.d(TAG,"移除statusBar") val decorView = it.window.decorView as? FrameLayout ?: return val statusBar = decorView.findViewWithTag("status_bar") statusBar?.let { diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/fragment/BaseShuttleTabFragment.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/fragment/BaseShuttleTabFragment.java index 4c959d31da..7337247cac 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/fragment/BaseShuttleTabFragment.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/fragment/BaseShuttleTabFragment.java @@ -44,6 +44,7 @@ import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; +import com.mogo.och.common.module.utils.ResourcesUtils; import com.mogo.och.shuttle.R; import com.mogo.och.shuttle.view.BizMapView; import com.mogo.och.data.bean.BusRoutesResult; @@ -161,7 +162,7 @@ public abstract class BaseShuttleTabFragment implements IB @Override public void onBusLinesChange(BusQueryLinesResponse lines) { - runOnUIThread(() -> mView.onBusLinesChange(lines)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onBusLinesChange(lines); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onChangeLineIdSuccess() { OrderModel.getInstance().clearBusStationDatas(); - runOnUIThread(() -> mView.onChangeLineIdSuccess()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onChangeLineIdSuccess(); + } + } + }, UiThreadHandler.MODE.QUEUE); } public void queryBusLines(){ @@ -105,6 +119,8 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh) { - mView.onBusLineTasks(o,position,autoRefresh); + if(mView!=null) { + mView.onBusLineTasks(o,position,autoRefresh); + } } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java index 741f407be4..76a4ceb8a0 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java @@ -131,20 +131,40 @@ public class BusPresenter extends Presenter mCurrentStation = arrivingOrArrivedIndex -1; } CallerLogger.d(M_BUS + "BusOrderModel =", " mCurrentStation =" + mCurrentStation); - if (mView != null) { - runOnUIThread(() -> mView.updateBusTaskStatus(lineName,lineTime, - stationList, arrivingOrArrivedIndex, isArrived)); - } + + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateBusTaskStatus(lineName,lineTime, + stationList, arrivingOrArrivedIndex, isArrived); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void updateEmptyUi() { - runOnUIThread(() -> mView.updateLineEmptyUI()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateLineEmptyUI(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void clearBusStationsMarkers() { - runOnUIThread(() -> mView.clearBusStationsMarkers()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.clearBusStationsMarkers(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -181,16 +201,37 @@ public class BusPresenter extends Presenter return; } // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: OrderModel.getInstance().triggerStartServiceEvent( OrderModel.getInstance().isRestartAutopilot(), true); // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; default: - runOnUIThread(() -> mView.onAutopilotEnableChange(false)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotEnableChange(false); + } + } + }, UiThreadHandler.MODE.QUEUE); break; } } @@ -205,13 +246,20 @@ public class BusPresenter extends Presenter @Override public void startOpenAutopilot() { //非美化模式下启动动画 - runOnUIThread(() -> mView.startAutopilotAnimation()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startAutopilotAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - == CallerAutoPilotStatusListenerManager.INSTANCE.getState()){ + == CallerAutoPilotStatusListenerManager.INSTANCE.getState()&&mView!=null){ mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), - CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); } } @@ -250,18 +298,34 @@ public class BusPresenter extends Presenter BusTrajectoryManager.getInstance().stopTrajReqLoop(); BusTrajectoryManager.getInstance().stopTrajReqLoop(); clearBusStationsMarkers(); - mView.hideSlidePanel(); + if(mView!=null) { + mView.hideSlidePanel(); + } OrderModel.getInstance().closeBeautificationMode(); } } @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void canStartAutopilot(boolean canStart) { - runOnUIThread(() -> mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStart)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStart); + } + } + }, UiThreadHandler.MODE.QUEUE); } } diff --git a/OCH/shuttle/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml b/OCH/shuttle/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml index 21c3611ffe..47ca8c7d4b 100644 --- a/OCH/shuttle/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml +++ b/OCH/shuttle/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml @@ -1,8 +1,8 @@ - + - + diff --git a/OCH/shuttle/driver/src/main/res/layout/shuttle_base_fragment.xml b/OCH/shuttle/driver/src/main/res/layout/shuttle_base_fragment.xml index a275b87a98..6d417a595b 100644 --- a/OCH/shuttle/driver/src/main/res/layout/shuttle_base_fragment.xml +++ b/OCH/shuttle/driver/src/main/res/layout/shuttle_base_fragment.xml @@ -172,9 +172,11 @@ diff --git a/OCH/shuttle/passenger/src/main/assets/m2_map_style.data b/OCH/shuttle/passenger/src/main/assets/m2_map_style.data old mode 100644 new mode 100755 index da9ae1d72d..8e06219090 Binary files a/OCH/shuttle/passenger/src/main/assets/m2_map_style.data and b/OCH/shuttle/passenger/src/main/assets/m2_map_style.data differ diff --git a/OCH/shuttle/passenger/src/main/assets/m2_map_style_extra.data b/OCH/shuttle/passenger/src/main/assets/m2_map_style_extra.data old mode 100644 new mode 100755 index 28fdb4818f..e5a16d46be Binary files a/OCH/shuttle/passenger/src/main/assets/m2_map_style_extra.data and b/OCH/shuttle/passenger/src/main/assets/m2_map_style_extra.data differ diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java index eaeb5f5878..85d30ecf9a 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java @@ -38,14 +38,14 @@ public class BaseBusPassengerPresenter extends Presenter stations, int currentStationIndex, boolean isArrived) { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.updateStationsInfo(stations, currentStationIndex, isArrived); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void showNoTaskView() { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.showNoTaskView(); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void hideNoTaskView() { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.hideNoTaskView(); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void routePlanningToNextStationChanged(long meters, long timeInSecond) { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.updateRoutePlanningToNextStation(meters, timeInSecond); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java index be3349ed89..c868796e43 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java @@ -18,6 +18,9 @@ import com.elegant.utils.UiThreadHandler; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.commons.storage.SharedPrefsMgr; +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; +import com.mogo.map.overlay.IMoGoOverlayManager; +import com.mogo.och.common.module.utils.ResourcesUtils; import com.mogo.och.shuttle.passenger.R; import com.mogo.och.shuttle.passenger.ui.adapter.BusPassengerLineStationsAdapter; import com.mogo.och.shuttle.passenger.constant.BusPassengerConst; @@ -81,8 +84,8 @@ public class BusPassengerRouteFragment extends mSpeedTv = findViewById(R.id.bus_p_speed_tv); mSpeedTv.setVertrial(true); - mSpeedTv.setmColorList(new int[]{getResources().getColor(R.color.shuttle_p_jl_speed_color_start), - getResources().getColor(R.color.shuttle_p_jl_speed_color_end)}); + mSpeedTv.setmColorList(new int[]{ResourcesUtils.getColor(R.color.shuttle_p_jl_speed_color_start), + ResourcesUtils.getColor(R.color.shuttle_p_jl_speed_color_end)}); mNoLineInfoView =findViewById(R.id.bus_p_no_order_data_view); emptyTv = findViewById(R.id.no_order_data_tv); @@ -131,6 +134,19 @@ public class BusPassengerRouteFragment extends } } + @Override + public void onDestroyView() { + if (mPresenter != null) { + mPresenter.onDestroy(this); + } + IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); + if(overlayManager!=null) { + overlayManager.removeAllLines(); + overlayManager.removeAllPoints(); + } + super.onDestroyView(); + } + @Override public void onDestroy() { super.onDestroy(); @@ -280,26 +296,26 @@ public class BusPassengerRouteFragment extends public void updateArrivedStation(String station,int currentIndex,boolean isArrived){ if (null == station){ mCurrentArriveStation.setText("----"); - mCurrentArriveStationTitle.setText(getResources().getString(R.string.shuttle_p_jl_cur_station_title)); - mCurrentArriveTip.setText(getResources().getString(R.string.shuttle_p_jl_cur_station_arrived_tip)); + mCurrentArriveStationTitle.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_station_title)); + mCurrentArriveTip.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_station_arrived_tip)); mCurrentArriveTip.setBackgroundResource(R.drawable.shuttle_p_jl_cur_station_arrived_bg); handleArrivingSpeakIconDrawable(); }else { mCurrentArriveStation.setText(station); if (currentIndex == 0){ - mCurrentArriveStationTitle.setText(getResources().getString(R.string.shuttle_p_jl_cur_station_title)); - mCurrentArriveTip.setText(getResources().getString(R.string.shuttle_p_jl_cur_station_arrived_tip)); + mCurrentArriveStationTitle.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_station_title)); + mCurrentArriveTip.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_station_arrived_tip)); mCurrentArriveTip.setBackgroundResource(R.drawable.shuttle_p_jl_cur_station_arrived_bg); handleArrivingSpeakIconDrawable(); return; } if (isArrived){ - mCurrentArriveStationTitle.setText(getResources().getString(R.string.shuttle_p_jl_cur_station_title)); - mCurrentArriveTip.setText(getResources().getString(R.string.shuttle_p_jl_cur_station_arrived_tip)); + mCurrentArriveStationTitle.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_station_title)); + mCurrentArriveTip.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_station_arrived_tip)); mCurrentArriveTip.setBackgroundResource(R.drawable.shuttle_p_jl_cur_station_arrived_bg); handleArrivedSpeakIconDrawable(); }else { - mCurrentArriveStationTitle.setText(getResources().getString(R.string.shuttle_p_jl_cur_next_station_title)); + mCurrentArriveStationTitle.setText(ResourcesUtils.getString(R.string.shuttle_p_jl_cur_next_station_title)); mCurrentArriveTip.setBackgroundResource(R.drawable.shuttle_p_jl_cur_station_un_arrived_bg); handleArrivingSpeakIconDrawable(); } diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2DrivingInfoFragment.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2DrivingInfoFragment.kt index 6fdd0e0cc2..7f36c761cc 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2DrivingInfoFragment.kt +++ b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2DrivingInfoFragment.kt @@ -126,6 +126,9 @@ class PM2DrivingInfoFragment : override fun onDestroyView() { overMapView?.onDestroy() + if (mPresenter != null) { + mPresenter?.onDestroy(this) + } super.onDestroyView() } diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2HPMapFragment.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2HPMapFragment.kt index a404d073b5..e278d6c4ae 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2HPMapFragment.kt +++ b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2HPMapFragment.kt @@ -2,7 +2,7 @@ package com.mogo.och.shuttle.passenger.ui import android.os.Bundle import com.mogo.commons.mvp.MvpFragment -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverlayManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.map.overlay.core.Level import com.mogo.map.overlay.point.Point @@ -64,6 +64,10 @@ class PM2HPMapFragment : override fun onDestroyView() { mapBizView.onDestroy() + CallerMapUIServiceManager.getOverlayManager()?.let { + it.removeAllLines() + it.removeAllPoints() + } super.onDestroyView() } @@ -106,7 +110,7 @@ class PM2HPMapFragment : builder.rotate(it.angle.toFloat()) } } - val overlayManager = getOverlayManager() + val overlayManager = CallerMapUIServiceManager.getOverlayManager() overlayManager?.showOrUpdatePoint(builder.build()) } OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable) @@ -118,7 +122,7 @@ class PM2HPMapFragment : //开启线程移除起终点marker设置 val removeMapMarkerRunnable = Runnable { d("RemoveMapMaker=" + Thread.currentThread().name, uuid) - val overlayManager = getOverlayManager() + val overlayManager = CallerMapUIServiceManager.getOverlayManager() overlayManager?.removeAllPointsInOwner(TYPE_MARKER_M2_LINE) } OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable) diff --git a/OCH/sweeper/driver/src/main/assets/map_style.data b/OCH/sweeper/driver/src/main/assets/map_style.data index fbd09768a2..b200669659 100644 Binary files a/OCH/sweeper/driver/src/main/assets/map_style.data and b/OCH/sweeper/driver/src/main/assets/map_style.data differ diff --git a/OCH/sweeper/driver/src/main/assets/map_style_extra.data b/OCH/sweeper/driver/src/main/assets/map_style_extra.data index 2fc9d80818..7aa8fa7b45 100644 Binary files a/OCH/sweeper/driver/src/main/assets/map_style_extra.data and b/OCH/sweeper/driver/src/main/assets/map_style_extra.data differ diff --git a/OCH/taxi/driver/src/main/assets/map_style.data b/OCH/taxi/driver/src/main/assets/map_style.data index fbd09768a2..b200669659 100644 Binary files a/OCH/taxi/driver/src/main/assets/map_style.data and b/OCH/taxi/driver/src/main/assets/map_style.data differ diff --git a/OCH/taxi/driver/src/main/assets/map_style_extra.data b/OCH/taxi/driver/src/main/assets/map_style_extra.data index 2fc9d80818..7aa8fa7b45 100644 Binary files a/OCH/taxi/driver/src/main/assets/map_style_extra.data and b/OCH/taxi/driver/src/main/assets/map_style_extra.data differ diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 28812619e5..70908be27e 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -857,7 +857,7 @@ public class TaxiModel { CallerLogger.d(M_TAXI + TAG, "setIPCDemoMode:false"); CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false); if (mADASStatusCallback != null) { - mADASStatusCallback.updateAutopilotStatus(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + mADASStatusCallback.updateAutopilotStatus(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } @@ -925,7 +925,7 @@ public class TaxiModel { return; } - //根据开关和后台是否发布轨迹启动自驾 + //1、判断轨迹url是否可用 if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrl) && TextUtils.isEmpty(mCurrentOCHOrder.csvFileUrlDPQP) @@ -937,18 +937,12 @@ public class TaxiModel { + "busRoutesResult.csvFileUrlDPQP = " + mCurrentOCHOrder.csvFileUrlDPQP); return; } - - if (!CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(true)) { + //2、6个条件判断 + if (!CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(true, 0)) { return; } - if(CallerAutoPilotStatusListenerManager.INSTANCE.getState() - == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ - ToastUtils.showShort("自驾中、请勿重复启动"); - return; - } - - + //3、距离轨迹15m计算 String resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot(mCurrentOCHOrder.lineId); if(TrajectoryAndDistanceManager.errorTypeNoneLineId.equals(resion)){ setStation(); @@ -961,7 +955,7 @@ public class TaxiModel { CallerLogger.e(M_TAXI + TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand); - + //4、ssm 给出数据 if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试"); @@ -970,6 +964,11 @@ public class TaxiModel { OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason()); return; } + if(CallerAutoPilotStatusListenerManager.INSTANCE.getState() + == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + ToastUtils.showShort("自驾中、请勿重复启动"); + return; + } //点击开始自动驾驶按钮订单状态去流转, 不再与自动驾驶是否启动成功挂钩 if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.getCode()) { @@ -1227,7 +1226,7 @@ public class TaxiModel { public void onAutopilotStatusResponse(int state) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotRunning(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + mADASStatusCallback.onAutopilotRunning(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } if (mCurrentOCHOrder != null && TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == mCurrentOCHOrder.orderStatus) { @@ -1250,7 +1249,7 @@ public class TaxiModel { return; } if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotEnable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + mADASStatusCallback.onAutopilotEnable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { if (FunctionBuildConfig.isDemoMode @@ -1261,7 +1260,7 @@ public class TaxiModel { return; } if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotDisable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + mADASStatusCallback.onAutopilotDisable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { if (FunctionBuildConfig.isDemoMode) { @@ -1271,13 +1270,13 @@ public class TaxiModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 } else { //美化模式下没订单,显示人工驾驶 if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotDisable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + mADASStatusCallback.onAutopilotDisable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } return; } if (mADASStatusCallback != null) { - mADASStatusCallback.onManMachineCoDriving(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + mADASStatusCallback.onManMachineCoDriving(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } } diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java index f97b97d72a..7ee705bcbf 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java @@ -42,12 +42,26 @@ public class TaxiOperationalPresenter extends Presenter mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onOrdersListPageRefresh(List ordersList) { - runOnUIThread(() -> mView.onOrdersListPageRefresh(ordersList)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onOrdersListPageRefresh(ordersList); + } + } + }, UiThreadHandler.MODE.QUEUE); } private void runOnUIThread( Runnable executor ) { diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 977948a0db..dd8da0424f 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -189,37 +189,79 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onAutopilotEnable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onAutopilotDisable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onAutopilotRunning(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onManMachineCoDriving(boolean canStartAuto) { - runOnUIThread(() -> mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void updateAutopilotStatus(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -229,7 +271,14 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onOrdersWaitServiceChanged(@NonNull @NotNull List waitServiceList) { - runOnUIThread(() -> mView.onOrdersWaitServiceChanged(waitServiceList)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onOrdersWaitServiceChanged(waitServiceList); + } + } + }, UiThreadHandler.MODE.QUEUE); } @RequiresApi(api = Build.VERSION_CODES.P) @@ -244,10 +293,15 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus) { TaxiModel.getInstance().startDynamicCalculateRouteInfo(); TaxiModel.getInstance().setStation(); - runOnUIThread(() -> { - mView.updateCtvAutopilotStatusTag(true); - CallerOrderListenerManager.INSTANCE.invokeOrderStatus(true); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateCtvAutopilotStatusTag(true); + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(true); + } + } + }, UiThreadHandler.MODE.QUEUE); } @@ -257,36 +311,69 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().startOrStopCalculateRouteInfo(false); TaxiModel.getInstance().cleanLineMarker(); TaxiModel.getInstance().cleanStation(); - runOnUIThread(() -> { - /** 2023.12.18 1.去除"自驾/安全"模式选择,默认自驾模式且无需点击; - * 2.server去除订单流转对"安全确认"的限制(读写接口默认反馈ok,但"开启自动驾驶成功"不再限制) - */ - mView.updateCtvAutopilotStatusTag(false); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + /** 2023.12.18 1.去除"自驾/安全"模式选择,默认自驾模式且无需点击; + * 2.server去除订单流转对"安全确认"的限制(读写接口默认反馈ok,但"开启自动驾驶成功"不再限制) + */ + mView.updateCtvAutopilotStatusTag(false); - if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus) { - CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false); + if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus) { + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false); + } + } } - }); + }, UiThreadHandler.MODE.QUEUE); } if (TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus) { VoiceNotice.showNotice("乘客已取消行程"); } - runOnUIThread(() -> mView.updateCurrentOrderStatusChanged(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateCurrentOrderStatusChanged(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onCurrentOrderCancelDone() { - runOnUIThread(() -> mView.onCurrentOrderCancelDone()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCurrentOrderCancelDone(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onOrderCancelDone(String orderNo) { - runOnUIThread(() -> mView.onOrderCancelDone(orderNo)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onOrderCancelDone(orderNo); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onCurrentOrderRouteInfoGot(OrderQueryRouteInfoRespBean.Result routeInfo) { - runOnUIThread(() -> mView.onCurrentOrderRouteInfoGot(routeInfo)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCurrentOrderRouteInfoGot(routeInfo); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -295,44 +382,98 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) { - runOnUIThread(() -> mView.onCurrentOrderDistToEndChanged(meters, timeInSecond)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCurrentOrderDistToEndChanged(meters, timeInSecond); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onNewBookingOrderGot(OrderQueryRespBean.Result order) { - runOnUIThread(() -> mView.onNewBookingOrderGot(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onNewBookingOrderGot(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onGrabOrderExecuteDone() { - runOnUIThread(() -> mView.onGrabOrderExecuteDone()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onGrabOrderExecuteDone(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onGrabOrderSuccess(OrderQueryRespBean.Result order) { - runOnUIThread(() -> mView.onGrabOrderSuccess(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onGrabOrderSuccess(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onGrabOrderFailed(OrderQueryRespBean.Result order) { - runOnUIThread(() -> mView.onGrabOrderFailed(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onGrabOrderFailed(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onDriverHasCheckedPilotCondition() { - runOnUIThread(() -> mView.onCheckPilotConditionSafe()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCheckPilotConditionSafe(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onNaviToEnd(boolean isAmap, boolean isShow) { - runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onNaviToEnd(isAmap, isShow); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void startOpenAutopilot() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -347,15 +488,25 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS role = TaxiConst.TEST_USER; } String finalRole = role; - runOnUIThread(() -> { - mView.setRole(finalRole); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.setRole(finalRole); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum) { - runOnUIThread(() -> { - mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); + } + } + }, UiThreadHandler.MODE.QUEUE); } } diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index f22c9a5ee1..4e2a292246 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -43,6 +43,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; +import com.mogo.och.common.module.utils.ResourcesUtils; import com.mogo.och.taxi.R; @@ -161,7 +162,7 @@ public abstract class BaseTaxiTabFragment @@ -336,31 +337,31 @@ public abstract class BaseTaxiTabFragment - - - + + + \ No newline at end of file diff --git a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml index bc77186cfe..3eff9cffee 100644 --- a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml @@ -35,6 +35,8 @@ android:layout_height="@dimen/dp_180" android:layout_marginStart="@dimen/dp_10" android:layout_marginTop="-31dp" + android:paddingTop="@dimen/dp_27" + android:paddingBottom="@dimen/dp_32" android:gravity="center" android:background="@drawable/taxi_autopilot_bg_selector" app:layout_constraintLeft_toLeftOf="parent" diff --git a/OCH/taxi/driver/src/main/res/layout/taxi_being_order.xml b/OCH/taxi/driver/src/main/res/layout/taxi_being_order.xml index f847e6b278..76cd62f84a 100644 --- a/OCH/taxi/driver/src/main/res/layout/taxi_being_order.xml +++ b/OCH/taxi/driver/src/main/res/layout/taxi_being_order.xml @@ -94,6 +94,7 @@ android:id="@+id/module_och_taxi_order_distance_anchor_2" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="264dp" android:inputType="textMultiLine" android:lineSpacingExtra="16dp" android:text="距离 - - 公里,用时 - - 分" @@ -145,8 +146,7 @@ app:layout_constraintTop_toBottomOf="@+id/taxi_passenger_phone" app:layout_constraintLeft_toLeftOf="@+id/taxi_passenger_num" app:layout_constraintRight_toRightOf="parent" - android:layout_marginTop="@dimen/dp_15" - android:background="@color/taxi_passenger_line_color"/> + android:layout_marginTop="@dimen/dp_15" /> > : MvpFragment(), private var personalDialogFragment: WeakReference? = null private var routingVerifyFragment: WeakReference? = null - private var moFanglistener: IMogoStatusChangedListener = object :IMogoStatusChangedListener{ + private var moFanglistener: IMogoStatusChangedListener? = object :IMogoStatusChangedListener{ override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) { if (StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE == descriptor) { UiThreadHandler.post { @@ -96,6 +97,7 @@ class TaxiFragment : BaseTaxiTabFragment(), } override fun onActivityCreated(savedInstanceState: Bundle?) { + e(SceneConstant.M_TAXI + TAG, "onActivityCreated") super.onActivityCreated(savedInstanceState) } @@ -104,6 +106,7 @@ class TaxiFragment : BaseTaxiTabFragment(), container: ViewGroup?, savedInstanceState: Bundle? ): View? { + e(SceneConstant.M_TAXI + TAG, "onCreateView") EventBus.getDefault().register(this) return super.onCreateView(inflater, container, savedInstanceState) } @@ -224,12 +227,31 @@ class TaxiFragment : BaseTaxiTabFragment(), } override fun onDestroyView() { + e(SceneConstant.M_TAXI + TAG, "onDestroyView") MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, StatusDescriptor.TAXI_UNMANED_DRIVER_LINE_ROUTING_VERIFY_MODE,moFanglistener) + if (mPresenter != null) { + mPresenter?.onDestroy(this) + } + CallerMapUIServiceManager.getOverlayManager()?.let { + it.removeAllLines() + it.removeAllPoints() + } super.onDestroyView() EventBus.getDefault().unregister(this) } + override fun onDestroy() { + moFanglistener = null + super.onDestroy() + e(SceneConstant.M_TAXI + TAG, "onDestroy") + } + + override fun onDetach() { + super.onDetach() + e(SceneConstant.M_TAXI + TAG, "onDetach") + } + fun setRole(finalRole:String){ if (!TextUtils.isEmpty(finalRole)) { taxi_driver_role_tv.visibility = View.VISIBLE diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java index b38a1cb3d9..3f0c3169f4 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java @@ -69,17 +69,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS LoginStatusManager.INSTANCE.removeListener(TAG); } - private void runOnUIThread(Runnable executor) { - if (executor == null) { - return; - } - if (Looper.myLooper() != Looper.getMainLooper()) { - UiThreadHandler.post(executor); - } else { - executor.run(); - } - } - /** * 开启自动驾驶 自驾模式 */ @@ -111,95 +100,179 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onAutopilotEnable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onAutopilotDisable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onAutopilotRunning(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onParallelDrivingStatus(boolean canStartAuto) { - runOnUIThread(() -> mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void updateAutopilotStatus(boolean canStartAuto) { - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + if(mView!=null) { + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStartAuto); + } } @Override public void onNaviToEnd(boolean isAmap, boolean isShow) { - runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + onNaviToEnd(isAmap, isShow); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onVRModeChanged(boolean isVRMode) { - runOnUIThread(() -> mView.switchVRFlatMode(isVRMode)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.switchVRFlatMode(isVRMode); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onCarLocationChanged(MogoLocation location) { -// if (null != location) { -// runOnUIThread(() -> { -// mView.updateSpeedView((float) location.getGnssSpeed()); -// }); -// } + } @Override public void startOpenAutopilot() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void startOpenAutopilotNonManual() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - mView.showStartAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + mView.showStartAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void stopOpenAutopilotNonManual(boolean canStartAuto) { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(false); - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); - mView.stopAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(false); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + mView.stopAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void pauseOpenAutopilotNonManual(boolean canStartAuto) { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(false); - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); - mView.pauseAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(false); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + mView.pauseAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void resumeOpenAutopilotNonManual() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - mView.resumeAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + mView.resumeAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override @@ -212,12 +285,18 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS role = TaxiUnmannedConst.TEST_USER; } String finalRole = role; - runOnUIThread(() -> { - mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); - mView.setRole(finalRole); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); + mView.setRole(finalRole); + } + } + }, UiThreadHandler.MODE.QUEUE); - if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()) { + + if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()&&mView!=null) { mView.showDebugPanel(); } @@ -226,9 +305,14 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum) { - runOnUIThread(() -> { - mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); + } + } + }, UiThreadHandler.MODE.QUEUE); } public void stopAutoStartAutopilot() { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt index d3768cf887..65090b8871 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/amap/TaxiAmapNaviFragment.kt @@ -1,12 +1,10 @@ package com.mogo.och.taxi.ui.navi.amap import android.os.Bundle -import com.amap.api.navi.AMapNaviViewListener import com.mogo.commons.mvp.BaseFragment -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.och.common.module.map.AmapNaviToDestinationModel -import com.mogo.och.common.module.map.ICommonNaviChangedCallback import com.mogo.och.taxi.R import kotlinx.android.synthetic.main.taxi_amap_navi_view.navi_view @@ -15,6 +13,8 @@ import kotlinx.android.synthetic.main.taxi_amap_navi_view.navi_view * @date: 2023/7/24 */ class TaxiAmapNaviFragment : BaseFragment(){ + + private val TAG = "TaxiAmapNaviFragment" companion object { fun newInstance(): TaxiAmapNaviFragment { val args = Bundle() @@ -36,25 +36,34 @@ class TaxiAmapNaviFragment : BaseFragment(){ } override fun initViews(savedInstanceState: Bundle?) { + CallerLogger.e(SceneConstant.M_TAXI + TAG, "initViews") super.initViews(savedInstanceState) if (navi_view != null) navi_view.onCreate(savedInstanceState) } override fun onResume() { + CallerLogger.e(SceneConstant.M_TAXI + TAG, "onResume") super.onResume() if (navi_view != null) navi_view.onResume() } override fun onPause() { + CallerLogger.e(SceneConstant.M_TAXI + TAG, "onPause") super.onPause() if (navi_view != null) navi_view.onPause() } - override fun onDestroy() { - super.onDestroy() + override fun onDestroyView() { + CallerLogger.e(SceneConstant.M_TAXI + TAG, "onDestroyView") AmapNaviToDestinationModel.getInstance(context).setVoiceIsMute(false) if (navi_view != null) { navi_view.onDestroy() } + super.onDestroyView() + } + + override fun onDestroy() { + super.onDestroy() + } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java index 6a5c1f0adc..251a133779 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java @@ -62,11 +62,20 @@ public class RoutingNaviPresenter extends Presenter imp @Override public void setLineMarker(LatLng startStation, LatLng endStation) { - runOnUIThread(() -> mView.setLineMarker(startStation, endStation)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.setLineMarker(startStation, endStation); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void routeResult(List routeArrivied, List routeArriving, MogoLocation location) { - mView.routeResult(routeArrivied, routeArriving, location); + if (mView != null) { + mView.routeResult(routeArrivied, routeArriving, location); + } } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiRoutingNaviFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiRoutingNaviFragment.kt index 9925654a1c..aaa4bf3927 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiRoutingNaviFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiRoutingNaviFragment.kt @@ -4,6 +4,8 @@ import android.os.Bundle import com.amap.api.maps.model.LatLng import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.data.map.MogoLocation +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.R @@ -24,26 +26,36 @@ class TaxiRoutingNaviFragment : MvpFragment(R.id.rotting_navi_view) mMapDirectionView!!.onCreateView(savedInstanceState) } override fun onResume() { + CallerLogger.e(SceneConstant.M_TAXI + TAG, "onResume") super.onResume() mMapDirectionView!!.onResume() } override fun onPause() { + CallerLogger.e(SceneConstant.M_TAXI + TAG, "onPause") super.onPause() mMapDirectionView!!.onPause() } - override fun onDestroy() { - super.onDestroy() + override fun onDestroyView() { if (mMapDirectionView != null) { mMapDirectionView!!.onDestroy() } + CallerLogger.e(SceneConstant.M_TAXI + TAG, "onDestroyView") + super.onDestroyView() + + } + + override fun onDestroy() { + super.onDestroy() + } override fun createPresenter(): RoutingNaviPresenter { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index ab2761e5c7..da6b358a7b 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -35,6 +35,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils +import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager @@ -1219,7 +1220,7 @@ object TaxiTaskModel { return } - //根据开关和后台是否发布轨迹启动自驾 + //1、判断轨迹url是否可用 根据开关和后台是否发布轨迹启动自驾 if (FunctionBuildConfig.isPassStartAutopilotCommand && mCurrentTaskTrajectory != null && TextUtils.isEmpty(mCurrentTaskTrajectory!!.csvFileUrl) && TextUtils.isEmpty(mCurrentTaskTrajectory!!.csvFileUrlDPQP) @@ -1238,9 +1239,19 @@ object TaxiTaskModel { TAG, "isPassStartAutopilotCommand = " + FunctionBuildConfig.isPassStartAutopilotCommand ) + //2、6个条件判断 if (!CallerAutoPilotControlManager.isCanStartAutopilot(true)) { return } + // 3、距离轨迹15m计算 + mCurrentTaskWithOrder?.let { + val resion = TrajectoryAndDistanceManager.canStartAutopilot(it.lineId) + if(!StringUtils.isEmpty(resion)){ + ToastUtils.showShort(resion); + return; + } + } + // 4、ssm 给出数据 if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { ToastUtils.showLong( OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/routing_fragment.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/routing_fragment.xml index fb9ef5ed94..1b3da3fcee 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/routing_fragment.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/routing_fragment.xml @@ -2,9 +2,13 @@ @@ -21,7 +25,7 @@ android:id="@+id/taskTitleTv" android:layout_width="@dimen/dp_420" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_45" + android:layout_marginTop="@dimen/dp_35" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" @@ -31,17 +35,6 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - Unit) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt index f34ccd15df..137a5b841d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/mofang/MoFangCommandExecutor.kt @@ -245,10 +245,10 @@ internal class MoFangCommandExecutor { linkedLog?.record(mapOf("执行:${System.currentTimeMillis()}" to "$message, $json")) Log.d(TAG, "--- 启动自驾 ----入参:$json") //清扫车有FSM模块,魔方启动自驾时需要将Source修改为魔方,以便telamatics做区分并在转发时增加flag标记 - if (CallerAutoPilotControlManager.isCanStartAutopilot(true)) { - if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)) { - CallerAutoPilotControlManager.startAutoPilotByMoFang(parameters) - } else{ + if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)) { + CallerAutoPilotControlManager.startAutoPilotByMoFang(parameters) + } else { + if (CallerAutoPilotControlManager.isCanStartAutopilot(true, -1)) { CallerAutoPilotControlManager.startAutoPilot(parameters) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt index 194079afb4..c331fb3b2b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt @@ -184,23 +184,42 @@ object StatusManager { listeners.remove(tag) } - fun getExceptionStatusBeforeLaunchAutopilot(): Int { + fun getExceptionStatusBeforeLaunchAutopilot(source: Int): Int { + if (!hasInit) { + return 0 + } var ret = 0 model.status.value?.second?.filter { it is IAutopilotPreLaunchStatus }?.takeIf { it.isNotEmpty() }?.also { l -> - l.filter { it.isException() }.takeIf { it.isNotEmpty() }?.also { ll -> - val result = runCatching { - MogoAnalyticUtils.track( - "vehicle_state_exp", - HashMap().also { itx -> - itx["data"] = ll.joinToString(",") { it.toString() } - }) - } - if (result.isFailure) { - Logger.w(TAG, "error => ${result.exceptionOrNull()?.stackTraceToString() }") + l.filter { it.isException() }.also { ll -> + val time = System.currentTimeMillis() + ThreadUtils.getIoPool().execute { + val result = runCatching { + MogoAnalyticUtils.track( + "vehicle_start_autopilot_state_check", + HashMap().also { itx -> + itx["time"] = time + itx["src"] = source + itx["desc"] = ll.joinToString(",") { item -> + when (item) { + is SteerStatus -> "方向盘" + is AcceleratorStatus -> "油门" + is BrakeStatus -> "刹车" + is DoubleFlashStatus -> "双闪" + is GearStatus -> "档位" + is RouteDownloadStatus -> if (item.state == RouteStart) "轨迹下载中" else "轨迹下载失败" + else -> "其它" + } + } + itx["data"] = GsonUtils.toJson(ll) + }) + } + if (result.isFailure) { + Logger.w(TAG, "error => ${result.exceptionOrNull()?.stackTraceToString() }") + } } } }?.forEachIndexed { index, status -> @@ -221,6 +240,10 @@ object StatusManager { return ret } + fun hasInit(): Boolean { + return hasInit + } + interface IStatusListener { fun onStatusChanged(data: List, hasException: Boolean) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt index da3bd8b718..aaea308be6 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt @@ -297,7 +297,7 @@ interface IAutopilotPreLaunchStatus /** * 速度 */ -data class SpeedStatus(val speed: Float, var acc: Float): Status(), IAutopilotPreLaunchStatus { +data class SpeedStatus(val speed: Int): Status(), IAutopilotPreLaunchStatus { override fun isException(): Boolean { return false @@ -306,22 +306,13 @@ data class SpeedStatus(val speed: Float, var acc: Float): Status(), IAutopilotPr override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false - other as SpeedStatus - - if (speed != other.speed) return false - if (acc != other.acc) return false - - return true + return speed == other.speed } override fun hashCode(): Int { - var result = speed.hashCode() - result = 31 * result + acc.hashCode() - return result + return speed.hashCode() } - - } /** @@ -337,12 +328,9 @@ data class SteerStatus(val angle: Float, var isError: Boolean = false): Status() override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false - other as SteerStatus - if (angle != other.angle) return false if (isError != other.isError) return false - return true } @@ -362,7 +350,7 @@ data class SteerStatus(val angle: Float, var isError: Boolean = false): Status() /** * 油门 */ -data class AcceleratorStatus(val angle: Float, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus { +data class AcceleratorStatus(val angle: Int, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus { override fun isException(): Boolean { return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING @@ -394,7 +382,7 @@ data class AcceleratorStatus(val angle: Float, var isError: Boolean = false): St /** * 刹车 */ -data class BrakeStatus(val angle: Float, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus { +data class BrakeStatus(val angle: Int, var isError: Boolean = false): Status(), IAutopilotPreLaunchStatus { override fun isException(): Boolean { return isError && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/AcceleratorImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/AcceleratorImpl.kt index 2941fe6ae7..2fb005b6bb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/AcceleratorImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/AcceleratorImpl.kt @@ -19,7 +19,7 @@ internal class AcceleratorImpl(ctx: Context): IFlow(ctx), IMo } @Volatile - private var last: Float? = null + private var last: Int? = null @Volatile private var isError: Boolean = false @@ -40,9 +40,10 @@ internal class AcceleratorImpl(ctx: Context): IFlow(ctx), IMo override fun onAutopilotThrottle(throttle: Float) { super.onAutopilotThrottle(throttle) - if (last != throttle) { - send(AcceleratorStatus(throttle, isError).also { it.rawData = extra }) - last = throttle + val current = throttle.toInt() + if (last != current) { + send(AcceleratorStatus(current, isError).also { it.rawData = extra }) + last = current } } @@ -50,17 +51,17 @@ internal class AcceleratorImpl(ctx: Context): IFlow(ctx), IMo if (!isAutopilotAbility) { val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_THROTTLE }?.also { itx -> isError = true - send(AcceleratorStatus(last ?: 0.0f, true).also { extra = itx; it.rawData = itx }) + send(AcceleratorStatus(last ?: 0, true).also { extra = itx; it.rawData = itx }) } if (target == null) { isError = false extra = null - send(AcceleratorStatus(last ?: 0.0f, false)) + send(AcceleratorStatus(last ?: 0, false)) } } else { isError = false extra = null - send(AcceleratorStatus(last ?: 0.0f, false)) + send(AcceleratorStatus(last ?: 0, false)) } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/BrakeImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/BrakeImpl.kt index 9c20705ec5..3a25d274f4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/BrakeImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/BrakeImpl.kt @@ -5,15 +5,11 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisBrakeStateListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisBrakeStateListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.zhjt.mogo.adas.data.bean.UnableLaunchData import com.zhjt.mogo.adas.data.bean.UnableLaunchReason import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.UnableType.CHASSIS_BRAKE -import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.UnableType.CHASSIS_THROTTLE -import com.zhjt.mogo_core_function_devatools.status.entity.AcceleratorStatus import com.zhjt.mogo_core_function_devatools.status.entity.BrakeStatus import com.zhjt.mogo_core_function_devatools.status.flow.IFlow -import com.zhjt.mogo_core_function_devatools.status.flow.autopilot.AcceleratorImpl.Companion internal class BrakeImpl(ctx: Context): IFlow(ctx), IMoGoChassisBrakeStateListener, IMoGoAutopilotActionsListener { @@ -22,7 +18,7 @@ internal class BrakeImpl(ctx: Context): IFlow(ctx), IMoGoChassisBra } @Volatile - private var last: Float = 0.0f + private var last: Int = 0 @Volatile private var isError: Boolean = false @@ -43,9 +39,10 @@ internal class BrakeImpl(ctx: Context): IFlow(ctx), IMoGoChassisBra override fun onAutopilotBrake(brake: Float) { super.onAutopilotBrake(brake) - if (last != brake) { - send(BrakeStatus(brake, isError).also { it.rawData = extra }) - last = brake + val current = brake.toInt() + if (last != current) { + send(BrakeStatus(current, isError).also { it.rawData = extra }) + last = current } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/SpeedImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/SpeedImpl.kt index aac970108a..3de0ae57f6 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/SpeedImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/autopilot/SpeedImpl.kt @@ -2,19 +2,11 @@ package com.zhjt.mogo_core_function_devatools.status.flow.autopilot import android.content.Context import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisThrottleStateListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerChassisThrottleStateListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.Logger -import com.zhjt.mogo.adas.data.bean.UnableLaunchData -import com.zhjt.mogo.adas.data.bean.UnableLaunchReason -import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.UnableType.CHASSIS_THROTTLE -import com.zhjt.mogo_core_function_devatools.status.entity.AcceleratorStatus import com.zhjt.mogo_core_function_devatools.status.entity.SpeedStatus import com.zhjt.mogo_core_function_devatools.status.flow.IFlow +import kotlin.math.abs internal class SpeedImpl(ctx: Context): IFlow(ctx), IMoGoChassisLocationGCJ02Listener { @@ -24,10 +16,7 @@ internal class SpeedImpl(ctx: Context): IFlow(ctx), IMoGoChassisLoc } @Volatile - private var lastSpeed: Float? = null - - @Volatile - private var lastAcc: Float? = null + private var lastSpeed: Int? = null override fun onCreate() { CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 5, this) @@ -40,16 +29,13 @@ internal class SpeedImpl(ctx: Context): IFlow(ctx), IMoGoChassisLoc override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { var isChanged = false - if (lastSpeed != mogoLocation?.gnssSpeed) { + val speed = (abs(mogoLocation?.gnssSpeed ?: 0f) * 3.6f).toInt() + if (lastSpeed != speed) { isChanged = true - lastSpeed = mogoLocation?.gnssSpeed - } - if (!isChanged && lastAcc != mogoLocation?.acceleration) { - isChanged = true - lastAcc = mogoLocation?.acceleration + lastSpeed = speed } if (isChanged) { - send(SpeedStatus(mogoLocation?.gnssSpeed ?: 0f, mogoLocation?.acceleration ?: 0f)) + send(SpeedStatus(speed)) } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt index 22e35db332..15a5e480ca 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt @@ -20,13 +20,13 @@ internal class StatusModel : ViewModel() { it += RTKStatus("", -1) // it += NetStatus(false) // it += GpsStatus(enabled = false, isGranted = false) - it += SteerStatus(0.0f) - it += AcceleratorStatus(0.0f) - it += BrakeStatus(0.0f) + it += SteerStatus(0f) + it += AcceleratorStatus(0) + it += BrakeStatus(0) it += DoubleFlashStatus(0) it += GearStatus(0) it += RouteDownloadStatus() - it += SpeedStatus(0f, 0f) + it += SpeedStatus(0) }) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/AutoPilotLaunchBeforeView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/AutoPilotLaunchBeforeView.kt index 61e8c028de..7a95670461 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/AutoPilotLaunchBeforeView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/AutoPilotLaunchBeforeView.kt @@ -1,5 +1,6 @@ package com.zhjt.mogo_core_function_devatools.status.ui +import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater @@ -63,6 +64,7 @@ class AutoPilotLaunchBeforeView: LinearLayout, IStatusListener { StatusManager.removeListener(TAG) } + @SuppressLint("SetTextI18n") override fun onStatusChanged(data: List, hasException: Boolean) { data.filter { it is IAutopilotPreLaunchStatus }.forEach { status -> val isError = status.isException() && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING @@ -89,11 +91,11 @@ class AutoPilotLaunchBeforeView: LinearLayout, IStatusListener { } is AcceleratorStatus -> { iv_brake_or_accelerator?.isSelected = isError + tv_brake_or_accelerator?.text = "${abs(status.angle)}%" } is BrakeStatus -> { - val angle = status.angle iv_brake_or_accelerator?.isSelected = isError - tv_brake_or_accelerator?.text = "a:-${angle.toInt()}" + tv_brake_or_accelerator?.text = "${-abs(status.angle)}%" } is DoubleFlashStatus -> { iv_double_flash?.isSelected = isError @@ -102,8 +104,7 @@ class AutoPilotLaunchBeforeView: LinearLayout, IStatusListener { iv_steer?.isSelected = isError } is SpeedStatus -> { - speed?.text = "${(abs(status.speed) * 3.6f).toInt()}" - tv_brake_or_accelerator?.text = String.format("%.1f", status.acc) + speed?.text = "${status.speed}" } else -> { Logger.d(TAG, "other state: $status") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_autopilot_launch_before.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_autopilot_launch_before.xml index 0cb89c7cfe..7db86d35bf 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_autopilot_launch_before.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_autopilot_launch_before.xml @@ -134,14 +134,15 @@ + tools:text="-100%" + android:text="0%"/> \ 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/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index 6e31c9d66c..64583ba3da 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -63,7 +63,6 @@ class StatusBarView @JvmOverloads constructor( updateStatusBarLeftView(true, FUNC_MODE_DEMO, DemoModeView(this.context)) updateStatusBarLeftView(true, FUNC_MODE_RAIN, RainModeView(this.context)) CallerDevaToolsManager.registerRouteDownloadListener(TAG) { state -> - routeDownloadStatusRoot?.visibility = View.VISIBLE when(state) { 0 -> { routeDownloadStatusRoot?.visibility = View.GONE diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java index d81698c0bc..30fdc00408 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java @@ -27,13 +27,15 @@ public class MainPresenter extends Presenter { @Override public void handleMessage(Message msg) { super.handleMessage(msg); - switch (msg.what) { - case MainConstants.MSG_HIDE_MAP_COVER_FRAME: - mView.hideCoverUpLayout(); - break; - case MainConstants.MSG_LOAD_MODULES: - mView.loadModules(); - break; + if(mView!=null) { + switch (msg.what) { + case MainConstants.MSG_HIDE_MAP_COVER_FRAME: + mView.hideCoverUpLayout(); + break; + case MainConstants.MSG_LOAD_MODULES: + mView.loadModules(); + break; + } } } }; diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index fc4da778d4..f06737299e 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -302,7 +302,7 @@ interface IDevaToolsProvider : IProvider { fun attachAutopilotStatusView(ctx: Context, group: ViewGroup) - fun getExceptionStatusBeforeLaunchAutopilot(): Int + fun getExceptionStatusBeforeLaunchAutopilot(source: Int): Int fun registerRouteDownloadListener(tag: String, block:(state: Int) -> Unit) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 0bde4c7074..2abbfb75b6 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -84,9 +84,9 @@ object CallerAutoPilotControlManager { /** * 启自驾前,是否要拦截 * @param isShowTip true: 展示Toast+语音提示; false:不展示Toast+语音提示 - * + * @param source -1: 蘑方发出启自驾前状态拦截;>=0 用于其它场景的判断 */ - fun isCanStartAutopilot(isShowTip: Boolean): Boolean { + fun isCanStartAutopilot(isShowTip: Boolean, source: Int = 0): Boolean { /** * 方向盘: 1<<0 * 油门 : 1<<1 @@ -95,7 +95,7 @@ object CallerAutoPilotControlManager { * 档位: 1<<4 * 轨迹下载: (下载中) 1<<5; (下载失败)1<<6 */ - val exceptionValue = CallerDevaToolsManager.getExceptionStatusBeforeLaunchAutopilot() + val exceptionValue = CallerDevaToolsManager.getExceptionStatusBeforeLaunchAutopilot(source) if (exceptionValue != 0) { if (isShowTip) { val sb = StringBuilder("请检查车辆") diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt index a8963eb918..bd15edfb32 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerFaultManagementStateListenerManager.kt @@ -4,6 +4,7 @@ import com.mogo.eagle.core.data.msgbox.FMFilterInfoMsg import com.mogo.eagle.core.data.msgbox.FMInfoMsg import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.MsgFmData import com.mogo.eagle.core.function.api.autopilot.IMoGoFaultManagementStateListener import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager @@ -18,6 +19,11 @@ object CallerFaultManagementStateListenerManager : CallerBase() + private var currentHighAction: Int = 10 //故障Level,默认为10 + private var faultIdStr: String = "" //故障信息内容 + private var lastFaultTime: Long= 0 //故障时间 + private var tempHighAction: Int = 9 //临时故障Level + fun invokeFaultManagementState(fmInfo: FmInfo.FaultResultMsg) { val policyCode = fmInfo.downgradePolicyCode if (policyCode == null || policyCode.isEmpty()) { @@ -32,6 +38,43 @@ object CallerFaultManagementStateListenerManager : CallerBase + if(info.faultActionCount != 0){ + info.faultActionList.forEach { action -> + //如果此故障Level高于之前的最高优先级的故障,则进行赋值 + if(MsgFmData.FaultAction.getFaultLevel(action) < tempHighAction){ + tempHighAction = MsgFmData.FaultAction.getFaultLevel(action) + } + } + } + fmFaultReason.append(info.faultId) + } + if(tempHighAction == currentHighAction){ + //最高优先级的Action无变化,故障信息内容对比上一次无变化时,10min内仅产生一条消息 + if(faultIdStr == fmFaultReason.toString()){ + if(System.currentTimeMillis() - lastFaultTime < 10*60*1000){ + return + } + }else{ + //当最高优先级的actions无变化、故障信息内容对比上一次有变化时,1min内仅产生一条消息 + if(faultIdStr != fmFaultReason.toString()){ + if(System.currentTimeMillis() - lastFaultTime < 60*1000){ + return + } + } + } + }else{ + currentHighAction = tempHighAction + } + faultIdStr = fmFaultReason.toString() val fmFilterInfoMsg = cachePolicyMap[policyCode] val cacheFaultList = ArrayList() val policyTime = fmInfo.time @@ -60,6 +103,7 @@ object CallerFaultManagementStateListenerManager : CallerBase Unit) { diff --git a/core/mogo-core-res/src/main/assets/over_view_style.data b/core/mogo-core-res/src/main/assets/over_view_style.data index fbd09768a2..49eb4d9eb8 100644 Binary files a/core/mogo-core-res/src/main/assets/over_view_style.data and b/core/mogo-core-res/src/main/assets/over_view_style.data differ diff --git a/core/mogo-core-res/src/main/assets/over_view_style_extra.data b/core/mogo-core-res/src/main/assets/over_view_style_extra.data index 2fc9d80818..2f77f323d0 100644 Binary files a/core/mogo-core-res/src/main/assets/over_view_style_extra.data and b/core/mogo-core-res/src/main/assets/over_view_style_extra.data differ diff --git a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/logics/location/LocationClient.kt b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/logics/location/LocationClient.kt index 43ecb45ece..b6848179d2 100644 --- a/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/logics/location/LocationClient.kt +++ b/libraries/mapmodule/src/main/java/com/zhidaoauto/map/sdk/open/logics/location/LocationClient.kt @@ -176,6 +176,8 @@ class LocationClient(context: Context, mapController: IMapController?) : android mLocationJob = null stop() mContext = null + mapLocationListener = null + mMapController = null } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/BaseAutopilotAbilityChassis.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/BaseAutopilotAbilityChassis.java index 6eb31f8457..b02ad1d26b 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/BaseAutopilotAbilityChassis.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/BaseAutopilotAbilityChassis.java @@ -144,7 +144,7 @@ public abstract class BaseAutopilotAbilityChassis { oldThrottle = throttle; } else { CupidLogUtils.log(TAG, "方向盘当前角度=" + oldThrottle + " 方向盘1秒前角度=" + throttle); - boolean isTurning = Math.abs(throttle - oldThrottle) > 2.0F; + boolean isTurning = Math.abs(throttle - oldThrottle) > 8.0F; oldThrottle = throttle; CupidLogUtils.log(TAG, "方向盘是否转动=" + isTurning); if (isTurning) {