#FF51649D
#FF8299EB
+ #51649D
+ #427d8e
+ #1FA7FF
+ #3FC281
+ #427d8e
+ #3FC281
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
index b8956f2f0a..59715d5686 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
@@ -461,6 +461,11 @@ class MogoOCHTaxiModel {
mIsArriveAtEndStation = true;
OCHTaxiUiController.getInstance().onArriveAtEndStation();
}
+
+ @Override
+ public void onStateChanged(int state, String reason) {
+
+ }
}
/**
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
index 89c15ecbf8..8ad87aa483 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
@@ -49,6 +49,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
return R.layout.module_och_taxi_panel;
}
+ @Override
+ public void restartAutopilot() {
+ // todo 重新开始自动驾驶
+ }
+
@Override
protected void initViews() {
super.initViews();
diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java b/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java
index a96c5bbd5d..d64f21d9c4 100644
--- a/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java
+++ b/OCH/mogo-och/src/main/java/com/mogo/och/BaseOchFragment.java
@@ -6,19 +6,21 @@ import android.widget.CheckedTextView;
import android.widget.FrameLayout;
import android.widget.TextView;
-import androidx.fragment.app.Fragment;
-
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.common.MogoApisHandler;
+import com.mogo.module.common.view.OnPreventFastClickListener;
import com.mogo.och.view.FrameAnimImageView;
import com.mogo.och.view.SlidePanelView;
+import com.mogo.service.adas.IMogoAdasOCHCallback;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
/**
* 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况
+ *
+ * 部分业务放在了此处处理
*
* @author tongchenfei
*/
@@ -32,10 +34,13 @@ public abstract class BaseOchFragment> e
private final SlidePanelView.OnSlidePanelMoveToEndListener onSlideToEndListener = () -> {
// 此处做一个代理,处理一下共有情况
- hideSlidePanel();
- hideNotice();
- if (getSlidePanelOnEndListener() != null) {
- getSlidePanelOnEndListener().moveToEnd();
+ // 判断一下当前是否可以自动驾驶
+ if (MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() != IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE) {
+ hideSlidePanel();
+ hideNotice();
+ if (getSlidePanelOnEndListener() != null) {
+ getSlidePanelOnEndListener().moveToEnd();
+ }
}
};
@@ -56,17 +61,30 @@ public abstract class BaseOchFragment> e
slidePanelView.setOnSlidePanelMoveToEndListener(onSlideToEndListener);
fivNoticeHead.setAnimRes(sHappy1);
+ ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() {
+ @Override
+ public void onClickImpl(View v) {
+ // 如果能自动驾驶,就自动驾驶,不能就提示
+ if (MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() != IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE) {
+ restartAutopilot();
+ }
+ }
+ });
+
checkCallView(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isCallViewShow());
MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("Och", StatusDescriptor.CALL_VIEW, callViewListener);
+ if (MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE) {
+ hideAutopilotBiz();
+ }
}
- private void checkCallView(boolean isShown){
+ private void checkCallView(boolean isShown) {
if (flStationPanelContainer == null) {
return;
}
if (isShown) {
flStationPanelContainer.setTranslationY(131f);
- }else{
+ } else {
flStationPanelContainer.setTranslationY(0f);
}
}
@@ -76,7 +94,7 @@ public abstract class BaseOchFragment> e
slidePanelView.setVisibility(View.VISIBLE);
}
- public void hideSlidePanel(){
+ public void hideSlidePanel() {
slidePanelView.setVisibility(View.GONE);
}
@@ -87,7 +105,7 @@ public abstract class BaseOchFragment> e
fivNoticeHead.startAnim();
}
- public void hideNotice(){
+ public void hideNotice() {
tvNotice.setVisibility(View.GONE);
fivNoticeHead.setVisibility(View.GONE);
fivNoticeHead.stopAnim();
@@ -95,13 +113,24 @@ public abstract class BaseOchFragment> e
/**
* 改变自动驾驶状态
+ *
* @param isInAutopilot true - 在自动驾驶中 false - 不在自动驾驶中
*/
public void onAutopilotStatusChanged(boolean isInAutopilot) {
ctvAutopilotStatus.setChecked(isInAutopilot);
}
- public SlidePanelView.OnSlidePanelMoveToEndListener getSlidePanelOnEndListener(){
+ public void hideAutopilotBiz() {
+ ctvAutopilotStatus.setVisibility(View.GONE);
+ slidePanelView.setVisibility(View.GONE);
+ }
+
+ public void showAutopilotBiz() {
+ ctvAutopilotStatus.setVisibility(View.VISIBLE);
+ slidePanelView.setVisibility(View.VISIBLE);
+ }
+
+ public SlidePanelView.OnSlidePanelMoveToEndListener getSlidePanelOnEndListener() {
return null;
}
@@ -119,10 +148,16 @@ public abstract class BaseOchFragment> e
/**
* 获取站点面板view,在{@link #initViews()}时候添加到container中
+ *
* @return 站点面板view
*/
public abstract int getStationPanelViewId();
+ /**
+ * 重新开启自动驾驶
+ */
+ public abstract void restartAutopilot();
+
private final int[] sHappy1 = {
R.drawable.ic_happy1_00000,
R.drawable.ic_happy1_00001,
diff --git a/config.gradle b/config.gradle
index 2d94a623cc..08bb382f78 100644
--- a/config.gradle
+++ b/config.gradle
@@ -157,7 +157,7 @@ ext {
gpssimulatordebug : "com.mogo.module:module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}",
gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}",
- adasapi : "com.zhidao.autopilot.support:adas:1.0.6.7",
+ adasapi : "com.zhidao.autopilot.support:adas:1.0.6.8",
adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.1.5.2",
// 个人中心的SDK
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java
index 5e6f15a468..46c43bf744 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java
@@ -141,4 +141,6 @@ public interface IMogoADASController extends IProvider {
void removeAdasOCHCallback();
void onAutopilotArriveLike( int type );
+
+ int getAutopilotStatus();
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasOCHCallback.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasOCHCallback.java
index e65edcaab0..08cde96f3c 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasOCHCallback.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasOCHCallback.java
@@ -11,5 +11,26 @@ public
*/
interface IMogoAdasOCHCallback {
+ /**
+ * 不可自动驾驶
+ */
+ int STATUS_AUTOPILOT_DISABLE = 0;
+ /**
+ * 可自动驾驶
+ */
+ int STATUS_AUTOPILOT_ENABLE = 1;
+ /**
+ * 自动驾驶中
+ */
+ int STATUS_AUTOPILOT_RUNNING = 2;
+
+
void onArriveAt( AdasOCHData data );
+
+ /**
+ * 自动驾驶状态发生改变
+ * @param state {@link #STATUS_AUTOPILOT_DISABLE}
+ * @param reason 不能自动驾驶的原因
+ */
+ void onStateChanged(int state, String reason);
}
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
index f9e0556a24..af2b2c9a58 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
@@ -47,6 +47,7 @@ import com.zhidao.autopilot.support.api.AutopilotServiceManage;
import com.zhidao.autopilot.support.api.IAutopilotServiceStatusListener;
import com.zhidao.autopilot.support.api.IAutopolitDataCallBack;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
+import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.CarStateInfo;
import com.zhidao.support.adas.high.bean.RectInfo;
@@ -350,6 +351,11 @@ public class MogoADASController implements IMogoADASController {
mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInfo );
}
}
+
+ @Override
+ public void notifyAutopilotState(AdasAIDLAutopilotStateModel autopilotStateModel) {
+
+ }
};
AutopilotServiceManage.getInstance().registerAutopilotDataListener( mAutopolitDataCallBack );
}
@@ -656,4 +662,15 @@ public class MogoADASController implements IMogoADASController {
);
}
}
+
+ @Override
+ public int getAutopilotStatus() {
+ int status = IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE;
+ try {
+ AutopilotServiceManage.getInstance().autopilotStateCall().getState();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return status;
+ }
}