From 8a859625f64655e0128d2a434a614be8bbe5f9e1 Mon Sep 17 00:00:00 2001 From: suyong Date: Tue, 1 Jun 2021 16:01:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- modules/mogo-module-adas/build.gradle | 2 +- .../com/mogo/module/adas/AdasConstant.java | 8 +- .../mogo/module/adas/AdasEventManager.java | 106 ++++++++++++++++-- .../adas/AutonomousDriveStatusBean.java | 38 ++++++- .../com/mogo/module/adas/IAdasApiService.java | 21 +++- .../com/mogo/module/adas/ReportSiteBean.java | 37 +++++- 7 files changed, 201 insertions(+), 13 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 733acb1920..09cc32c567 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-adas/build.gradle b/modules/mogo-module-adas/build.gradle index cea9d8ac5c..dd802e716d 100644 --- a/modules/mogo-module-adas/build.gradle +++ b/modules/mogo-module-adas/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter - + implementation rootProject.ext.dependencies.rxandroid annotationProcessor rootProject.ext.dependencies.aroutercompiler diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java index eb9ba9e8ef..3bff73bac8 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java @@ -1,5 +1,11 @@ package com.mogo.module.adas; + /** * Created by XuYong on 2021/5/28 15:24 - */public class AdasConstant { + */ +public class AdasConstant { + public static final String HOST_DEV = "http://dzt-test.zhidaohulian.com"; + public static final String HOST_TEST = "http://dzt-test.zhidaohulian.com"; + public static final String HOST_DEMO = "http://dzt-show.zhidaohulian.com"; + public static final String HOST_PRODUCT = "https://dzt.zhidaohulian.com"; } 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 c8b768b081..babc4987fe 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,12 @@ package com.mogo.module.adas; import com.google.gson.Gson; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.commons.data.BaseData; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.module.common.MogoApisHandler; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; @@ -18,6 +23,18 @@ import com.zhidao.support.adas.high.bean.WarnMessageInfo; import com.zhidao.support.adas.high.common.MsgActionType; import java.util.ArrayList; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Flowable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import static com.mogo.commons.context.ContextHolderUtil.getContext; /** * Created by XuYong on 2021/4/25 14:43 @@ -25,14 +42,20 @@ import java.util.ArrayList; public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener { private final String TAG = "AdasEventManager"; - private final Gson gson; - private final ArrayList iAdasEventListeners = new ArrayList<>(); private final ArrayList iAdasStatusListeners = new ArrayList<>(); + private IAdasApiService mAdasApiService; + private Disposable uploadAutopilotStatus; + //自动驾驶状态 + private int mCurrentAutopilotStatus = -1; + //自动驾驶车速度 + private float mCurrentAutopilotSpeed = 0; + private Disposable mdDisposable; public AdasEventManager() { gson = GsonUtil.getGson(); + mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create( IAdasApiService.class, AdasConstant.HOST_PRODUCT ); } public void addEventListener(AdasDataListener listener) { @@ -145,7 +168,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues(); AutopilotStatus.ValuesBean mAutopilotStatus; - if (autopilotStatusValues != null) { AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel(); adasAIDLAutopilotStateModel.setReason(autopilotStatusValues.getReason()); @@ -154,14 +176,15 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL float speed = autopilotStatusValues.getSpeed(); adasAIDLAutopilotStateModel.setState(state); adasAIDLAutopilotStateModel.setSpeed(speed); - + mCurrentAutopilotStatus = state; + mCurrentAutopilotSpeed = speed; for (AdasDataListener listener:iAdasEventListeners) { if (listener != null) { listener.notifyAutopilotState(adasAIDLAutopilotStateModel); } } - } + } } @Override @@ -174,8 +197,12 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL if (endLatLon != null) { AdasAIDLAutopilotArriveModel adasAIDLAutopilotArriveModel = new AdasAIDLAutopilotArriveModel(); adasAIDLAutopilotArriveModel.setCarType(result.getCarType()); - adasAIDLAutopilotArriveModel.setLat(endLatLon.getLat()); - adasAIDLAutopilotArriveModel.setLon(endLatLon.getLon()); + double lon = endLatLon.getLon(); + double lat = endLatLon.getLat(); + adasAIDLAutopilotArriveModel.setLat(lat); + adasAIDLAutopilotArriveModel.setLon(lon); + Logger.d(TAG,"autopilotArrive reportSite"); + reportSite(lon, lat); for (AdasDataListener listener:iAdasEventListeners) { if (listener != null) { listener.autopilotArrive(adasAIDLAutopilotArriveModel); @@ -197,6 +224,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL for (AdasStatusListener listener :iAdasStatusListeners) { listener.onServiceConnected(); } + updateDriveStatusTask(); } @Override @@ -206,4 +234,68 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL listener.onServiceDisconnected(); } } + + public void updateDriveStatusTask() { + Logger.d(TAG,"updateDriveStatusTask"); + mdDisposable = Flowable.interval(0,5, TimeUnit.SECONDS) + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(@NonNull Long aLong) throws Exception { + updateDriveStatus(); + } + }); + } + + 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 ) ); + 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() ) + .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"); + } + }); + } } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java index 4726d0c02e..686ae78eb0 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java @@ -1,5 +1,41 @@ package com.mogo.module.adas; + /** * Created by XuYong on 2021/5/28 16:12 - */public class AutonomousDriveStatusBean { + */ +public class AutonomousDriveStatusBean { + + private String sn; + private int status; + private float vehicleSpeed; + + public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) { + this.sn = sn; + this.status = status; + this.vehicleSpeed = vehicleSpeed; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public float getVehicleSpeed() { + return vehicleSpeed; + } + + public void setVehicleSpeed(float vehicleSpeed) { + this.vehicleSpeed = vehicleSpeed; + } } 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 index 4330f5ab6b..d1c58c2da9 100644 --- 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 @@ -1,5 +1,24 @@ 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 class IAdasApiService { + */ +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/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java index 470626a678..76677e00ba 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java @@ -1,5 +1,40 @@ package com.mogo.module.adas; + /** * Created by XuYong on 2021/5/31 16:24 - */public class ReportSiteBean { + */ +public class ReportSiteBean { + private String sn; + private double lon; + private double lat; + + public ReportSiteBean(String sn, double lon, double lat) { + this.sn = sn; + this.lon = lon; + this.lat = lat; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } }