diff --git a/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java b/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java index 17d5114ab0..4b277b1cc6 100644 --- a/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java +++ b/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java @@ -34,8 +34,11 @@ import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.function.smp.utils.MapAssetStyleUtils; import com.mogo.eagle.core.function.smp.view.ISmallMapDirectionView; import com.mogo.eagle.core.widget.RoundLayout; +import com.mogo.map.location.MogoLocation; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.utils.DrivingDirectionUtils; +import com.mogo.module.common.utils.LocationUtils; import com.mogo.utils.logger.Logger; import java.util.ArrayList; @@ -183,7 +186,7 @@ public class SmallMapDirectionView public void onCarLocationChanged2(Location latLng) { //Logger.d(MODULE_NAME, "onCarLocationChanged2 latLng:" + latLng); LatLng currentLatLng = new LatLng(latLng.getLatitude(), latLng.getLongitude()); - + //更新车辆位置 if (mCarMarker != null) { // mCarMarker.setRotateAngle(360 - latLng.getBearing()); mCarMarker.setPosition(currentLatLng); @@ -191,54 +194,83 @@ public class SmallMapDirectionView } -// if (mCoordinatesLatLng.size() > 1) { + if (mCoordinatesLatLng.size() > 1) { // mCoordinatesLatLngCurrent.clear(); // for (LatLng lng : mCoordinatesLatLng) { // MogoLatLng mogoLatLng = new MogoLatLng(lng.latitude, lng.longitude); // mCoordinatesLatLngCurrent.add(mogoLatLng); // } -// -// // 结束位置 -// LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); -// // 与结束位置进行 GeoHash 0-12 -//// GeoHash endGeoHash = GeoHash.withCharacterPrecision(endLatLng.latitude, endLatLng.longitude, 7); -//// GeoHash currentGeoHash = GeoHash.withCharacterPrecision(currentLatLng.latitude, currentLatLng.longitude, 7); -//// Log.d(MODULE_NAME, "currentGeoHash=" + currentGeoHash); -//// Log.d(MODULE_NAME, "endGeoHash=" + endGeoHash); -// -// float calculateDistance = CoordinateUtils.calculateLineDistance( -// endLatLng.latitude, endLatLng.longitude, -// currentLatLng.latitude, currentLatLng.longitude -// ); -// -// Log.d(MODULE_NAME, "calculateDistance=" + calculateDistance); -// if (calculateDistance <= 20) { -// clearPolyline(); -// } else { -// drawablePolyline(mCoordinatesLatLngCurrent); -// } -// } else { -// //设置希望展示的地图缩放级别 -// mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, zoomLevel)); -// } +// removeLoction(latLng); + + // 结束位置 + LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); + // 与结束位置进行 GeoHash 0-12 +// GeoHash endGeoHash = GeoHash.withCharacterPrecision(endLatLng.latitude, endLatLng.longitude, 7); +// GeoHash currentGeoHash = GeoHash.withCharacterPrecision(currentLatLng.latitude, currentLatLng.longitude, 7); +// Log.d(MODULE_NAME, "currentGeoHash=" + currentGeoHash); +// Log.d(MODULE_NAME, "endGeoHash=" + endGeoHash); + + float calculateDistance = CoordinateUtils.calculateLineDistance( + endLatLng.latitude, endLatLng.longitude, + currentLatLng.latitude, currentLatLng.longitude + ); + + Log.d(MODULE_NAME, "calculateDistance=" + calculateDistance); + if (calculateDistance <= 20) { + clearPolyline(); + } else { + drawablePolyline(); + } + } else { + //设置希望展示的地图缩放级别 + mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, zoomLevel)); + } CameraPosition cameraPosition = new CameraPosition.Builder().target(mCarMarker.getPosition()).bearing(latLng.getBearing()).tilt(0).zoom(zoomLevel).build(); mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } + private void removeLoction(Location latLng) { + for (LatLng l: mCoordinatesLatLng){ + if (!isPointOnCarFront(latLng,l)){ + mCoordinatesLatLng.remove(l); + } + } + } + + public static boolean isPointOnCarFront(Location carLocal, LatLng pointLocal) { + double carLon = carLocal.getLongitude(); + double carLat = carLocal.getLatitude(); + double poiLon = pointLocal.longitude; + double poiLat = pointLocal.latitude; + float carAngle = carLocal.getBearing(); + + // 计算车辆与点之间的夹角 + int diffAngle = DrivingDirectionUtils.getDegreeOfCar2Poi( + carLon, carLat, poiLon, poiLat, (int) carAngle); + + if (diffAngle <= 90) { + Log.i("lianglihui", "目标点在车辆--前方"); + return true; + } else { + Log.i("lianglihui", "目标点在车辆--后方"); + return false; + } + } + @Override public void onCarLocationChanged(MogoLatLng latLng) { Logger.d(MODULE_NAME, "onCarLocationChanged latLng:" + latLng); } @Override - public void drawablePolyline(List coordinates) { + public void drawablePolyline() { clearPolyline(); // mCoordinatesLatLng.clear(); - List latLngs = CoordinateConverterFrom84ForList(mContext,coordinates); - mCoordinatesLatLng.addAll(latLngs); +// List latLngs = CoordinateConverterFrom84ForList(mContext,coordinates); +// mCoordinatesLatLng.addAll(latLngs); // for (LatLng coordinate : mCoordinatesLatLng) { -//// mCoordinatesLatLng.add(new LatLng(coordinate.getLat(), coordinate.getLon())); -//// Log.e("",coordinate.latitude+":"+coordinate.longitude); +// mCoordinatesLatLng.add(new LatLng(coordinate.getLat(), coordinate.getLon())); +// Log.e("",coordinate.latitude+":"+coordinate.longitude); // } if (mAMap != null) { if (mCoordinatesLatLng.size() > 2) { @@ -290,6 +322,19 @@ public class SmallMapDirectionView } @Override public void clearPolyline() { +// mCoordinatesLatLng.clear(); + if (mPolyline != null) { + mPolyline.remove(); + } + if (mStartMarker != null) { + mStartMarker.setVisible(false); + } + if (mEndMarker != null) { + mEndMarker.setVisible(false); + } + } + + public void resetPolyine(){ mCoordinatesLatLng.clear(); if (mPolyline != null) { mPolyline.remove(); @@ -326,9 +371,9 @@ public class SmallMapDirectionView } } - public void setRouteList(List coordinates) { -// mCoordinatesLatLng.clear(); -// List latLngs = CoordinateConverterFrom84ForList(mContext,coordinates); -// mCoordinatesLatLng.addAll(latLngs); + public void convert(List coordinates) { + mCoordinatesLatLng.clear(); + List latLngs = CoordinateConverterFrom84ForList(mContext,coordinates); + mCoordinatesLatLng.addAll(latLngs); } } diff --git a/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapFragment.java b/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapFragment.java index f8ff5709dd..0f6a3cfd72 100644 --- a/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapFragment.java +++ b/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/SmallMapFragment.java @@ -45,8 +45,8 @@ public class SmallMapFragment extends Fragment { public void drawablePolyline(List coordinates) { if (mSmallMapDirectionView != null) { - mSmallMapDirectionView.setRouteList(coordinates); - mSmallMapDirectionView.drawablePolyline(coordinates); + mSmallMapDirectionView.convert(coordinates); + mSmallMapDirectionView.drawablePolyline(); } } diff --git a/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/view/ISmallMapDirectionView.java b/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/view/ISmallMapDirectionView.java index 671c0a17b3..73716066b2 100644 --- a/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/view/ISmallMapDirectionView.java +++ b/core/function-impl/mogo-core-function-smp/src/main/java/com/mogo/eagle/core/function/smp/view/ISmallMapDirectionView.java @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.smp.view; +import com.amap.api.maps.model.LatLng; import com.mogo.eagle.core.data.map.MogoLatLng; import java.util.List; @@ -13,7 +14,7 @@ public interface ISmallMapDirectionView { /** * 绘制路径线 */ - void drawablePolyline(List coordinates); + void drawablePolyline(); /** * 清除路径线 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 58796f09d1..890f7cb83a 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 @@ -3,6 +3,8 @@ package com.mogo.module.adas; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import android.util.Log; + import com.google.gson.Gson; import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo; import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo; @@ -22,6 +24,18 @@ import com.mogo.utils.network.utils.GsonUtil; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; import com.zhidao.support.adas.high.AdasManager; 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; +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.TrajectoryInfo; +import com.zhidao.support.adas.high.bean.WarnMessageInfo; +import com.zhidao.support.adas.high.bean.guardian.AutopilotGuardianInfo; +import com.zhidao.support.adas.high.common.MsgActionType; import com.zhidao.support.obu.ami.AmiClientManager; import java.util.ArrayList; @@ -104,6 +118,18 @@ public class AdasEventManager implements } + @Override + public void onAutopilotTrajectory(List trajectoryList) { +// Log.e("lianglihui","adas onAutopilotTrajectory"); + if(trajectoryList != null && trajectoryList.size() >0){ + for (IAdasDataListener listener : iAdasEventListeners) { + if (listener != null) { + listener.onAutopilotTrajectory(trajectoryList); + } + } + } + } + @Override public void onAutopilotSNRequest() { if (providerBizListener != null) { @@ -113,6 +139,11 @@ public class AdasEventManager implements } } + @Override + public void onAutopilotGuardian(AutopilotGuardianInfo guardianInfo) { + + } + @Override public void onWebSocketConnectSuccess() { Logger.d(TAG, "webSocket 连接成功"); 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 index 9133497141..11592863b7 100644 --- 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 @@ -4,6 +4,17 @@ import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo; import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo; import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.autopilot.AutopilotWarnMessage; +import com.mogo.module.adas.entity.WarnMessageModel; +import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel; +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.TrajectoryInfo; +import com.zhidao.support.adas.high.bean.WarnMessageInfo; + +import java.util.List; public interface IAdasDataListener { @@ -50,4 +61,13 @@ public interface IAdasDataListener { default void notifyAutopilotState(AutopilotStatusInfo autopilotStatus) { } + /** + * 车前引导路径回调 + * @param trajectory + */ + + default void onAutopilotTrajectory(List trajectory) { + + } + } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index cad4a1f3e5..a7468d00ea 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -2,14 +2,17 @@ package com.mogo.module.service.routeoverlay; import android.content.Context; import android.location.Location; +import android.util.Log; import com.mogo.eagle.core.data.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.drawer.MarkerDrawer; import com.mogo.service.adas.IMogoAdasRouteCallBack; +import com.mogo.service.adas.IMogoAdasTrajectoryDataCallBack; +import com.mogo.service.adas.entity.ADASTrajectoryInfo; +import java.util.ArrayList; import java.util.List; public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2 { @@ -29,10 +32,25 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2 @Override public void routeResult(List routeList) { + Log.e("lianglihui","routeResult:"+routeList.size()); RouteOverlayDrawer.getInstance(mContext).putRouteList(routeList); } }); + MogoApisHandler.getInstance().getApis().getAdasControllerApi().addAdasTrajectoryDataCallBack(new IMogoAdasTrajectoryDataCallBack() { + @Override + public void onAutopilotTrajectory(List trajectoryInfos) { + if (trajectoryInfos == null || trajectoryInfos.size() == 0){ + return; + } + Log.e("lianglihui","trajectoryInfos:"+trajectoryInfos.size()); + List mogoLatLngs = new ArrayList<>(); + for (ADASTrajectoryInfo a:trajectoryInfos) { + mogoLatLngs.add(new MogoLatLng(a.getLat(),a.getLon())); + } + RouteOverlayDrawer.getInstance(mContext).drawTrajectoryList(mogoLatLngs); + } + }); } public static MogoRouteOverlayManager getInstance(Context context) { @@ -49,7 +67,7 @@ public class MogoRouteOverlayManager implements IMogoCarLocationChangedListener2 @Override public void onCarLocationChanged2(Location latLng) { - updateLocation(latLng); +// updateLocation(latLng); } @Override diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java index 02ca549744..64c05f8749 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java @@ -124,4 +124,21 @@ public class RouteOverlayDrawer { public void putRouteList(List routeList) { this.mRouteList = routeList; } + + public void drawTrajectoryList(List routeList) { + clearMogoRouteOverlay(); + if (routeList != null) { + for (MogoLatLng latLng : routeList) { + mPolylinePointList.add(latLng); + } + mPolylineOptions.setGps(true); + mPolylineColors.addAll(ColorUtils.getGradientAlpha("#002965ED", "#FF2965ED", "#002965ED", mPolylinePointList.size())); + // 替换路径集合 + mPolylineOptions.points(mPolylinePointList); + // 线条粗细,渐变,渐变色值 + mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors); + // 绘制线 + mMoGoPolyline = mogoOverlayManager.addPolyline(mPolylineOptions); + } + } } 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 6b8a085a7e..5872532336 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 @@ -4,6 +4,8 @@ import com.alibaba.android.arouter.facade.template.IProvider; import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; import com.mogo.eagle.core.data.traffic.TrafficData; import com.mogo.map.uicontroller.EnumMapUI; +import com.mogo.service.adas.entity.ADASRecognizedResult; +import com.mogo.service.adas.entity.ADASTrajectoryInfo; import java.util.List; @@ -169,4 +171,15 @@ public interface IMogoADASController extends IProvider { */ void cancelAutopilot(); + /** + * 添加车前引导线回调 + * @param + */ + void addAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack); + /** + * 移除车前引导线回调 + * @param + */ + void removeAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack); + } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasTrajectoryDataCallBack.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasTrajectoryDataCallBack.java new file mode 100644 index 0000000000..9a1c36fb0a --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoAdasTrajectoryDataCallBack.java @@ -0,0 +1,9 @@ +package com.mogo.service.adas; + +import com.mogo.service.adas.entity.ADASTrajectoryInfo; + +import java.util.List; + +public interface IMogoAdasTrajectoryDataCallBack { + void onAutopilotTrajectory(List trajectoryInfo); +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASTrajectoryInfo.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASTrajectoryInfo.java new file mode 100644 index 0000000000..57fe187bd4 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/entity/ADASTrajectoryInfo.java @@ -0,0 +1,115 @@ +package com.mogo.service.adas.entity; + + +/** + * @author song kenan + * @des + * @date 2021/10/21 + */ +public class ADASTrajectoryInfo { + //经度 + private Double lon; + //纬度 + private Double lat; + //高度 + private Double alt; + //时间 秒s + private Double time; + //速度 m/s + private Double velocity; + //加速度 + private Double acceleration; + //速度方向 + private Double theta; + //曲率 + private Double kappa; + //从起点到目前的总距离 + private Double accumulatedDis; + + public void setLon(Double lon) { + this.lon = lon; + } + + public void setLat(Double lat) { + this.lat = lat; + } + + public void setAlt(Double alt) { + this.alt = alt; + } + + public void setTime(Double time) { + this.time = time; + } + + public void setVelocity(Double velocity) { + this.velocity = velocity; + } + + public void setAcceleration(Double acceleration) { + this.acceleration = acceleration; + } + + public void setTheta(Double theta) { + this.theta = theta; + } + + public void setKappa(Double kappa) { + this.kappa = kappa; + } + + public void setAccumulatedDis(Double accumulatedDis) { + this.accumulatedDis = accumulatedDis; + } + + public Double getLon() { + return lon; + } + + public Double getLat() { + return lat; + } + + public Double getAlt() { + return alt; + } + + public Double getTime() { + return time; + } + + public Double getVelocity() { + return velocity; + } + + public Double getAcceleration() { + return acceleration; + } + + public Double getTheta() { + return theta; + } + + public Double getKappa() { + return kappa; + } + + public Double getAccumulatedDis() { + return accumulatedDis; + } + + @Override + public String toString() { + return "TrajectoryModels{" + + "lon=" + lon + + ", lat=" + lat + + ", alt=" + alt + + ", time='" + time + '\'' + + ", velocity=" + velocity + + ", acceleration=" + acceleration + + ", theta=" + theta + + ", kappa=" + kappa + + ", accumulatedDis=" + accumulatedDis + + '}'; + } +} 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 4f0c6bd6a7..2678fd29e1 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 @@ -3,6 +3,11 @@ package com.mogo.service.impl.adas; import android.app.Application; import android.content.Context; import android.content.Intent; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; +import android.text.TextUtils; +import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; @@ -27,7 +32,16 @@ import com.mogo.service.adas.IMogoAdasCarDataCallback; import com.mogo.service.adas.IMogoAdasDataCallback; import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.adas.IMogoAdasRouteCallBack; +import com.mogo.service.adas.IMogoAdasTrajectoryDataCallBack; import com.mogo.service.adas.IMogoAdasWarnMessageCallback; +import com.mogo.eagle.core.data.autopilot.RemoteControlAutoPilotParameters; +import com.mogo.service.adas.entity.ADASCarStateInfo; +import com.mogo.service.adas.entity.ADASRecognizedResult; +import com.mogo.service.adas.entity.ADASTrajectoryInfo; +import com.mogo.service.adas.entity.ADASWarnMessage; +import com.mogo.eagle.core.data.autopilot.AdasOCHData; +import com.mogo.service.adas.entity.CarModelListResponse; +import com.mogo.service.datamanager.IMogoDataManager; import com.mogo.service.impl.singleton.SingletonsHolder; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.UiThreadHandler; @@ -37,6 +51,13 @@ import com.zhidao.adasconfig.api.AdasConfigApiController; import com.zhidao.adasconfig.common.config.EnumCarHeading; import com.zhidao.adasconfig.common.config.EnumSkinStyle; import com.zhidao.autopilot.support.api.AutopilotServiceManage; +import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; +import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel; +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.TrajectoryInfo; +import com.zhidao.support.adas.high.bean.WarnMessageInfo; import org.json.JSONObject; @@ -78,6 +99,11 @@ public class MogoADASController implements IMogoADASController { */ private final List mMogoAdasRouteCallBacks = new CopyOnWriteArrayList<>(); + /** + * 车前引导线回调 + */ + private final List mMogoAdasTrajectoryDataCallBacks = new CopyOnWriteArrayList<>(); + private IAdasDataListener mAdasDataListener; private IMogoAdasCarDataCallback mMogoAdasCarDataCallback; @@ -170,6 +196,7 @@ public class MogoADASController implements IMogoADASController { }); } + @Override public void autopilotArrive(AutopilotStationInfo autopilotArriveModel) { if (autopilotArriveModel == null) { @@ -187,6 +214,37 @@ public class MogoADASController implements IMogoADASController { } } + @Override + public void onAutopilotTrajectory(List trajectorys) { + if(trajectorys != null && trajectorys.size() > 0){ + List trajectoryInfoArrayList = new ArrayList<>(); +// TrajectoryInfo t= trajectorys.get(0); + Log.e("lianglihui","time:"+ System.currentTimeMillis()); + for (TrajectoryInfo trajectory : trajectorys){ + ADASTrajectoryInfo adasTrajectoryInfo = new ADASTrajectoryInfo(); + adasTrajectoryInfo.setLat(trajectory.getLat()); + adasTrajectoryInfo.setLon(trajectory.getLon()); + adasTrajectoryInfo.setAcceleration(trajectory.getAcceleration()); + adasTrajectoryInfo.setAccumulatedDis(trajectory.getAccumulatedDis()); + adasTrajectoryInfo.setTime(trajectory.getTime()); + adasTrajectoryInfo.setVelocity(trajectory.getVelocity()); + adasTrajectoryInfo.setAlt(trajectory.getAlt()); + adasTrajectoryInfo.setKappa(trajectory.getKappa()); + adasTrajectoryInfo.setTheta(trajectory.getTheta()); + Log.e("lianglihui","trajectory:"+ trajectory.getLat()+"-"+trajectory.getLon()); + trajectoryInfoArrayList.add(adasTrajectoryInfo); + } + + for (IMogoAdasTrajectoryDataCallBack callBack: mMogoAdasTrajectoryDataCallBacks){ + if (callBack != null){ + callBack.onAutopilotTrajectory(trajectoryInfoArrayList); + } + } + + } + } + + @Override public void autopilotRoute(AutopilotRouteInfo autopilotRoute) { if (autopilotRoute.getModels() == null || autopilotRoute.getModels().size() == 0) { @@ -501,6 +559,23 @@ public class MogoADASController implements IMogoADASController { public void cancelAutopilot() { adasProvider.cancelPilot(); } + + @Override + public void addAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack) { + if (callBack == null) { + return; + } + if (!mMogoAdasTrajectoryDataCallBacks.contains(callBack)) { + mMogoAdasTrajectoryDataCallBacks.add(callBack); + } + } + + @Override + public void removeAdasTrajectoryDataCallBack(IMogoAdasTrajectoryDataCallBack callBack) { + if (callBack != null){ + mMogoAdasTrajectoryDataCallBacks.remove(callBack); + } + } }