diff --git a/modules/mogo-module-adas/build.gradle b/modules/mogo-module-adas/build.gradle index dd802e716d..75fa6cc4e6 100644 --- a/modules/mogo-module-adas/build.gradle +++ b/modules/mogo-module-adas/build.gradle @@ -45,7 +45,7 @@ dependencies { // 现有的ADAS的通讯SDK,需要将里面的东西融合到我们项目中 compileOnly rootProject.ext.dependencies.adasapi - api "com.zhidao.support.adas:high:1.1.9.2" + api "com.zhidao.support.adas:high:1.2.0.1" annotationProcessor rootProject.ext.dependencies.aroutercompiler if (Boolean.valueOf(RELEASE)) { diff --git a/modules/mogo-module-adas/src/main/AndroidManifest.xml b/modules/mogo-module-adas/src/main/AndroidManifest.xml index 592a5f5be0..e6c2b1f20c 100644 --- a/modules/mogo-module-adas/src/main/AndroidManifest.xml +++ b/modules/mogo-module-adas/src/main/AndroidManifest.xml @@ -2,4 +2,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java index 6fdbfda35e..925a22e85d 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java @@ -3,21 +3,29 @@ package com.mogo.module.adas; import android.content.Context; import com.mogo.module.adas.entity.AdasAutoPilotLocReceiverBean; +import com.mogo.module.adas.model.AdasServiceModel; import com.mogo.module.adas.view.DispatchRemindDialog; import com.mogo.module.common.MogoApisHandler; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.utils.logger.Logger; +import com.zhidao.support.adas.high.bean.AutopilotRoute; +import com.zhidao.support.adas.high.bean.AutopilotStatus; -//todo 自动驾驶车辆状态上报,路线上报,监听自动驾驶状态,结束置空 autoPilotLocReceiverBean -public class AdasAutoPilotManager implements IMogoOnMessageListener, DispatchRemindDialog.IDispatchRemindClickListener { +import static com.mogo.module.adas.model.AdasServiceModel.DISPATCH_RESULT_AFFIRM; +import static com.mogo.module.adas.model.AdasServiceModel.DISPATCH_RESULT_MANUAL_CANCEL; +import static com.mogo.module.adas.model.AdasServiceModel.DISPATCH_RESULT_TIMER_CANCEL; + +//负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗 +public class AdasAutoPilotManager implements IMogoOnMessageListener + , IAdasDataListener + , DispatchRemindDialog.IDispatchRemindClickListener { private static final String TAG = "AdasAutoPilotManager"; private static volatile AdasAutoPilotManager instance; private static final byte[] obj = new byte[0]; private static final int MSG_SOCKET_TYPE = 1; - private Context mContext; + private DispatchRemindDialog dispatchRemindDialog; - private AdasAutoPilotLocReceiverBean autoPilotLocReceiverBean; private AdasAutoPilotManager() { @@ -35,10 +43,10 @@ public class AdasAutoPilotManager implements IMogoOnMessageListener ownerCarStateRectList ) { - } -} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java index eeabdf5f0b..97b10ecee2 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java @@ -1,7 +1,5 @@ package com.mogo.module.adas; -import android.os.RemoteException; - import com.google.gson.Gson; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.data.BaseData; @@ -9,6 +7,7 @@ import com.mogo.commons.network.SubscribeImpl; import com.mogo.module.adas.entity.AutonomousDriveStatusBean; import com.mogo.module.adas.entity.ReportSiteBean; import com.mogo.module.adas.entity.WarnMessageModel; +import com.mogo.module.adas.network.IAdasApiService; import com.mogo.module.common.MogoApisHandler; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; @@ -17,6 +16,7 @@ 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.OnAdasMsgConnectStatusListener; +import com.zhidao.support.adas.high.bean.AutopilotRoute; import com.zhidao.support.adas.high.bean.AutopilotStatus; import com.zhidao.support.adas.high.bean.AutopilotWayArrive; import com.zhidao.support.adas.high.bean.CarLaneInfo; @@ -40,15 +40,20 @@ import okhttp3.MediaType; import okhttp3.RequestBody; import static com.mogo.commons.context.ContextHolderUtil.getContext; +import static com.mogo.module.adas.AdasConstant.getBaseUrl; /** * Created by XuYong on 2021/4/25 14:43 */ -public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener { +public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener { //todo 新增查询路线方法 private final String TAG = "AdasEventManager"; + + private static volatile AdasEventManager adasEventManager; + private static final byte[] obj = new byte[0]; + private final Gson gson; - private final ArrayList iAdasEventListeners = new ArrayList<>(); + private final ArrayList iAdasEventListeners = new ArrayList<>(); private final ArrayList iAdasStatusListeners = new ArrayList<>(); private IAdasApiService mAdasApiService; private Disposable uploadAutopilotStatus; @@ -58,54 +63,61 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL private float mCurrentAutopilotSpeed = 0; private Disposable mdDisposable; //自动驾驶状态 - private AutopilotStatus.ValuesBean mAutopilotStatus = null; + private AutopilotStatus.ValuesBean mAutopilotValuesStatus = null; - public AdasEventManager() { - gson = GsonUtil.getGson(); - mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create( IAdasApiService.class, AdasConstant.HOST_PRODUCT ); + private AdasEventManager() { + gson = GsonUtil.getGson(); + mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IAdasApiService.class, getBaseUrl()); } - public void addEventListener(AdasDataListener listener) { - Logger.d(TAG,"添加adas事件监听"); - if(iAdasEventListeners.contains(listener)){ + public static AdasEventManager getInstance() { + if (adasEventManager == null) { + synchronized (obj) { + if (adasEventManager == null) { + adasEventManager = new AdasEventManager(); + } + } + } + return adasEventManager; + } + + public void addEventListener(IAdasDataListener listener) { + Logger.d(TAG, "添加adas事件监听"); + if (iAdasEventListeners.contains(listener)) { return; } iAdasEventListeners.add(listener); } - public void removeEventListener(AdasDataListener listener) { - Logger.d(TAG,"注销adas事件监听"); - if (iAdasEventListeners != null) { - iAdasEventListeners.remove(listener); - } + public void removeEventListener(IAdasDataListener listener) { + Logger.d(TAG, "注销adas事件监听"); + iAdasEventListeners.remove(listener); } public void addStatusListener(AdasStatusListener listener) { - Logger.d(TAG,"添加adas状态事件监听"); - if(iAdasStatusListeners.contains(listener)){ + Logger.d(TAG, "添加adas状态事件监听"); + if (iAdasStatusListeners.contains(listener)) { return; } iAdasStatusListeners.add(listener); } public void removeStatusListener(AdasStatusListener listener) { - Logger.d(TAG,"注销adas状态事件监听"); - if (iAdasStatusListeners != null) { - iAdasStatusListeners.remove(listener); - } + Logger.d(TAG, "注销adas状态事件监听"); + iAdasStatusListeners.remove(listener); } public void removeStatusListener() { - Logger.d(TAG,"注销adas状态事件监听"); + Logger.d(TAG, "注销adas状态事件监听"); iAdasStatusListeners.clear(); } @Override public void onWarnMessage(WarnMessageInfo warnMessageInfo) { - Logger.d(TAG,"onWarnMessage " + warnMessageInfo); + Logger.d(TAG, "onWarnMessage " + warnMessageInfo); //报警model WarnMessageModel warnMessageModel = null; - for (AdasDataListener listener:iAdasEventListeners) { + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { if (warnMessageModel == null) { warnMessageModel = new WarnMessageModel(); @@ -119,8 +131,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onVideoSize(int width, int height) { - Logger.d(TAG,"onVideoSize"); - for (AdasDataListener listener:iAdasEventListeners) { + Logger.d(TAG, "onVideoSize"); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { } } @@ -128,9 +140,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onRectData(RectInfo rectInfo) { - Logger.d(TAG,"onRectData " + rectInfo); - - for (AdasDataListener listener:iAdasEventListeners) { + Logger.d(TAG, "onRectData " + rectInfo); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { listener.cameraEyeDetectResult(gson.toJson(rectInfo)); } @@ -139,8 +150,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onCarStateData(CarStateInfo carStateInfo) { - Logger.d(TAG,"onCarStateData " + carStateInfo); - for (AdasDataListener listener:iAdasEventListeners) { + Logger.d(TAG, "onCarStateData " + carStateInfo); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { listener.ownerCarStateInfo(gson.toJson(carStateInfo)); } @@ -149,8 +160,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onLightStateData(LightStatueInfo lightStatueInfo) { - Logger.d(TAG,"onLightStateData " + lightStatueInfo); - for (AdasDataListener listener:iAdasEventListeners) { + Logger.d(TAG, "onLightStateData " + lightStatueInfo); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { } } @@ -158,8 +169,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onObstaclesInfo(ObstaclesInfo obstaclesInfo) { - Logger.d(TAG,"onObstaclesInfo " + obstaclesInfo); - for (AdasDataListener listener:iAdasEventListeners) { + Logger.d(TAG, "onObstaclesInfo " + obstaclesInfo); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { } } @@ -167,8 +178,8 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onCarLaneInfo(CarLaneInfo carLaneInfo) { - Logger.d(TAG,"onCarLaneInfo " + carLaneInfo); - for (AdasDataListener listener:iAdasEventListeners) { + Logger.d(TAG, "onCarLaneInfo " + carLaneInfo); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { } } @@ -176,32 +187,25 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void autopilotStatus(AutopilotStatus autopilotStatus) { - Logger.d(TAG,"autopilotStatus " + autopilotStatus); + Logger.d(TAG, "autopilotStatus " + autopilotStatus); AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues(); - AutopilotStatus.ValuesBean mAutopilotStatus; - if (autopilotStatusValues != null) { - AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel(); - adasAIDLAutopilotStateModel.setReason(autopilotStatusValues.getReason()); - mAutopilotStatus = autopilotStatusValues; int state = autopilotStatusValues.getState(); float speed = autopilotStatusValues.getSpeed(); - adasAIDLAutopilotStateModel.setState(state); - adasAIDLAutopilotStateModel.setSpeed(speed); mCurrentAutopilotStatus = state; mCurrentAutopilotSpeed = speed; - for (AdasDataListener listener:iAdasEventListeners) { + this.mAutopilotValuesStatus = autopilotStatus.getValues(); + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { - listener.notifyAutopilotState(adasAIDLAutopilotStateModel); + listener.notifyAutopilotState(autopilotStatus); } } - } } @Override public void autopilotArrive(AutopilotWayArrive autopilotWayArrive) { - Logger.d(TAG,"autopilotArrive " + autopilotWayArrive); + Logger.d(TAG, "autopilotArrive " + autopilotWayArrive); if (autopilotWayArrive != null) { AutopilotWayArrive.ResultBean result = autopilotWayArrive.getResult(); if (result != null) { @@ -213,9 +217,9 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL double lat = endLatLon.getLat(); adasAIDLAutopilotArriveModel.setLat(lat); adasAIDLAutopilotArriveModel.setLon(lon); - Logger.d(TAG,"autopilotArrive reportSite"); + Logger.d(TAG, "autopilotArrive reportSite"); reportSite(lon, lat); - for (AdasDataListener listener:iAdasEventListeners) { + for (IAdasDataListener listener : iAdasEventListeners) { if (listener != null) { listener.autopilotArrive(adasAIDLAutopilotArriveModel); } @@ -226,14 +230,21 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL } @Override - public void onAutopilotRoute(String route) { - //todo + public void onAutopilotRoute(AutopilotRoute autopilotRoute) { + if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) { + return; + } + for (IAdasDataListener listener : iAdasEventListeners) { + if (listener != null) { + listener.autopilotRoute(autopilotRoute); + } + } } @Override public void onWebSocketConnectSuccess() { - Logger.d(TAG,"webSocket 连接成功"); - for (AdasStatusListener listener :iAdasStatusListeners) { + Logger.d(TAG, "webSocket 连接成功"); + for (AdasStatusListener listener : iAdasStatusListeners) { listener.onServiceConnected(); } updateDriveStatusTask(); @@ -241,15 +252,15 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onWebSocketConnectFailed() { - Logger.d(TAG,"webSocket 连接失败"); - for (AdasStatusListener listener :iAdasStatusListeners) { + Logger.d(TAG, "webSocket 连接失败"); + for (AdasStatusListener listener : iAdasStatusListeners) { listener.onServiceDisconnected(); } } public void updateDriveStatusTask() { - Logger.d(TAG,"updateDriveStatusTask"); - mdDisposable = Flowable.interval(0,5, TimeUnit.SECONDS) + Logger.d(TAG, "updateDriveStatusTask"); + mdDisposable = Flowable.interval(0, 5, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -264,34 +275,9 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL private void updateDriveStatus() { String sn = MoGoAiCloudClientConfig.getInstance().getSn(); AutonomousDriveStatusBean request = new AutonomousDriveStatusBean(sn, mCurrentAutopilotStatus, mCurrentAutopilotSpeed); - RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( request ) ); + RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)); mAdasApiService.updateAutonomousDriveStatus(requestBody). - subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) - .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { - @Override - public void onError(String message, int code) { - super.onError(message, code); - } - - @Override - public void onError(Throwable e) { - super.onError(e); - } - - @Override - public void onSuccess(BaseData o) { - super.onSuccess(o); - Logger.d(TAG,"updateDriveStatus success"); - } - }); - } - - private void reportSite( double lon, double lat) { - String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - ReportSiteBean reportSiteBean = new ReportSiteBean(sn, lon, lat); - RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( reportSiteBean ) ); - mAdasApiService.updateReportSite(requestBody). - subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) + subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { @Override public void onError(String message, int code) { @@ -306,17 +292,46 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL @Override public void onSuccess(BaseData o) { super.onSuccess(o); - Logger.d(TAG,"autopilotArrive success"); + Logger.d(TAG, "updateDriveStatus success"); } }); } + private void reportSite(double lon, double lat) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + ReportSiteBean reportSiteBean = new ReportSiteBean(sn, lon, lat); + RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(reportSiteBean)); + mAdasApiService.updateReportSite(requestBody). + subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + Logger.d(TAG, "autopilotArrive success"); + } + }); + } + + public AutopilotStatus.ValuesBean getAutopilotValuesStatus(){ + return mAutopilotValuesStatus; + } + public AdasAIDLAutopilotStateModel autopilotStateCall() { - AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel(); - if (mAutopilotStatus != null) { - adasAIDLAutopilotStateModel.setSpeed(mAutopilotStatus.getSpeed()); - adasAIDLAutopilotStateModel.setState(mAutopilotStatus.getState()); - adasAIDLAutopilotStateModel.setReason(mAutopilotStatus.getReason()); + AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel = new AdasAIDLAutopilotStateModel(); + if (mAutopilotValuesStatus != null) { + adasAIDLAutopilotStateModel.setSpeed(mAutopilotValuesStatus.getSpeed()); + adasAIDLAutopilotStateModel.setState(mAutopilotValuesStatus.getState()); + adasAIDLAutopilotStateModel.setReason(mAutopilotValuesStatus.getReason()); } return adasAIDLAutopilotStateModel; } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java index 5288467af5..8c07921128 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java @@ -4,10 +4,12 @@ import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.service.MogoServicePaths; import com.mogo.utils.logger.Logger; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; import com.zhidao.support.adas.high.AdasManager; +import com.zhidao.support.adas.high.bean.BasicInfo; /** @@ -18,14 +20,14 @@ import com.zhidao.support.adas.high.AdasManager; * wiki:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=52840459 */ @Route(path = MogoServicePaths.PATH_ADAS) -public class AdasProvider implements IProvider { +public class AdasProvider implements IProvider { //todo 新增查询路线方法 扩展接口至 serviceApi private static final String TAG = "AdasProvider"; private AdasEventManager adasEventManager; @Override public void init(Context context) { Logger.d(TAG, "初始化 AdasProvider 模块"); - adasEventManager = new AdasEventManager(); + adasEventManager = AdasEventManager.getInstance(); initAdas(context, adasEventManager); initAutoPilotBusiness(context); } @@ -34,17 +36,24 @@ public class AdasProvider implements IProvider { AdasManager.getInstance().create(context); AdasManager.getInstance().setOnAdasListener(adasEventManager); AdasManager.getInstance().setOnAdasConnectStatusListener(adasEventManager); + AdasManager.getInstance().queryAutopilotRoute(); } private void initAutoPilotBusiness(Context context) { AdasAutoPilotManager.getInstance().initSocket(context); } - public void addAdasEventListener(AdasDataListener listener) { + public void setBasicInfo(){ + BasicInfo info = new BasicInfo(); + info.setSn(MoGoAiCloudClientConfig.getInstance().getSn()); + AdasManager.getInstance().setBasicInfo(info); + } + + public void addAdasEventListener(IAdasDataListener listener) { adasEventManager.addEventListener(listener); } - public void removeAdasEventListener(AdasDataListener listener) { + public void removeAdasEventListener(IAdasDataListener listener) { adasEventManager.removeEventListener(listener); } @@ -64,6 +73,13 @@ public class AdasProvider implements IProvider { AdasManager.getInstance().aiCloudToAdasData(msg); } + /** + * 查询自动驾驶路线,接口回调至 OnAdasListener + */ + public void queryAutopilotRoute() { + AdasManager.getInstance().queryAutopilotRoute(); + } + public void cancelPilot() { if (AdasManager.getInstance().isSocketConnect()) { AdasManager.getInstance().controlAutopilotCarHead(); diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java deleted file mode 100644 index d1c58c2da9..0000000000 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.mogo.module.adas; - -import com.mogo.commons.data.BaseData; - -import io.reactivex.Observable; -import okhttp3.RequestBody; -import retrofit2.http.Body; -import retrofit2.http.Headers; -import retrofit2.http.POST; - -/** - * Created by XuYong on 2021/5/28 14:24 - */ -public interface IAdasApiService { - - //上传自动驾驶状态接口 - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/yycp-carDataService/autonomousDrive/updateAutonomousDriveStatus" ) - Observable updateAutonomousDriveStatus(@Body RequestBody requestBody ); - //站点上报 - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/yycp-carDataService/autonomousDrive/reportSite" ) - Observable updateReportSite(@Body RequestBody requestBody ); -} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasDataListener.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasDataListener.java new file mode 100644 index 0000000000..a0775e71a3 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasDataListener.java @@ -0,0 +1,79 @@ +package com.mogo.module.adas; + +import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; +import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel; +import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.bean.AutopilotRoute; +import com.zhidao.support.adas.high.bean.AutopilotStatus; +import com.zhidao.support.adas.high.bean.AutopilotWayArrive; +import com.zhidao.support.adas.high.bean.CarLaneInfo; +import com.zhidao.support.adas.high.bean.CarStateInfo; +import com.zhidao.support.adas.high.bean.LightStatueInfo; +import com.zhidao.support.adas.high.bean.ObstaclesInfo; +import com.zhidao.support.adas.high.bean.RectInfo; +import com.zhidao.support.adas.high.bean.WarnMessageInfo; + +import java.util.List; + +/** + * Created by XuYong on 2021/4/25 16:52 + */ +public interface IAdasDataListener { + + default void sendMsg( String msg ){ + + }; + + default void cameraEyeDetectResult( String detectResult ) { + } + + default void selectCarModelUrl( String carStyleUrl ) { + } + + default void requestGetCarModelListInfo() { + } + + default void clickSettingBack() { + } + + default void showToast( String msg ) { + + } + + /** + * 自动驾驶到达站点回调接口 + * @param autopilotArriveModel + */ + default void autopilotArrive( AdasAIDLAutopilotArriveModel autopilotArriveModel ) { + } + + /** + * 自动驾驶路线回调 + * @param autopilotRoute {@link AutopilotRoute} + */ + default void autopilotRoute(AutopilotRoute autopilotRoute){ + + } + + /** + * 自车定位信息 + * @param ownerCarStateInfo + */ + default void ownerCarStateInfo( String ownerCarStateInfo ) { + } + + default void notifyOwnerCarState( AdasAIDLOwnerCarStateModel ownerCarStateModel ) { + } + + /** + * 自动驾驶状态信息 + * @param autopilotStatus {@link AutopilotStatus} + */ + default void notifyAutopilotState( AutopilotStatus autopilotStatus ) { + } + + default void notifyOwnerCarRect( List ownerCarStateRectList ) { + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportDispatchResult.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportDispatchResult.java new file mode 100644 index 0000000000..b124381df5 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportDispatchResult.java @@ -0,0 +1,36 @@ +package com.mogo.module.adas.entity; + +public class ReportDispatchResult { + + private String sn; + private int dispatchResult; + + public ReportDispatchResult(String sn, int dispatchResult) { + this.sn = sn; + this.dispatchResult = dispatchResult; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public int getDispatchResult() { + return dispatchResult; + } + + public void setDispatchResult(int dispatchResult) { + this.dispatchResult = dispatchResult; + } + + @Override + public String toString() { + return "ReportDispatchResult{" + + "sn='" + sn + '\'' + + ", dispatchResult=" + dispatchResult + + '}'; + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportedRoute.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportedRoute.java new file mode 100644 index 0000000000..850473685e --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportedRoute.java @@ -0,0 +1,38 @@ +package com.mogo.module.adas.entity; + + +import com.zhidao.support.adas.high.bean.AutopilotStatus; + +/** + * 上报自动驾驶规划的路径 + */ +public class ReportedRoute { + private String sn; + private AutopilotStatus.ValuesBean bean; + private String siteList; + + public ReportedRoute(String sn, AutopilotStatus.ValuesBean bean) { + this.sn = sn; + this.bean = bean; + } + + public ReportedRoute(String sn, String siteList) { + this.sn = sn; + this.siteList = siteList; + } + + public String getSiteList() { + return siteList; + } + + public String getState() { + return "{\"sn\":\"" + sn + "\",\"state\":" + bean.getState() + ",\"speed\":" + bean.getSpeed() + ",\"reason\":\"" + bean.getReason() + "\",\"camera\":" + bean.getCamera() + ",\"radar\":" + bean.getRadar() + ",\"rtk\":" + bean.getRtk() + "}"; + } + + public String getRoute() { + return "{\"sn\":\"" + sn + "\",\"siteList\":" + siteList + "}"; + + } + + +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/model/AdasServiceModel.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/model/AdasServiceModel.java new file mode 100644 index 0000000000..ce1543c1d6 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/model/AdasServiceModel.java @@ -0,0 +1,155 @@ +package com.mogo.module.adas.model; + +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.commons.data.BaseData; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.module.adas.entity.ReportDispatchResult; +import com.mogo.module.adas.entity.ReportedRoute; +import com.mogo.module.adas.network.IAdasApiService; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; +import com.zhidao.support.adas.high.bean.AutopilotRoute; +import com.zhidao.support.adas.high.bean.AutopilotStatus; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + +import static com.mogo.commons.context.ContextHolderUtil.getContext; +import static com.mogo.module.adas.AdasConstant.getBaseUrl; + +public class AdasServiceModel { + + private static final String TAG = "AdasServiceModel"; + private static volatile AdasServiceModel instance; + private static final byte[] obj = new byte[0]; + + public static final int DISPATCH_RESULT_AFFIRM = 0; + public static final int DISPATCH_RESULT_MANUAL_CANCEL = 1; + public static final int DISPATCH_RESULT_TIMER_CANCEL = 2; + + private final IAdasApiService mAdasApiService; + + private AdasServiceModel() { + this.mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IAdasApiService.class, getBaseUrl()); + } + + public static AdasServiceModel getInstance() { + if (instance == null) { + synchronized (obj) { + if (instance == null) { + instance = new AdasServiceModel(); + } + } + } + return instance; + } + + /** + * 上报自动驾驶状态 + * + * @param autopilotStatus {@link AutopilotStatus} + */ + public void uploadAutopilotStatus(AutopilotStatus autopilotStatus) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus.getValues()); + Map map = new HashMap<>(); + map.put("sn", sn); + map.put("reportedRoute", reportedRoute); + mAdasApiService.uploadAutopilotState(map) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { + @Override + public void onNext(BaseData o) { + super.onNext(o); + Logger.d(TAG, "uploadAutopilotStatus success"); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG, "uploadAutopilotStatus error : " + e.getMessage()); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + } + }); + } + + /** + * 上报自动驾驶路线 + * + * @param list 路线集合 + */ + public void uploadAutopilotRoute(List list) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + ReportedRoute reportedRoute = new ReportedRoute(sn, Arrays.toString(list.toArray())); + Map map = new HashMap<>(); + map.put("sn", sn); + map.put("reportedRoute", reportedRoute); + mAdasApiService.uploadAutopilotRoute(map) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { + @Override + public void onNext(BaseData o) { + super.onNext(o); + Logger.d(TAG, "uploadAutopilotRoute success"); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG, "uploadAutopilotRoute error : " + e.getMessage()); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + } + }); + } + + /** + * 上报调度处理结果 + * + * @param dispatchResultType int + */ + public void dispatchResultUpload(int dispatchResultType) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + ReportDispatchResult reportDispatchResult = new ReportDispatchResult(sn, dispatchResultType); + Map map = new HashMap<>(); + map.put("sn", sn); + map.put("reportDispatchResult", reportDispatchResult); + mAdasApiService.uploadDispatchResult(map) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { + @Override + public void onNext(BaseData o) { + super.onNext(o); + Logger.d(TAG, "dispatchResultUpload success"); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG, "dispatchResultUpload error : " + e.getMessage()); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + } + }); + } + +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/network/IAdasApiService.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/network/IAdasApiService.java new file mode 100644 index 0000000000..8d54f6cb2f --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/network/IAdasApiService.java @@ -0,0 +1,55 @@ +package com.mogo.module.adas.network; + +import com.mogo.commons.data.BaseData; + +import java.util.Map; + +import io.reactivex.Observable; +import okhttp3.RequestBody; +import retrofit2.http.Body; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.Headers; +import retrofit2.http.POST; + +public interface IAdasApiService { + + //上传自动驾驶状态接口 + @Headers({"Content-Type:application/json;charset=UTF-8"}) + @POST("/yycp-carDataService/autonomousDrive/updateAutonomousDriveStatus") + Observable updateAutonomousDriveStatus(@Body RequestBody requestBody); + + //站点上报 用于网约车业务 + @Headers({"Content-Type:application/json;charset=UTF-8"}) + @POST("/yycp-carDataService/autonomousDrive/reportSite") + Observable updateReportSite(@Body RequestBody requestBody); + + /** + * 上报自动驾驶状态 服务于业务调度 + * + * @param parameters map + * @return {@link BaseData} + */ + @FormUrlEncoded + @POST("/dataService/autoDriver/receiveAutopilotState") + Observable uploadAutopilotState(Map parameters); + + /** + * 上报自动驾驶路径 服务于业务调度 + * + * @param parameters map + * @return {@link BaseData} + */ + @FormUrlEncoded + @POST("/dataService/autoDriver/receiveCarPreSetPath") + Observable uploadAutopilotRoute(Map parameters); + + /** + * 上报自动驾驶调度处理结果 服务于业务调度 + * + * @param parameters map + * @return {@link BaseData} + */ + @FormUrlEncoded + @POST("") + Observable uploadDispatchResult(Map parameters); +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/AdasTestPanelBroadCastReceiver.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/AdasTestPanelBroadCastReceiver.java new file mode 100644 index 0000000000..1c9efda496 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/AdasTestPanelBroadCastReceiver.java @@ -0,0 +1,45 @@ +package com.mogo.module.adas.receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.mogo.module.adas.AdasAutoPilotManager; +import com.mogo.utils.logger.Logger; + +public class AdasTestPanelBroadCastReceiver extends BroadcastReceiver { + + private static final String TAG = "AdasTestPanelBroadCastReceiver"; + + /** + * Adas测试控制面板广播Action + */ + public static final String BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY = "sceneType"; + + private Context mContext; + + @Override + public void onReceive(Context context, Intent intent) { + try { + this.mContext = context; + int sceneType = intent.getIntExtra(BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0); + Logger.d(TAG, "textPanelOpenType:" + sceneType); + // 分发场景 + dispatchSceneTest(sceneType); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 分发处理场景 + * + * @param sceneType 场景类型 + */ + private void dispatchSceneTest(int sceneType) { + Logger.d(TAG, "sceneType=" + sceneType); + if (sceneType == 0) {//打开调度弹窗 + AdasAutoPilotManager.getInstance().test(); + } + } +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java index a2c7c22ae8..1fa94256a0 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java @@ -19,12 +19,12 @@ public class DispatchRemindDialog extends BaseFloatDialog { private static int TIMER = 10; private IDispatchRemindClickListener mListener; - private TextView tvTimer; - private TextView tvLoc; - private TextView tvAffirm; - private TextView tvCancel; + private final TextView tvTimer; + private final TextView tvLoc; + private final TextView tvAffirm; + private final TextView tvCancel; - private Handler handler = new Handler() { + private final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); @@ -34,7 +34,7 @@ public class DispatchRemindDialog extends BaseFloatDialog { tvTimer.setText(TIMER); handler.sendEmptyMessage(MSG_TYPE_TIMER); } else { - hide(); + hideDialog(); } } } @@ -55,7 +55,7 @@ public class DispatchRemindDialog extends BaseFloatDialog { }); tvCancel.setOnClickListener(v -> { if (mListener != null) { - mListener.cancel(); + mListener.cancel(true); } }); } @@ -66,14 +66,18 @@ public class DispatchRemindDialog extends BaseFloatDialog { tvLoc.setText(locContent); } - public void hide() { - dismiss(); + public void hideDialog() { + if (mListener != null) { + mListener.cancel(false); + } mListener = null; + handler.removeMessages(MSG_TYPE_TIMER); + dismiss(); } public void addIDispatchRemindListener(IDispatchRemindClickListener listener) { - if (listener != null) { - Logger.d(TAG, "addIDispatchRemindListener has listener"); + if (listener == null) { + Logger.d(TAG, "addIDispatchRemindListener listener is null"); return; } this.mListener = listener; @@ -83,6 +87,6 @@ public class DispatchRemindDialog extends BaseFloatDialog { void affirm(); - void cancel(); + void cancel(boolean manualTrigger); } } 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 1439a9389b..079e04204b 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 @@ -129,6 +129,18 @@ public interface IMogoADASController extends IProvider { */ void removeAdasRecognizedDataCallback(IMogoAdasRecognizedDataCallback callback); + /** + * 添加adas自动驾驶路线回调 + * @param callBack + */ + void addAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack); + + /** + * 移除adas自动驾驶路线回调 + * @param callBack + */ + void removeAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack); + /** * 自车定位数据 * diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRouteCallBack.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRouteCallBack.java new file mode 100644 index 0000000000..a0da1cccc2 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRouteCallBack.java @@ -0,0 +1,10 @@ +package com.mogo.service.adas; + +import com.mogo.map.MogoLatLng; + +import java.util.List; + +public interface IMogoAdasRouteCallBack { + + void routeResult(List routeList); +} 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 126ccc2719..1916ecd3e4 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 @@ -14,16 +14,18 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.SubscribeImpl; +import com.mogo.map.MogoLatLng; import com.mogo.map.uicontroller.EnumMapUI; -import com.mogo.module.adas.AdasDataListener; import com.mogo.module.adas.AdasProvider; import com.mogo.module.adas.AdasStatusListener; +import com.mogo.module.adas.IAdasDataListener; import com.mogo.service.MogoServicePaths; import com.mogo.service.adas.IMogoADASController; import com.mogo.service.adas.IMogoAdasCarDataCallback; import com.mogo.service.adas.IMogoAdasDataCallback; import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.adas.IMogoAdasRecognizedDataCallback; +import com.mogo.service.adas.IMogoAdasRouteCallBack; import com.mogo.service.adas.IMogoAdasWarnMessageCallback; import com.mogo.service.adas.RemoteControlAutoPilotParameters; import com.mogo.service.adas.entity.ADASCarStateInfo; @@ -47,12 +49,11 @@ import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode; import com.zhidao.adasconfig.common.config.EnumCarHeading; import com.zhidao.adasconfig.common.config.EnumSkinStyle; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; -import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel; -import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.adas.high.OnAdasListener; -import com.zhidao.support.adas.high.bean.BasicInfo; +import com.zhidao.support.adas.high.bean.AutopilotRoute; +import com.zhidao.support.adas.high.bean.AutopilotStatus; import com.zhidao.support.adas.high.bean.RectInfo; import com.zhidao.support.adas.high.bean.WarnMessageInfo; import com.zhidao.support.adas.high.msg.MyMessageFactory; @@ -93,8 +94,7 @@ public class MogoADASController implements IMogoADASController { private boolean mIsReleased = true; - //private IAutopolitDataCallBack mAutopolitDataCallBack; - private AdasDataListener mAdasDataListener; + private IAdasDataListener mAdasDataListener; private AdasProvider adasProvider; @@ -113,6 +113,11 @@ public class MogoADASController implements IMogoADASController { */ private final List mMogoAdasRecognizedDataCallbacks = new CopyOnWriteArrayList<>(); + /** + * 自动驾驶路线回调 + */ + private final List mMogoAdasRouteCallBacks = new CopyOnWriteArrayList<>(); + private IMogoAdasCarDataCallback mMogoAdasCarDataCallback; private List mLastFrameDatums; @@ -142,7 +147,6 @@ public class MogoADASController implements IMogoADASController { final long start = System.currentTimeMillis(); - ADASCarStateInfo stateInfo = GsonUtil.objectFromJson(((String) msg.obj), ADASCarStateInfo.class); if (stateInfo == null || stateInfo.getValues() == null) { Logger.d(TAG, "ADAS-LOC-timer", "upd 到 aidl 传输数据 stateInfo or stateInfo.getValues() is null"); @@ -233,7 +237,7 @@ public class MogoADASController implements IMogoADASController { } @Override - public void onAutopilotRoute(String route) { + public void onAutopilotRoute(AutopilotRoute autopilotRoute) { } @@ -299,7 +303,6 @@ public class MogoADASController implements IMogoADASController { @Override public void killADAS() { try { - //AutopilotServiceManage.getInstance().kill(); adasProvider.killAdas(); } catch (Exception e) { @@ -311,10 +314,10 @@ public class MogoADASController implements IMogoADASController { private void testOCH() { RemoteControlAutoPilotParameters currentAutopilot = new RemoteControlAutoPilotParameters(); currentAutopilot.isSpeakVoice = true; - currentAutopilot.startLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat( 0, 1 ); - currentAutopilot.endLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat( 2, 3 ); + currentAutopilot.startLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat(0, 1); + currentAutopilot.endLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat(2, 3); currentAutopilot.vehicleType = 10; - Logger.d( TAG, "开启自动驾驶====" + currentAutopilot ); + Logger.d(TAG, "开启自动驾驶====" + currentAutopilot); aiCloudToAdasData(currentAutopilot); } @@ -326,19 +329,17 @@ public class MogoADASController implements IMogoADASController { return; } } - if (SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) { - return; - } +// if (SingletonsHolder.get(IMogoStatusManager.class).isVrMode()) { +// return; +// } Logger.d(TAG, Log.getStackTraceString(new Throwable())); init(AbsMogoApplication.getApp()); adasProvider.addAdasStatusListener(new AdasStatusListener() { @Override public void onServiceConnected() { super.onServiceConnected(); - Logger.d( TAG, "adas statuslistener connected & send sn"); - BasicInfo info=new BasicInfo(); - info.setSn(MoGoAiCloudClientConfig.getInstance().getSn()); - AdasManager.getInstance().setBasicInfo(info); + Logger.d(TAG, "adas statusListener connected & send sn"); + adasProvider.setBasicInfo(); invokeShowADASOperation(); //测试网约车 @@ -354,7 +355,7 @@ public class MogoADASController implements IMogoADASController { invokeShowADASOperation(); if (mAdasDataListener == null) { - mAdasDataListener = new AdasDataListener() { + mAdasDataListener = new IAdasDataListener() { @Override public void sendMsg(String msg) { Logger.d(TAG, "adas AdasDataListener sendmsg " + msg); @@ -401,7 +402,6 @@ public class MogoADASController implements IMogoADASController { // 向adas发送车模list String carModelList = SharedPrefsMgr.getInstance(context).getString("CAR_MODEL_LIST", ""); if (carModelList != null && !carModelList.isEmpty()) { - //AutopilotServiceManage.getInstance().settingCarModelListInfo(carModelList); adasProvider.settingCarModelListInfo(carModelList); } // 此处进行网络请求,请求成功后再通知一次adas @@ -439,6 +439,23 @@ public class MogoADASController implements IMogoADASController { } } + @Override + public void autopilotRoute(AutopilotRoute autopilotRoute) { + if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) { + return; + } + List latLngList = new ArrayList<>(); + for (AutopilotRoute.RouteModels routeModel : autopilotRoute.getModels()) { + latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon())); + } + for (IMogoAdasRouteCallBack callback : mMogoAdasRouteCallBacks) { + if (callback == null) { + continue; + } + callback.routeResult(latLngList); + } + } + @Override public void ownerCarStateInfo(String ownerCarStateInfo) { Logger.d(TAG, "ownerCarStateInfo " + ownerCarStateInfo); @@ -473,11 +490,11 @@ public class MogoADASController implements IMogoADASController { } @Override - public void notifyAutopilotState(AdasAIDLAutopilotStateModel autopilotStateModel) { - Logger.d(TAG, "notifyAutopilotState: " + autopilotStateModel); - DebugConfig.setAutoPilotStatus(autopilotStateModel.getState() + ""); + public void notifyAutopilotState(AutopilotStatus autopilotStatus) { + Logger.d(TAG, "notifyAutopilotState: " + autopilotStatus); + DebugConfig.setAutoPilotStatus(autopilotStatus.getValues().getState() + ""); if (mAdasOCHCallback != null) { - mAdasOCHCallback.onStateChanged(autopilotStateModel.getState(), autopilotStateModel.getReason()); + mAdasOCHCallback.onStateChanged(autopilotStatus.getValues().getState(), autopilotStatus.getValues().getReason()); } } @@ -546,7 +563,6 @@ public class MogoADASController implements IMogoADASController { } try { - //AutopilotServiceManage.getInstance().showAdas(); adasProvider.showAdas(); } catch (Exception e) { Intent intent = new Intent(ACTION); @@ -570,7 +586,6 @@ public class MogoADASController implements IMogoADASController { Logger.d(TAG, "close adas"); try { - //AutopilotServiceManage.getInstance().hideAdas(); adasProvider.hideAdas(); } catch (Exception e) { Intent intent = new Intent(ACTION); @@ -600,7 +615,6 @@ public class MogoADASController implements IMogoADASController { @Override public void init(Context context) { - //AutopilotServiceManage.getInstance().init(context); mIsReleased = false; mAdasMessageFactory = new MyMessageFactory(); adasProvider = ARouter.getInstance().navigation(AdasProvider.class); @@ -609,13 +623,11 @@ public class MogoADASController implements IMogoADASController { @Override public void setSettingStatus(boolean show) { - //AutopilotServiceManage.getInstance().setSettingStatus(show); adasProvider.setSettingStatus(show); } @Override public void setUseAlgorithm(boolean open) { - //AutopilotServiceManage.getInstance().setUseAlgorithm(open); adasProvider.setUseAlgorithm(open); } @@ -687,7 +699,6 @@ public class MogoADASController implements IMogoADASController { AdasControlCommandParameter parameter = new AdasControlCommandParameter(action, result); //位置信息 action是aiCloudToStartAutopilot try { - //AutopilotServiceManage.getInstance().aiCloudToAdasData(GsonUtil.jsonFromObject(parameter)); adasProvider.sendWsMessage(GsonUtil.jsonFromObject(parameter)); } catch (Exception e) { e.printStackTrace(); @@ -710,7 +721,6 @@ public class MogoADASController implements IMogoADASController { String value = GsonUtil.jsonFromObject(o.getResult()); SharedPrefsMgr.getInstance(context).putString("CAR_MODEL_LIST", value); if (value != null && !value.isEmpty()) { - //AutopilotServiceManage.getInstance().settingCarModelListInfo(value); adasProvider.settingCarModelListInfo(value); } } @@ -733,7 +743,6 @@ public class MogoADASController implements IMogoADASController { @Override public void release() { mIsReleased = true; - //AutopilotServiceManage.getInstance().unRegisterAutopilotDataListener( mAutopolitDataCallBack ); adasProvider.removeAdasEventListener(mAdasDataListener); adasProvider.removeAdasStatusListener(); //AutopilotServiceManage.getInstance().release(); @@ -812,6 +821,24 @@ public class MogoADASController implements IMogoADASController { mMogoAdasRecognizedDataCallbacks.remove(callback); } + @Override + public void addAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack) { + if (callBack == null) { + return; + } + if (!mMogoAdasRouteCallBacks.contains(callBack)) { + mMogoAdasRouteCallBacks.add(callBack); + } + } + + @Override + public void removeAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack) { + if (callBack == null) { + return; + } + mMogoAdasRouteCallBacks.remove(callBack); + } + @Override public void setAdasCarDataCallback(IMogoAdasCarDataCallback carDataCallback) { mMogoAdasCarDataCallback = carDataCallback; @@ -846,7 +873,6 @@ public class MogoADASController implements IMogoADASController { } int status = IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE; try { - //status = AutopilotServiceManage.getInstance().autopilotStateCall().getState(); status = adasProvider.autopilotStateCall().getState(); } catch (Exception e) { e.printStackTrace(); @@ -872,12 +898,7 @@ public class MogoADASController implements IMogoADASController { @Override public void cancelAutopilot() { - //try { - //AutopilotServiceManage.getInstance().cancelAutopilot(); - adasProvider.cancelPilot(); - //} catch (RemoteException e) { - // e.printStackTrace(); - //} + adasProvider.cancelPilot(); } @Override