From 8a3ee2fa0f44d8849b9ede99458548e24d6367f7 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Thu, 24 Jun 2021 15:18:12 +0800 Subject: [PATCH 1/7] opt --- .../java/com/mogo/och/bus/fragment/OchBusFragment.java | 3 ++- .../com/mogo/och/bus/presenter/OchBusPresenter.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java index 2e7387d844..bc38972400 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java @@ -101,6 +101,7 @@ public class OchBusFragment extends BaseOchFragment< OchBusFragment, OchBusPrese getActivity().runOnUiThread( () -> { if ( stationList == null ) { // 获取小巴数据失败 + Logger.e("liyz", " stationList == null "); return; } @@ -163,7 +164,7 @@ public class OchBusFragment extends BaseOchFragment< OchBusFragment, OchBusPrese } else if ( isArriveAtStation ) { showSlidePanle( "滑动出发" ); } - + Logger.d("liyz", "renderCurrentStationStatus -----> "); mCurrentStationName.setText( currentStationName ); mNextStationName.setText( nextStationName ); mStartStationFlag.setVisibility( startStationFlagVisibility ); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java index e81b2a7bf5..78a2a38e33 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java @@ -3,6 +3,7 @@ package com.mogo.och.bus.presenter; import android.os.Handler; import android.os.Message; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; @@ -94,6 +95,8 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); + Log.d(TAG, "onCreate ------> "); + Log.d("liyz", "onCreate ------> "); queryOperationStatus(); queryBusRoutes(); } @@ -103,6 +106,7 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog */ public void queryBusRoutes() { Logger.d( TAG, "查询小巴路线"); + Logger.d( "liyz", "查询小巴路线------->"); double lat = 40.1974932972; double lon = 116.7354579447; @@ -118,13 +122,16 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog @Override public void onSuccess( OchBusRoutesResponse o ) { super.onSuccess( o ); + Logger.d( "liyz", "-----1-------- o =" + o); if ( o == null || o.getResult() == null || o.getResult().getSite() == null || o.getResult().getSite().isEmpty() ) { + Logger.e( "liyz", "-----2-------- "); return; } Logger.d( TAG, "获取到小巴路线数据: " + o ); + Logger.d( "liyz", "获取到小巴路线数据: " + o ); renderBusStationsStatus( o.getResult().getSite() ); } @@ -132,6 +139,7 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog public void onError( Throwable e ) { super.onError( e ); Logger.e( TAG, e, "获取小巴路线图失败" ); + Logger.d( "liyz", "获取小巴路线图失败 "); // 重复请求小巴路线,直至成功 queryBusStationDelay(); } @@ -140,6 +148,7 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog public void onError( String message, int code ) { super.onError( message, code ); Logger.e( TAG, "获取小巴路线失败 code: " + code + " msg: " + message ); + Logger.e( "liyz", "获取小巴路线失败 code: " + code + " msg: " + message ); // 重复请求小巴路线,直至成功 queryBusStationDelay(); } @@ -153,6 +162,7 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog */ private void renderBusStationsStatus( List< OchBusStation > site ) { Logger.d( TAG, "渲染站点信息"); + Logger.e( "liyz", "渲染站点信息"); int lastStopStation = getNextStopStation(); From e196b639b457dd2fbfa170399cdecd840bd1a5a7 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Sun, 27 Jun 2021 18:32:23 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6=20=E6=9C=AA?= =?UTF-8?q?=E5=87=BA=E8=BD=A6=E7=8A=B6=E6=80=81=E4=B8=8B=20=E4=B8=8D?= =?UTF-8?q?=E5=A4=84=E7=90=86=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 1a59d6bc6b..9b05c3debd 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 @@ -104,7 +104,7 @@ class MogoOCHTaxiModel { */ private int mRetryCounter = 0; - private int mOCHRHCarstatus = -1; + private int mOCHRHCarstatus = -1; // 1 已出车 private Object readResolve() { // 阻止反序列化,必须实现 Serializable 接口 @@ -547,6 +547,9 @@ class MogoOCHTaxiModel { if ( obj == null ) { return; } + if (mOCHRHCarstatus != 1){ + return; + } Logger.d( TAG, "收到新订单" + GsonUtil.jsonFromObject(obj)); mCurrentOCHOrder = obj; cacheOrderInfo2Native( mCurrentOCHOrder ); @@ -615,6 +618,9 @@ class MogoOCHTaxiModel { if ( obj == null ) { return; } + if (mOCHRHCarstatus != 1){ + return; + } Logger.d(TAG, "订单状态被改变:" + GsonUtil.jsonFromObject(obj)); OCHOrderStatus status = OCHOrderStatus.valueOf( obj.orderDispatchType ); switch ( status ) { From 604a2b78c5a81f15736345d1a7e9fa0ff25e0856 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 28 Jun 2021 12:11:42 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6=20=20=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E4=BB=A3=E7=A0=81=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/taxi/MogoOCHTaxiModel.java | 2 +- .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 21 +++++++++++++++++++ .../com/mogo/launcher/MogoApplication.java | 3 ++- gradle.properties | 16 +++++++------- 4 files changed, 32 insertions(+), 10 deletions(-) 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 9b05c3debd..6c810c2c62 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 @@ -104,7 +104,7 @@ class MogoOCHTaxiModel { */ private int mRetryCounter = 0; - private int mOCHRHCarstatus = -1; // 1 已出车 + private int mOCHRHCarstatus = -1; private Object readResolve() { // 阻止反序列化,必须实现 Serializable 接口 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 80f6fe0319..f1186035bd 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 @@ -22,6 +22,7 @@ import com.mogo.och.taxi.OCHOrderStatusCallback; import com.mogo.och.taxi.R; import com.mogo.och.view.SlidePanelView; import com.mogo.service.adas.IMogoAdasOCHCallback; +import com.mogo.service.adas.entity.AdasOCHData; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; @@ -38,6 +39,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i IMogoOCHTaxiArriveCallback, IMogoADASAutoPilotStatusChangedListener, IOperationChangedListener, + IMogoAdasOCHCallback, IMogoCarLocationChangedListener2 { public static final String TAG = "OCHTaxiFragment"; @@ -416,4 +418,23 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i updateOrderStatus(); }); } + + @Override + public void onArriveAt(AdasOCHData data) { + + } + + @Override + public void onStateChanged(int state, String reason) { + Logger.d( TAG, "onStateChange: " + state ); + switch ( state ) { + case IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE: + hideSlidePanel(); + break; + case IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING: + break; + default: + break; + } + } } diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 453037681a..debd99d75f 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -177,7 +177,8 @@ public class MogoApplication extends AbsMogoApplication { break; } // 设置应用服务AppId 长链、鉴权 - clientConfig.setServiceAppId("com.mogo.launcher"); +// clientConfig.setServiceAppId("com.mogo.launcher"); + clientConfig.setServiceAppId("com_mogo_launcher"); // 设置AI云平台分配给三方应用的签名密钥,需要从AI云平台申请 // 设置车机设备的唯一标识(这些表识必须是通过后台录入的设备) clientConfig.setThirdPartyDeviceId(Utils.getDevicesId()); diff --git a/gradle.properties b/gradle.properties index 329e09eb91..1003097316 100644 --- a/gradle.properties +++ b/gradle.properties @@ -158,19 +158,19 @@ LOGLIB_VERSION = 1.0.4 ######## MogoAiCloudSDK Version # 网络请求 -MOGO_NETWORK_VERSION=1.1.15 +MOGO_NETWORK_VERSION=1.1.18 # 鉴权 -MOGO_PASSPORT_VERSION=1.1.15 +MOGO_PASSPORT_VERSION=1.1.18 # 常链接 -MOGO_SOCKET_VERSION=1.1.15 +MOGO_SOCKET_VERSION=1.1.18 # 数据采集 -MOGO_REALTIME_VERSION=1.1.15 +MOGO_REALTIME_VERSION=1.1.18 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.1.15 +MOGO_TANLU_VERSION=1.1.18 # 直播推流 -MOGO_LIVE_VERSION=1.1.15 +MOGO_LIVE_VERSION=1.1.18 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.1.15 +MOGO_TRAFFICLIVE_VERSION=1.1.18 #ADAS HIGHT MOGO_ADASHIGH_VERSION=1.1.3 @@ -187,4 +187,4 @@ applicationId=com.mogo.launcer applicationName=IntelligentPilot versionCode=80007 versionName=8.0.7 -MAP_SDK_VERSION=1.0.0-vr-8.5.53 \ No newline at end of file +MAP_SDK_VERSION=1.0.0-vr-8.5.55 \ No newline at end of file From e8e39e9e695e1f7c0290c8c8c37ead6cc4632495 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 24 Jun 2021 12:18:57 +0800 Subject: [PATCH 4/7] =?UTF-8?q?taxi=20=E8=87=AA=E5=8A=A8=E9=A9=BE=E9=A9=B6?= =?UTF-8?q?=E7=94=BB=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/mogo-och-taxi/build.gradle | 1 + .../com/mogo/och/taxi/MogoOCHTaxiModel.java | 3 +- .../mogo/och/taxi/OCHTaxiOverlayManager.java | 72 +++++++++++ .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 39 +++++- .../java/com/mogo/och/BaseOchFragment.java | 37 ++++-- .../amap/utils/CoordinateConvertUtils.java | 31 +++++ .../common/utils/DrivingDirectionUtils.java | 121 ++++++++++++++++++ .../module/common/utils/LocationUtils.java | 45 +++++++ .../service/adas/IMogoAdasRouteCallBack.java | 10 ++ 9 files changed, 344 insertions(+), 15 deletions(-) create mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java create mode 100644 libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/CoordinateConvertUtils.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/DrivingDirectionUtils.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/LocationUtils.java create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasRouteCallBack.java diff --git a/OCH/mogo-och-taxi/build.gradle b/OCH/mogo-och-taxi/build.gradle index 8a55d2b6af..024a5e102d 100644 --- a/OCH/mogo-och-taxi/build.gradle +++ b/OCH/mogo-och-taxi/build.gradle @@ -38,6 +38,7 @@ dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.arouter + implementation project(path: ':libraries:map-amap') annotationProcessor rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.androidxconstraintlayout 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 6c810c2c62..2f94447ea3 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 @@ -12,11 +12,13 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.SubscribeImpl; import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.HostConst; import com.mogo.och.taxi.ui.OCHTaxiUiController; import com.mogo.service.adas.IMogoAdasOCHCallback; +import com.mogo.service.adas.IMogoAdasRouteCallBack; import com.mogo.service.adas.RemoteControlAutoPilotParameters; import com.mogo.service.adas.entity.AdasOCHData; import com.mogo.service.connection.IMogoOnMessageListener; @@ -78,7 +80,6 @@ class MogoOCHTaxiModel { private OCHTaxiOrderResponse mCurrentOCHOrder; private OCHArriveNotifyCallback mNotifyCallback; private IMogoCarLocationChangedListener2 mCarLocationChangedListener2; - /** * 是否达到起始站点 */ diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java new file mode 100644 index 0000000000..a808d35cbd --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOverlayManager.java @@ -0,0 +1,72 @@ +package com.mogo.och.taxi; + +import android.content.Context; + +import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; +import com.mogo.map.overlay.IMogoOverlayManager; +import com.mogo.map.overlay.IMogoPolyline; +import com.mogo.map.overlay.MogoPolylineOptions; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.utils.LocationUtils; +import com.mogo.utils.ColorUtils; + +import java.util.ArrayList; +import java.util.List; + +public class OCHTaxiOverlayManager { + + + private IMogoPolyline mMoGoPolyline; + // 连接线参数 + private MogoPolylineOptions mPolylineOptions; + // 线路径集合 + private List mPolylinePointList; + // 渐变色 + private List mPolylineColors; + private Context mContext; + IMogoOverlayManager mogoOverlayManager; + public OCHTaxiOverlayManager(Context context) { + mPolylineOptions = new MogoPolylineOptions(); + // 绘制路径集合 + mPolylinePointList = new ArrayList<>(); + // 引导线颜色 + mPolylineColors = new ArrayList<>(); + mContext = context; + mogoOverlayManager = MogoApisHandler.getInstance().getApis().getMapServiceApi().getOverlayManager(mContext); + } + + /** + * 绘制最优路线 + * + * @param polylinePoint 要绘制的经纬度度集合 + */ + public IMogoPolyline draw(MogoLocation carLocal, List polylinePoint) { + if (mMoGoPolyline != null) { + mMoGoPolyline.remove(); + mPolylinePointList.clear(); + mPolylineColors.clear(); + } + if (polylinePoint != null) { + + // 将当前车辆位置放进去 + mPolylinePointList.add(new MogoLatLng(carLocal.getLatitude(), carLocal.getLongitude())); + // 过滤后台推送的推荐路线集合 + for (MogoLatLng polyline : polylinePoint) { + //需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃 + if (LocationUtils.isPointOnCarFront(carLocal, polyline)) { + mPolylinePointList.add(polyline); + } + } + mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size())); + // 替换路径集合 + mPolylineOptions.points(mPolylinePointList); + // 线条粗细,渐变,渐变色值 + mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors); + // 绘制线 + mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions); + } + return mMoGoPolyline; + } + +} 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 f1186035bd..787af473be 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 @@ -10,7 +10,9 @@ import androidx.annotation.NonNull; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener2; +import com.mogo.map.overlay.MogoPolylineOptions; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.BaseOchFragment; import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; @@ -19,14 +21,17 @@ import com.mogo.och.taxi.IOperationChangedListener; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.och.taxi.OCHOrderStatus; import com.mogo.och.taxi.OCHOrderStatusCallback; +import com.mogo.och.taxi.OCHTaxiOverlayManager; import com.mogo.och.taxi.R; import com.mogo.och.view.SlidePanelView; import com.mogo.service.adas.IMogoAdasOCHCallback; -import com.mogo.service.adas.entity.AdasOCHData; +import com.mogo.service.adas.IMogoAdasRouteCallBack; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; +import java.util.List; + public /** * @author congtaowang @@ -39,6 +44,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i IMogoOCHTaxiArriveCallback, IMogoADASAutoPilotStatusChangedListener, IOperationChangedListener, + IMogoAdasRouteCallBack, IMogoAdasOCHCallback, IMogoCarLocationChangedListener2 { @@ -57,6 +63,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i private TextView mStartStationName; private TextView mEndStationName; private TextView mDistance; + + private MogoPolylineOptions mogoPolylineOptions; @Override public int getStationPanelViewId() { return R.layout.module_och_taxi_panel; @@ -82,7 +90,6 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i // showPanel(); hidPanel(); initListeners(); - // TODO: 2021/6/18 调整接口刷新时间 // updateOrderStatus(); if ( MogoApisHandler.getInstance() .getApis() @@ -108,6 +115,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .getApis() .getRegisterCenterApi() .registerCarLocationChangedListener( TAG, this ); + MogoApisHandler.getInstance().getApis().getAdasControllerApi().addAdasAutopilotRouteCallBack(this); } @NonNull @@ -348,12 +356,24 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } private Location mLocation; - + private MogoLocation mogoLocation; @Override public void onCarLocationChanged2( Location location ) { OCHTaxiUiController.getInstance().runOnUIThread( () -> { calculateTravelDistance( location ); } ); + + //坐标转换 + MogoLocation loc = new MogoLocation(); + loc.setTime(loc.getTime()); + loc.setAccuracy(location.getAccuracy()); + loc.setSpeed(location.getSpeed()); + loc.setLongitude(location.getLongitude()); + loc.setLatitude(location.getLatitude()); + loc.setAltitude(location.getAltitude()); + loc.setBearing(location.getBearing()); + loc.setProvider(location.getProvider()); + mogoLocation = loc; } /** @@ -418,6 +438,19 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i updateOrderStatus(); }); } + private OCHTaxiOverlayManager ochTaxiOverlayManager; + @Override + public void routeResult(List routeList) { + Logger.d("lianglihui","routeResult"); + if (routeList != null && routeList.size() >0){ + Logger.d("lianglihui","routeResult:"+routeList.size()); + //adas回调导航路径 绘制引导线 + if ( ochTaxiOverlayManager == null){ + ochTaxiOverlayManager = new OCHTaxiOverlayManager(this.getContext()); + } + ochTaxiOverlayManager.draw(mogoLocation,routeList); + } + } @Override public void onArriveAt(AdasOCHData data) { 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 dd59c7c84a..9e07b68e89 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 @@ -92,34 +92,49 @@ public abstract class BaseOchFragment> e // 模拟 不可自动驾驶,目前场景是刚开机,adas还未和工控机连接 findViewById(R.id.btnAutopilotDisable).setOnClickListener(view -> - MogoApisHandler.getInstance().getApis() - .getAdasControllerApi() - .mockOchStatus(IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE, "不能使用") + { + MogoApisHandler.getInstance().getApis() + .getAdasControllerApi() + .mockOchStatus(IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE, "不能使用"); + Logger.d("lianglihui","模拟 不可自动驾驶"); + } ); // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> - MogoApisHandler.getInstance().getApis() - .getAdasControllerApi() - .mockOchStatus(IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE, "能使用") + { + MogoApisHandler.getInstance().getApis() + .getAdasControllerApi() + .mockOchStatus(IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE, "能使用"); + + Logger.d("lianglihui","模拟 可自动驾驶"); + } ); // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人 findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> - MogoApisHandler.getInstance().getApis() - .getAdasControllerApi() - .mockOchStatus(IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "Running") + { + MogoApisHandler.getInstance().getApis() + .getAdasControllerApi() + .mockOchStatus(IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "Running"); + Logger.d("lianglihui","模拟 自动驾驶能力"); + } ); // 模拟 自动驾驶站 findViewById(R.id.btnAutopilotArrive).setOnClickListener(view -> - MogoApisHandler.getInstance().getApis() - .getAdasControllerApi().mockOchStatus(-1, "Arrived") + { + MogoApisHandler.getInstance().getApis() + .getAdasControllerApi().mockOchStatus(-1, "Arrived"); + + Logger.d("lianglihui","模拟 自动驾驶站"); + } ); // 模拟 站点下发工控 findViewById(R.id.btnAutopilotControl).setOnClickListener(view -> { + Logger.d("lianglihui","模拟 站点下发工控"); RemoteControlAutoPilotParameters currentAutopilot = new RemoteControlAutoPilotParameters(); currentAutopilot.isSpeakVoice = true; // 万集东门站 diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/CoordinateConvertUtils.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/CoordinateConvertUtils.java new file mode 100644 index 0000000000..c77e1ca6c8 --- /dev/null +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/CoordinateConvertUtils.java @@ -0,0 +1,31 @@ +package com.mogo.map.impl.amap.utils; + +import android.content.Context; + +import com.amap.api.maps.CoordinateConverter; +import com.amap.api.maps.model.LatLng; +import com.mogo.map.MogoLatLng; + +import java.util.ArrayList; +import java.util.List; + +public class CoordinateConvertUtils { + + public static MogoLatLng CoordinateConverterFrom84(Context mContext, MogoLatLng mogoLatLng){ + CoordinateConverter mCoordinateConverter = new CoordinateConverter(mContext); + mCoordinateConverter.from(CoordinateConverter.CoordType.GPS); + mCoordinateConverter.coord(new LatLng(mogoLatLng.lat,mogoLatLng.lon)); + LatLng latLng = mCoordinateConverter.convert(); + return new MogoLatLng(latLng.latitude,latLng.longitude); + } + + public static List CoordinateConverterFrom84ForList(Context mContext, List mogoLatLngList){ + + List list = new ArrayList<>(); + for (MogoLatLng m:mogoLatLngList) { + MogoLatLng mogoLatLng = CoordinateConverterFrom84(mContext,m); + list.add(mogoLatLng); + } + return list; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/DrivingDirectionUtils.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/DrivingDirectionUtils.java new file mode 100644 index 0000000000..9974cb2b13 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/DrivingDirectionUtils.java @@ -0,0 +1,121 @@ +package com.mogo.module.common.utils; + +import static java.lang.Math.PI; + +/** + * author : donghongyu + * e-mail : 1358506549@qq.com + * date : 2020/4/14 1:02 PM + * desc : 计算车辆驾驶方向的工具类 + * version: 1.0 + */ +public class DrivingDirectionUtils { + + /** + * 计算车辆行驶方向 与 poi点到车辆的连线 间的夹角 + * + * @param carLon 车辆位置 lon + * @param carLat 车辆位置 lat + * @param poiLon poi 位置 lon + * @param poiLat poi 位置 lat + * @param carAngle 车辆行驶方向 + * @return + */ + public static int getDegreeOfCar2Poi(double carLon, double carLat, double poiLon, double poiLat, int carAngle) { + int poiAngle = 0; + // 以子午线作为y轴 计算两点的余切 再将余切值转化为角度 + double _angle = Math.atan2(Math.abs(carLon - poiLon), Math.abs(carLat - poiLat)) * (180 / PI); + //Log.w(MODULE_NAME, "getDegreeOfCar2Poi_计算车辆行驶方向 与 poi点到车辆的连线 间的夹角_angle===" + _angle); + if (poiLon > carLon) { + // poi 在 车辆位置的第1象限 + if (poiLat > carLat) { + poiAngle = (int) _angle; + } + // poi 在 车辆位置的第2象限 + else { + poiAngle = 180 - (int) _angle; + } + } else { + // poi 在 车辆位置的第3象限 + if (poiLat < carLat) { + poiAngle = (int) _angle + 180; + } + // poi 在 车辆位置的第4象限 + else { + poiAngle = 360 - (int) _angle; + } + } + return calculationAngle(poiAngle, carAngle); + } + + /** + * 计算两个行驶方向间的夹角 计算结果小于180度 + * + * @param angle0 + * @param angle1 + * @return + */ + public static int calculationAngle(int angle0, int angle1) { + // 获取两方向间夹角 + int angle = Math.abs(angle0 - angle1); + if (angle > 180) { + int minAngle = Math.min(angle0, angle1); + int maxAngle = Math.max(angle0, angle1); + return 180 - Math.abs(minAngle + 180 - maxAngle); + } else { + return angle; + } + } + + /** + * 计算车辆行驶方向角度,起点&终点经纬度 + * + * @param carLat 车辆位置 lat + * @param carLon 车辆位置 lon + * @param poiLat poi 位置 lat + * @param poiLon poi 位置 lon + */ + public static int getCarAngle(double carLat, double carLon, double poiLat, double poiLon) { + int poiAngle = 0; + // 以子午线作为y轴 计算两点的余切 再将余切值转化为角度 + double _angle = Math.atan2(Math.abs(carLon - poiLon), Math.abs(carLat - poiLat)) * (180 / PI); + + if (poiLon > carLon) { + // poi 在 车辆位置的第1象限 + if (poiLat > carLat) { + poiAngle = (int) _angle; + } + // poi 在 车辆位置的第2象限 + else { + poiAngle = 180 - (int) _angle; + } + } else { + // poi 在 车辆位置的第3象限 + if (poiLat < carLat) { + poiAngle = (int) _angle + 180; + } + // poi 在 车辆位置的第4象限 + else { + poiAngle = 360 - (int) _angle; + } + } + + if (poiAngle >= 355) { + poiAngle = 0; + } + return poiAngle; + } + + /** + * 计算连两个角度差值 + * + * @param angle1 角度1 + * @param angle2 角度2 + * @return 差值 + */ + public static double getAngleDiff(double angle1, double angle2) { + // 两个角度差值较小 + return 180 - Math.abs(Math.abs(angle1 - angle2) - 180); + } + +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/LocationUtils.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/LocationUtils.java new file mode 100644 index 0000000000..3987281102 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/utils/LocationUtils.java @@ -0,0 +1,45 @@ +package com.mogo.module.common.utils; + +import android.location.Location; +import android.util.Log; + +import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; + + +/** + * author : donghongyu + * e-mail : 1358506549@qq.com + * date : 2020/5/15 10:31 AM + * desc : 基于位置工具类 + * version: 1.0 + */ +public class LocationUtils { + private static final String TAG = "LocationUtils"; + + + /** + * 获取传入的经纬度在车辆的什么位置 + * + * @return 顺时针,true-前,false-后 + */ + public static boolean isPointOnCarFront(MogoLocation carLocal, MogoLatLng pointLocal) { + double carLon = carLocal.getLongitude(); + double carLat = carLocal.getLatitude(); + double poiLon = pointLocal.getLon(); + double poiLat = pointLocal.getLat(); + float carAngle = carLocal.getBearing(); + + // 计算车辆与点之间的夹角 + int diffAngle = DrivingDirectionUtils.getDegreeOfCar2Poi( + carLon, carLat, poiLon, poiLat, (int) carAngle); + + if (diffAngle <= 90) { + Log.i(TAG, "目标点在车辆--前方"); + return true; + } else { + Log.i(TAG, "目标点在车辆--后方"); + return false; + } + } +} 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..97bdfa6769 --- /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 { + // TODO: 2021/6/23 工控机经纬度 绘制时转成高德经纬度 + void routeResult(List routeList); +} From 87fd832301d0a491b2fd615807b913c6730c24c9 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 28 Jun 2021 14:42:21 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6=201.=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E8=AE=A1=E7=AE=97=E5=89=A9=E4=BD=99=E8=B7=AF=E7=A8=8B?= =?UTF-8?q?=202.=E5=88=B0=E7=AB=99=E5=A2=9E=E5=8A=A0tts=E6=92=AD=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 64 ++++++++++++++++--- .../service/adas/IMogoADASController.java | 17 +++++ 2 files changed, 72 insertions(+), 9 deletions(-) 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 787af473be..fb689f53d3 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 @@ -8,12 +8,15 @@ import android.widget.TextView; import androidx.annotation.NonNull; import com.mogo.cloud.commons.utils.CoordinateUtils; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.commons.network.SubscribeImpl; import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.overlay.MogoPolylineOptions; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.utils.LocationUtils; import com.mogo.och.BaseOchFragment; import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; @@ -26,12 +29,21 @@ import com.mogo.och.taxi.R; import com.mogo.och.view.SlidePanelView; import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.adas.IMogoAdasRouteCallBack; +import com.mogo.service.adas.entity.AdasOCHData; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; +import com.mogo.utils.network.utils.GsonUtil; +import java.util.ArrayList; import java.util.List; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + public /** * @author congtaowang @@ -441,20 +453,54 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i private OCHTaxiOverlayManager ochTaxiOverlayManager; @Override public void routeResult(List routeList) { - Logger.d("lianglihui","routeResult"); - if (routeList != null && routeList.size() >0){ - Logger.d("lianglihui","routeResult:"+routeList.size()); - //adas回调导航路径 绘制引导线 - if ( ochTaxiOverlayManager == null){ - ochTaxiOverlayManager = new OCHTaxiOverlayManager(this.getContext()); - } - ochTaxiOverlayManager.draw(mogoLocation,routeList); + if (routeList == null ) return; + double distance = calculateTravelDistance(mogoLocation,routeList); + if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { + MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().decreaseTravelDistance( distance ); + updateOrderBaseStatusInfo(); } + Logger.d("lianglihui","routeResult 剩余导航距离:"+distance); +// if (routeList != null && routeList.size() >0){ +// Logger.d("lianglihui","routeResult:"+routeList.size()); +// //adas回调导航路径 绘制引导线 +// if ( ochTaxiOverlayManager == null){ +// ochTaxiOverlayManager = new OCHTaxiOverlayManager(this.getContext()); +// } +// ochTaxiOverlayManager.draw(mogoLocation,routeList); +// } + } + + public double calculateTravelDistance(MogoLocation carLocation,List routeList){ + List mPolylinePointList = new ArrayList<>(); + mPolylinePointList.add(new MogoLatLng(carLocation.getLatitude(), carLocation.getLongitude())); + MogoLatLng routeLatLng; + for (int i = 0 ; i< routeList.size() ; i++) { + routeLatLng =routeList.get(i); + //需要剔除已经行驶过的经纬度,这里需要比对推荐路线集合中的点是否在当前车辆行驶方向前面如果不在则抛弃 + if (LocationUtils.isPointOnCarFront(carLocation, routeLatLng)) { + mPolylinePointList.add(routeLatLng); + } + } + MogoLatLng routeLatLng1,routeLatLng2; + double distance = 0; + for (int i = 0; i < mPolylinePointList.size() ; i ++){ + if (i < mPolylinePointList.size() -1 ){ + routeLatLng1 = mPolylinePointList.get(i); + routeLatLng2 = mPolylinePointList.get(i+1); + distance += CoordinateUtils.calculateLineDistance( + routeLatLng1.getLon(), routeLatLng1.getLat(), + routeLatLng2.getLon(), routeLatLng2.getLat() + ); + } + } + return distance; } @Override public void onArriveAt(AdasOCHData data) { - + Logger.d( TAG, "行程结束"); + MogoApisHandler.getInstance().getApis().getAdasControllerApi().cancelAutopilot(); + AIAssist.getInstance( getContext() ).speakTTSVoice( "即将到达目的地,请您携带好随身物品,安全下车。" ); } @Override 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..cac11a6ba0 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,23 @@ public interface IMogoADASController extends IProvider { */ void removeAdasRecognizedDataCallback(IMogoAdasRecognizedDataCallback callback); + /** + * 添加adas自动驾驶路线回调 + * @param callBack + */ + void addAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack); + + /** + * 移除adas自动驾驶路线回调 + * @param callBack + */ + void removeAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack); + + /** + * 查询自动驾驶路线 + */ + void queryAutopilotRoute(); + /** * 自车定位数据 * From a80ff65cfdf80ae37ab2fac6bc44cdd0bdebe434 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 28 Jun 2021 15:02:44 +0800 Subject: [PATCH 6/7] custommap sdkversion update --- gradle.properties | 2 +- libraries/map-custom/map-version-update | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1003097316..94d2bc5f5a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -187,4 +187,4 @@ applicationId=com.mogo.launcer applicationName=IntelligentPilot versionCode=80007 versionName=8.0.7 -MAP_SDK_VERSION=1.0.0-vr-8.5.55 \ No newline at end of file +MAP_SDK_VERSION=1.0.0-vr-8.5.56 \ No newline at end of file diff --git a/libraries/map-custom/map-version-update b/libraries/map-custom/map-version-update index 58e04c8742..3822a13865 100644 --- a/libraries/map-custom/map-version-update +++ b/libraries/map-custom/map-version-update @@ -89,3 +89,15 @@ fix crash 8.5.49 1.更新衡阳数据(包含38Km和城区200km) 2.新增路牌 + +8.5.53 +修改崩溃 + +8.5.54 +1.更新衡阳数据 2. 新增路牌 + +8.5.55 +修改路牌数据以及图片 + +8.5.56 +日志:修改crash \ No newline at end of file From 5b97f18dca12e0ce88d4aa4d37fc134c5e3389c2 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 28 Jun 2021 15:45:57 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E7=BC=96=E8=AF=91=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/mogo-och-taxi/build.gradle | 1 - .../service/impl/adas/MogoADASController.java | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/OCH/mogo-och-taxi/build.gradle b/OCH/mogo-och-taxi/build.gradle index 024a5e102d..8a55d2b6af 100644 --- a/OCH/mogo-och-taxi/build.gradle +++ b/OCH/mogo-och-taxi/build.gradle @@ -38,7 +38,6 @@ dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.arouter - implementation project(path: ':libraries:map-amap') annotationProcessor rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.androidxconstraintlayout 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 b4ae41db7c..4c67371979 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 @@ -24,6 +24,7 @@ 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; @@ -813,6 +814,21 @@ public class MogoADASController implements IMogoADASController { mMogoAdasRecognizedDataCallbacks.remove(callback); } + @Override + public void addAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack) { + + } + + @Override + public void removeAdasAutopilotRouteCallBack(IMogoAdasRouteCallBack callBack) { + + } + + @Override + public void queryAutopilotRoute() { + + } + @Override public void setAdasCarDataCallback(IMogoAdasCarDataCallback carDataCallback) { mMogoAdasCarDataCallback = carDataCallback;