From 6c83d9f7e1ffd6def44d0adfe900bca5a737df99 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Thu, 25 Apr 2024 12:36:33 +0800 Subject: [PATCH] =?UTF-8?q?[6.4.0]=20[=E6=A0=B9=E6=8D=AE=E5=BA=95=E7=9B=98?= =?UTF-8?q?=E8=87=AA=E9=A9=BE=E7=8A=B6=E6=80=81=E5=92=8C=E9=B9=B0=E7=9C=BC?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=8C=E9=87=8D=E5=88=A4=E6=96=AD]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/bus/fragment/BaseBusTabFragment.java | 38 ++++++++----- .../mogo/och/bus/presenter/BusPresenter.java | 9 +-- .../autopilot/AutopilotStatusViewModel.kt | 18 +++++- .../fragment/BaseShuttleTabFragment.java | 43 ++++++++------- .../och/shuttle/presenter/BusPresenter.java | 10 ++-- .../callback/ITaxiADASStatusCallback.java | 10 ++-- .../com/mogo/och/taxi/model/TaxiModel.java | 19 +++++-- .../och/taxi/presenter/TaxiPresenter.java | 20 +++---- .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 41 ++++++++------ .../com/mogo/och/taxi/ui/TaxiFragment.java | 4 +- .../callback/ITaxiADASStatusCallback.java | 10 ++-- .../ITaxiControllerStatusCallback.java | 4 +- .../och/taxi/ui/base/BaseTaxiTabFragment.kt | 55 +++++++------------ .../com/mogo/och/taxi/ui/base/TaxiFragment.kt | 4 +- .../mogo/och/taxi/ui/base/TaxiPresenter.java | 28 +++++----- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 20 ++++--- 16 files changed, 183 insertions(+), 150 deletions(-) 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 62de201180..0abed40487 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 @@ -19,10 +19,12 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; +import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; @@ -166,7 +168,7 @@ public abstract class BaseBusTabFragment }); initListener(); - setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() { @Override @@ -372,40 +374,46 @@ public abstract class BaseBusTabFragment * * @param autopilotStatus 0:不可用 1:可用状态 2:自动驾驶中 */ - public void onAutopilotStatusChanged(int autopilotStatus) { + public void onAutopilotStatusChanged(int autopilotStatus,boolean canStartAutopilt) { UiThreadHandler.post(new Runnable() { @Override public void run() { - changeAutopilotBtnView(autopilotStatus, isAnimateRunning); + changeAutopilotBtnView(autopilotStatus, isAnimateRunning,canStartAutopilt); } },UiThreadHandler.MODE.QUEUE); } - public void setAutopilotBtnStatus(int autopilotStatus) { + public void setAutopilotBtnStatus(int autopilotStatus,boolean canStartAutopilt) { if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE == autopilotStatus) {//0不可用 - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_disable)); + ctvAutopilotStatusTv.setTextColor(AbsMogoApplication.getApp().getColor(R.color.bus_autopilot_text_color_disable)); ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); ctvAutopilotStatusIv.setImageResource(R.drawable.bus_disable_autopilot_icon); ctvAutopilotStatus.setClickable(true); - ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.bus_autopilot_0_1_status_bg)); - + ctvAutopilotStatus.setBackgroundResource(R.drawable.bus_autopilot_0_1_status_bg); } else { - ctvAutopilotStatusTv.setTextColor(getResources().getColor(R.color.bus_autopilot_text_color_normal)); + 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可用 - ctvAutopilotStatus.setClickable(true); ctvAutopilotStatusTv.setText(getResources().getString(R.string.bus_loading_autopilot_runnig_tv)); - ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.bus_autopilot_0_1_status_bg)); + if(canStartAutopilt){ + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatus.setBackgroundResource(R.drawable.bus_autopilot_0_1_status_bg); + }else { + ctvAutopilotStatusTv.setTextColor(AbsMogoApplication.getApp().getColor(R.color.bus_autopilot_text_color_disable)); + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_disable_autopilot_icon); + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatus.setBackgroundResource(R.drawable.bus_autopilot_0_1_status_bg); + } } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == autopilotStatus) { ctvAutopilotStatusTv.setText(R.string.bus_loading_autopilot_runnig_tv); ctvAutopilotStatus.setClickable(true); - ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.bus_autopilot_2_status_bg)); + ctvAutopilotStatus.setBackgroundResource(R.drawable.bus_autopilot_2_status_bg); } else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == autopilotStatus) { ctvAutopilotStatusTv.setText(R.string.bus_pingxing_driver); ctvAutopilotStatus.setClickable(false); - ctvAutopilotStatus.setBackground(getContext().getDrawable(R.drawable.pingxingjiashi)); + ctvAutopilotStatus.setBackgroundResource(R.drawable.pingxingjiashi); } } @@ -426,10 +434,10 @@ public abstract class BaseBusTabFragment ctvAutopilotStatus.setClickable(false); // ctvAutopilotStatus.setSelected(false); } - UiThreadHandler.postDelayed(() -> setAutopilotBtnStatus(autopilotStatus), 1000); + UiThreadHandler.postDelayed(() -> setAutopilotBtnStatus(autopilotStatus,CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)), 1000); } - private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning) { + private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning, boolean canStartAutopilt) { if (isAnimateRunning && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != autopilotStatus) { // 主动开启自动驾驶中,不为2(为0、1)则继续loading @@ -438,7 +446,7 @@ public abstract class BaseBusTabFragment if (isAnimateRunning) { stopAnimAndUpdateBtnStatus(); } else { - setAutopilotBtnStatus(autopilotStatus); + setAutopilotBtnStatus(autopilotStatus,canStartAutopilt); } } 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 f3809d38a6..80a79c0161 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 @@ -13,6 +13,7 @@ import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -185,13 +186,13 @@ public class BusPresenter extends Presenter return; } // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state)); + runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: OrderModel.getInstance().triggerStartServiceEvent( OrderModel.getInstance().isRestartAutopilot(), true); // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state)); + runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); break; default: runOnUIThread(() -> mView.onAutopilotEnableChange(false)); @@ -219,7 +220,7 @@ public class BusPresenter extends Presenter //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == CallerAutoPilotStatusListenerManager.INSTANCE.getState()){ - mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } @@ -283,6 +284,6 @@ public class BusPresenter extends Presenter @Override public void canStartAutopilot(boolean canStart) { - + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStart); } } diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/autopilot/AutopilotStatusViewModel.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/autopilot/AutopilotStatusViewModel.kt index 72cabdc44a..7d97a941b4 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/autopilot/AutopilotStatusViewModel.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/autopilot/AutopilotStatusViewModel.kt @@ -7,6 +7,7 @@ import com.magic.mogo.och.charter.constant.CharterConst import com.magic.mogo.och.charter.model.DriverM1Model import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P @@ -158,8 +159,13 @@ class AutopilotStatusViewModel: ViewModel(), IDriverM1ControllerStatusCallback, viewCallback?.autopilotDisable() } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { - // 自动驾驶状态就绪可启动自驾 - viewCallback?.canStartAutopilot() + if(CallerAutoPilotControlManager.isCanStartAutopilot(false)){ + // 自动驾驶状态就绪可启动自驾 + viewCallback?.canStartAutopilot() + }else { + // 自动驾驶未就绪 + viewCallback?.autopilotDisable() + } } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { // 自动驾驶中 @@ -181,6 +187,14 @@ class AutopilotStatusViewModel: ViewModel(), IDriverM1ControllerStatusCallback, },ThreadUtils.MODE.QUEUE) } + override fun canStartAutopilot(canStart: Boolean) { + super.canStartAutopilot(canStart) + ThreadUtils.runOnUiThread( { + // 自驾状态变更回调(可能成功可能失败) + assertStartAutopiloState(CallerAutoPilotStatusListenerManager.getState()) + },ThreadUtils.MODE.QUEUE) + } + interface IAutopilotStatusCallback{ /** * 开始动画 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 033d0417ff..a5a92462e9 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 @@ -26,6 +26,7 @@ import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.config.HdMapBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; @@ -159,7 +160,8 @@ public abstract class BaseShuttleTabFragment return; } // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state)); + runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: OrderModel.getInstance().triggerStartServiceEvent( OrderModel.getInstance().isRestartAutopilot(), true); // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state)); + runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); break; default: runOnUIThread(() -> mView.onAutopilotEnableChange(false)); @@ -209,7 +210,8 @@ public class BusPresenter extends Presenter //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == CallerAutoPilotStatusListenerManager.INSTANCE.getState()){ - mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), + CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } @@ -260,6 +262,6 @@ public class BusPresenter extends Presenter @Override public void canStartAutopilot(boolean canStart) { - + runOnUIThread(() -> mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStart)); } } diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java index 1a993dfead..9bcd37a905 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/callback/ITaxiADASStatusCallback.java @@ -10,18 +10,18 @@ public interface ITaxiADASStatusCallback { void onAutopilotArriveEnd(); // 自动驾驶可用状态 - void onAutopilotEnable(); + void onAutopilotEnable(boolean canStartAuto); // 自动驾驶不可用状态 - void onAutopilotDisable(); + void onAutopilotDisable(boolean canStartAuto); // 自动驾驶运行中 - void onAutopilotRunning(); + void onAutopilotRunning(boolean canStartAuto); //人机共驾 - void onManMachineCoDriving(); + void onManMachineCoDriving(boolean canStartAuto); - void updateAutopilotStatus(); + void updateAutopilotStatus(boolean canStartAuto); //自驾返回失败 void onStartAdasFailure(); 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 ac15edd79e..b27bc0b0a1 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(); + mADASStatusCallback.updateAutopilotStatus(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } @@ -1221,7 +1221,7 @@ public class TaxiModel { public void onAutopilotStatusResponse(int state) { if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotRunning(); + mADASStatusCallback.onAutopilotRunning(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } if (mCurrentOCHOrder != null && TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == mCurrentOCHOrder.orderStatus) { @@ -1244,7 +1244,7 @@ public class TaxiModel { return; } if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotEnable(); + mADASStatusCallback.onAutopilotEnable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { if (FunctionBuildConfig.isDemoMode @@ -1255,7 +1255,7 @@ public class TaxiModel { return; } if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotDisable(); + mADASStatusCallback.onAutopilotDisable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { if (FunctionBuildConfig.isDemoMode) { @@ -1265,17 +1265,24 @@ public class TaxiModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 } else { //美化模式下没订单,显示人工驾驶 if (mADASStatusCallback != null) { - mADASStatusCallback.onAutopilotDisable(); + mADASStatusCallback.onAutopilotDisable(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } return; } if (mADASStatusCallback != null) { - mADASStatusCallback.onManMachineCoDriving(); + mADASStatusCallback.onManMachineCoDriving(CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); } } } + @Override + public void canStartAutopilot(boolean canStart) { + if (mADASStatusCallback != null) { + mADASStatusCallback.updateAutopilotStatus(canStart); + } + } + @Override public void onAutopilotArriveAtStation(ArrivedStation data) { CallerLogger.i(M_TAXI + TAG, "onAutopilotArriveAtStation = " + data.toString()); 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 8d8ba77f0b..977948a0db 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 @@ -188,33 +188,33 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } @Override - public void onAutopilotEnable() { + public void onAutopilotEnable(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE)); + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto)); } @Override - public void onAutopilotDisable() { + public void onAutopilotDisable(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE)); + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto)); } @Override - public void onAutopilotRunning() { + public void onAutopilotRunning(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)); + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto)); } @Override - public void onManMachineCoDriving() { - runOnUIThread(() -> mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING)); + public void onManMachineCoDriving(boolean canStartAuto) { + runOnUIThread(() -> mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto)); } @Override - public void updateAutopilotStatus() { + public void updateAutopilotStatus(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - CallerAutoPilotStatusListenerManager.INSTANCE.getState())); + CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto)); } @Override 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 a11477e969..8fdebdd688 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 @@ -26,6 +26,7 @@ import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; @@ -177,28 +178,28 @@ public abstract class BaseTaxiTabFragment - onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,true) ); // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> - onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,true) ); // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人 findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> - onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,true) ); findViewById(R.id.btnAutopilotmanco).setOnClickListener(view -> - onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING)); + onAutopilotStatusChanged(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,true)); tvOperationStatus.setOnClickListener(new OnPreventFastClickListener() { @Override @@ -295,7 +296,7 @@ public abstract class BaseTaxiTabFragment { if (isStarting && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != status) { // 1. 主动开启自动驾驶中,不为2(为0、1)则继续loading @@ -308,7 +309,7 @@ public abstract class BaseTaxiTabFragment> : MvpFragment(R.id.btnOpenDebugView)?.setOnClickListener { @@ -301,7 +302,7 @@ abstract class BaseTaxiTabFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment(), override fun onMapLoaded() {} - fun updateAutopilotStatus(status: Int) { - onAutopilotStatusChanged(status) + fun updateAutopilotStatus(status: Int,canStartAuto:Boolean) { + onAutopilotStatusChanged(status,canStartAuto) } fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) { 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 5d930b8577..b38a1cb3d9 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 @@ -110,26 +110,26 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } @Override - public void onAutopilotEnable() { + public void onAutopilotEnable(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE)); + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto)); } @Override - public void onAutopilotDisable() { + public void onAutopilotDisable(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE)); + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto)); } @Override - public void onAutopilotRunning() { + public void onAutopilotRunning(boolean canStartAuto) { runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)); + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto)); } @Override - public void onParallelDrivingStatus() { - runOnUIThread(() -> mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING)); + public void onParallelDrivingStatus(boolean canStartAuto) { + runOnUIThread(() -> mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto)); } @Override @@ -138,8 +138,8 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } @Override - public void updateAutopilotStatus() { - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + public void updateAutopilotStatus(boolean canStartAuto) { + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); } @Override @@ -177,19 +177,19 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } @Override - public void stopOpenAutopilotNonManual() { + public void stopOpenAutopilotNonManual(boolean canStartAuto) { runOnUIThread(() -> { mView.startOrStopLoadingAnim(false); - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); mView.stopAutopilotBlinkAnimation(); }); } @Override - public void pauseOpenAutopilotNonManual() { + public void pauseOpenAutopilotNonManual(boolean canStartAuto) { runOnUIThread(() -> { mView.startOrStopLoadingAnim(false); - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); mView.pauseAutopilotBlinkAnimation(); }); } 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 edfbc0fea8..b9087d3ee5 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 @@ -261,7 +261,7 @@ object TaxiTaskModel { if (brakeStatus) { mControllerStatusCallback?.resumeOpenAutopilotNonManual() } else { - mControllerStatusCallback?.pauseOpenAutopilotNonManual() + mControllerStatusCallback?.pauseOpenAutopilotNonManual(CallerAutoPilotControlManager.isCanStartAutopilot(false)) } } @@ -293,7 +293,7 @@ object TaxiTaskModel { i(TAG, "onAutopilotStatusResponse autopilotsState= $state") if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_RUNNING,meaning=自动驾驶中") - mADASStatusCallback?.onAutopilotRunning() + mADASStatusCallback?.onAutopilotRunning(CallerAutoPilotControlManager.isCanStartAutopilot(false)) if ((QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder))) { TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent( isRestartAutopilot, @@ -315,7 +315,7 @@ object TaxiTaskModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return } - mADASStatusCallback?.onAutopilotEnable() + mADASStatusCallback?.onAutopilotEnable(CallerAutoPilotControlManager.isCanStartAutopilot(false)) } else if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_AUTOPILOT_DISABLE,meaning=不可自动驾驶") if ((FunctionBuildConfig.isDemoMode @@ -326,7 +326,7 @@ object TaxiTaskModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return } - mADASStatusCallback?.onAutopilotDisable() + mADASStatusCallback?.onAutopilotDisable(CallerAutoPilotControlManager.isCanStartAutopilot(false)) } else if (state == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) { DebugView.printInfoMsg("[自驾状态变化] afterValue=STATUS_PARALLEL_DRIVING,meaning=平行驾驶中") if (FunctionBuildConfig.isDemoMode) { @@ -338,11 +338,11 @@ object TaxiTaskModel { ) { //订单中 // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 } else { //美化模式下没订单,显示人工驾驶 - mADASStatusCallback?.onAutopilotDisable() + mADASStatusCallback?.onAutopilotDisable(CallerAutoPilotControlManager.isCanStartAutopilot(false)) } return } - mADASStatusCallback?.onParallelDrivingStatus() + mADASStatusCallback?.onParallelDrivingStatus(CallerAutoPilotControlManager.isCanStartAutopilot(false)) } } @@ -396,6 +396,10 @@ object TaxiTaskModel { } } + override fun canStartAutopilot(canStart: Boolean) { + super.canStartAutopilot(canStart) + } + } private val mMogoStatusChangedListener: IMogoStatusChangedListener = @@ -805,7 +809,7 @@ object TaxiTaskModel { // 主要是解决A-B演练任务同时接到A-B订单状态流转的问题 //注意: 需要去除到达乘客上车点的节点, 这个节点不拉取任务 if (QueryCurrentTaskRespBean.isTaskCompleteTaskType(result)) { - mADASStatusCallback?.updateAutopilotStatus() + mADASStatusCallback?.updateAutopilotStatus(CallerAutoPilotControlManager.isCanStartAutopilot(false)) mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onTaskCompleted(result) @@ -1516,7 +1520,7 @@ object TaxiTaskModel { TAG, "stopAutoStartAutopilot = ${mCurrentTaskWithOrder?.currentStatus}" ) if (QueryCurrentTaskRespBean.isTaskGetTaskType(mCurrentTaskWithOrder)) { - mControllerStatusCallback?.stopOpenAutopilotNonManual() + mControllerStatusCallback?.stopOpenAutopilotNonManual(CallerAutoPilotControlManager.isCanStartAutopilot(false)) mTaxiTaskWithOrderCallbackMap.forEach { val listener = it.value listener.onStopAutopilot()