From 26729cefd189bd24808e3e9c620b3e937f89cc53 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 30 Mar 2021 17:26:17 +0800 Subject: [PATCH] opt --- .../com/mogo/map/impl/custom/AMapWrapper.java | 2 + .../mogo/module/v2x/MoGoV2XServicePaths.java | 6 + .../mogo/module/v2x/V2XServiceManager.java | 13 ++- .../com/mogo/module/v2x/V2XWaringManager.java | 27 ++--- .../v2x/entity/model/CloundWarningInfo.java | 108 ++++++++++++++++++ .../module/v2x/entity/model/DrawLineInfo.java | 10 ++ .../v2x/listener/V2XWarnMessageListener.java | 31 +++++ .../manager/IMoGoV2XCloundDataManager.java | 21 ++++ .../impl/MoGoV2XCloundDataManager.java | 58 ++++++++++ .../manager/impl/MoGoWarnPolylineManager.java | 17 ++- 10 files changed, 269 insertions(+), 24 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/CloundWarningInfo.java create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XWarnMessageListener.java create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XCloundDataManager.java create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java index d38389b817..47c8fcaae2 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java @@ -242,6 +242,8 @@ public class AMapWrapper implements IMogoMap { } } return 0; + + } @Override diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/MoGoV2XServicePaths.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/MoGoV2XServicePaths.java index 4248f06ef1..6fe683f7e8 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/MoGoV2XServicePaths.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/MoGoV2XServicePaths.java @@ -37,6 +37,12 @@ public class MoGoV2XServicePaths { @Keep public static final String PATH_V2X_WARN_POLYLINE_MANAGER = "/v2xWarnPolylineManager/api"; + /** + * V2X 云端数据处理 + */ + @Keep + public static final String PATH_V2X_WARN_CLOUND_DATA_MANAGER = "/v2xWarnCloundDataManager/api"; + } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java index 3d791a6d2d..d6d01fc4cc 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java @@ -16,10 +16,12 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.drawer.AdasRecognizedResultDrawer; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.v2x.alarm.V2XCalculateServer; +import com.mogo.module.v2x.manager.IMoGoV2XCloundDataManager; import com.mogo.module.v2x.manager.IMoGoV2XMarkerManager; import com.mogo.module.v2x.manager.IMoGoV2XPolylineManager; import com.mogo.module.v2x.manager.IMoGoV2XStatusManager; import com.mogo.module.v2x.manager.IMoGoWarnPolylineManager; +import com.mogo.module.v2x.manager.impl.MoGoV2XCloundDataManager; import com.mogo.module.v2x.network.V2XRefreshModel; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.realtime.entity.ADASRecognizedResult; @@ -108,7 +110,7 @@ public class V2XServiceManager { private static IMoGoV2XPolylineManager moGoV2XPolylineManager; private static IMoGoV2XStatusManager moGoV2XStatusManager; private static IMoGoWarnPolylineManager moGoWarnPolylineManager; - + private static IMoGoV2XCloundDataManager moGoV2XCloundDataManager; private V2XServiceManager() { @@ -161,6 +163,7 @@ public class V2XServiceManager { moGoV2XMarkerManager = (IMoGoV2XMarkerManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_MARKER_MANAGER).navigation(context); moGoV2XPolylineManager = (IMoGoV2XPolylineManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_POLYLINE_MANAGER).navigation(context); moGoWarnPolylineManager = (IMoGoWarnPolylineManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_WARN_POLYLINE_MANAGER).navigation(context); + moGoV2XCloundDataManager = (IMoGoV2XCloundDataManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_WARN_CLOUND_DATA_MANAGER).navigation(context); moGoV2XStatusManager = (IMoGoV2XStatusManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STATUS_MANAGER).navigation(context); } @@ -321,4 +324,12 @@ public class V2XServiceManager { public static void setmIMogoADASController(IMogoADASController mIMogoADASController) { V2XServiceManager.mIMogoADASController = mIMogoADASController; } + + public static IMoGoV2XCloundDataManager getMoGoV2XCloundDataManager() { + return moGoV2XCloundDataManager; + } + + public static void setMoGoV2XCloundDataManager(IMoGoV2XCloundDataManager moGoV2XCloundDataManager) { + V2XServiceManager.moGoV2XCloundDataManager = moGoV2XCloundDataManager; + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java index 33cb208b48..38682e7778 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XWaringManager.java @@ -9,6 +9,7 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.drawer.AdasRecognizedResultDrawer; import com.mogo.module.v2x.entity.model.DrawLineInfo; import com.mogo.module.v2x.listener.V2XMessageListener_401011; +import com.mogo.module.v2x.listener.V2XWarnMessageListener; import com.mogo.realtime.entity.ADASRecognizedResult; import com.mogo.utils.logger.Logger; @@ -28,7 +29,7 @@ public class V2XWaringManager { private static V2XWaringManager mV2XWaringManager; //TODO 需要修改 - private V2XMessageListener_401011 v2XMessageListener_401011; + private V2XWarnMessageListener v2XWarnMessageListener; private V2XWaringManager() { @@ -53,7 +54,9 @@ public class V2XWaringManager { Logger.d("liyz", "开始注册Socket通道...."); mContext = context; - register401011(); + //根据云端,绘制自车和交点,以及行人或二轮车与交点的绘制 + registerWarnListener(); + handleAdasData(); } @@ -62,29 +65,28 @@ public class V2XWaringManager { */ public void unregisterAdasSocketMessage() { Logger.w("liyz", "反注册Socket通道...."); - if (v2XMessageListener_401011 != null) { + if (v2XWarnMessageListener != null) { V2XServiceManager .getMoGoSocketManager() - .unregisterOnMessageListener(401011, v2XMessageListener_401011); + .unregisterOnMessageListener(401011, v2XWarnMessageListener); } } /** - * 道路事件,行人 + * 道路事件,行人 TODO type */ - private void register401011() { - v2XMessageListener_401011 = new V2XMessageListener_401011(); + private void registerWarnListener() { + v2XWarnMessageListener = new V2XWarnMessageListener(); // 道路事件,在线车辆绘制 V2XServiceManager .getMoGoSocketManager() .registerOnMessageListener( 401011, - v2XMessageListener_401011 - ); + v2XWarnMessageListener ); } - public V2XMessageListener_401011 getV2XMessageListener_401011() { - return v2XMessageListener_401011; + public V2XWarnMessageListener getV2XMessageListener() { + return v2XWarnMessageListener; } @@ -99,12 +101,11 @@ public class V2XWaringManager { // 绘制连接线 TODO 来的是列表数据 DrawLineInfo info1 = new DrawLineInfo(); MogoLatLng startLatlng1 = new MogoLatLng(39.968919,116.407642); - MogoLatLng endLatlng1 = new MogoLatLng(39.977173,116.417555); + MogoLatLng endLatlng1 = new MogoLatLng(40.010906,116.423821); info1.setStartLocation(startLatlng1); info1.setEndLocation(endLatlng1); V2XServiceManager.getMoGoWarnPolylineManager().drawableWarnPolyline(getContext(), info1); - // adas 每隔一秒传递的他车或行人数据 V2XServiceManager.getmIMogoADASController().addAdasRecognizedDataCallback(resultList -> { // 绘制近景识别到的车辆,行人和二轮车 TODO diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/CloundWarningInfo.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/CloundWarningInfo.java new file mode 100644 index 0000000000..240c9a269a --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/CloundWarningInfo.java @@ -0,0 +1,108 @@ +package com.mogo.module.v2x.entity.model; + + +import com.mogo.map.MogoLatLng; + +/** + * @author lixiaopeng + * @description 云端警告下发数据(二轮车和弱势群体) + * @since 2021/3/30 + */ +public class CloundWarningInfo { + + /** + * 识别物体类型 + */ + public int type; + + /** + * 提示信息 + */ + public String warningContent; + + /** + * 道路唯一标识 + */ + public String roadId; + + /** + * 车道唯一标识 + */ + public String laneId; + + /** + * 识别物体唯一标识 + */ + public String uuid; + + /** + * 红绿灯颜色 + */ + public String color; + + /** + * 车ID 暂不使用 + */ + public String carId; + + /** + * 识别物体的纬度 + */ + public double lat; + + /** + * 识别物体的经度 + */ + public double lon; + + /** + * 识别物经纬度 + * */ + private MogoLatLng startLocation; + + /** + * 行人经纬度交点 + */ + private MogoLatLng endLocation; + + /** + * 停止线的纬度 + */ + public double stopLinelat; + + /** + * 停止线的经度 + */ + public double stopLinelon; + + /** + * 车头朝向 + */ + public double heading; + + /** + * 系统时间 暂时没用 + */ + public long systemTime; + + /** + * 定位卫星时间 暂时没用 + */ + public long satelliteTime; + + /** + * 速度 暂时没用 + */ + public double speed; + + /** + * 莫顿码 暂时没用 + */ + public long mortonCode; + + /** + * 停车线距离 + */ + public double distance; + +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java index 8acd7004e6..d18ba99ee7 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java @@ -18,6 +18,8 @@ public class DrawLineInfo { //结束点位置 private MogoLatLng endLocation; + private double heading; + public String getType() { return type; } @@ -41,4 +43,12 @@ public class DrawLineInfo { public void setEndLocation(MogoLatLng endLocation) { this.endLocation = endLocation; } + + public double getHeading() { + return heading; + } + + public void setHeading(double heading) { + this.heading = heading; + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XWarnMessageListener.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XWarnMessageListener.java new file mode 100644 index 0000000000..d8cb12895a --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XWarnMessageListener.java @@ -0,0 +1,31 @@ +package com.mogo.module.v2x.listener; + +import com.mogo.module.v2x.V2XServiceManager; +import com.mogo.module.v2x.entity.model.CloundWarningInfo; +import com.mogo.module.v2x.utils.V2XUtils; +import com.mogo.service.connection.IMogoOnMessageListener; + +/** + * desc: 下发的云端预警数据 + */ +public class V2XWarnMessageListener implements IMogoOnMessageListener { + + @Override + public Class target() { + return CloundWarningInfo.class; + } + + @Override + public void onMsgReceived(CloundWarningInfo info) { + //Logger.d(MODULE_NAME, "V2XMessageListener_401011==V2X地图气泡数据刷新:\n" + GsonUtil.jsonFromObject(response)); + V2XUtils.runOnBackgroundThread(() -> { + // 解析不同的Marker类型,然后对应的进行绘制 + if (info != null) { + // 解析存储道路事件 liyz + V2XServiceManager.getMoGoV2XCloundDataManager().analysisV2XCloundDataEvent(info); + } + }); + + } + +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XCloundDataManager.java new file mode 100644 index 0000000000..e49122aa47 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoV2XCloundDataManager.java @@ -0,0 +1,21 @@ +package com.mogo.module.v2x.manager; + +import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.module.v2x.entity.model.CloundWarningInfo; + +/** + * desc: V2X 处理云端预警消息 + */ +public interface IMoGoV2XCloundDataManager extends IProvider { + + /** + * 处理下发数据 + */ + void analysisV2XCloundDataEvent(CloundWarningInfo cloundWarningInfo); + + /** + * 清除 所有的 POI + */ + void clearALLPOI(); + +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java new file mode 100644 index 0000000000..72631d7481 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XCloundDataManager.java @@ -0,0 +1,58 @@ +package com.mogo.module.v2x.manager.impl; + +import android.content.Context; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.MogoLatLng; +import com.mogo.module.v2x.MoGoV2XServicePaths; +import com.mogo.module.v2x.V2XServiceManager; +import com.mogo.module.v2x.entity.model.CloundWarningInfo; +import com.mogo.module.v2x.entity.model.DrawLineInfo; +import com.mogo.module.v2x.manager.IMoGoV2XCloundDataManager; + +import static com.mogo.module.v2x.V2XServiceManager.getContext; + +/** + * desc : V2X 服务端下发数据处理 点的绘制 + */ +@Route(path = MoGoV2XServicePaths.PATH_V2X_WARN_CLOUND_DATA_MANAGER) +public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager { + private static final String TAG = "MoGoV2XCloundDataManager"; + + @Override + public void init(Context context) { + + } + + @Override + public void analysisV2XCloundDataEvent(CloundWarningInfo cloundWarningInfo) { + //TODO + //清理 + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + + //绘制连接线自车与交汇点连线 + DrawLineInfo info1 = new DrawLineInfo(); + MogoLatLng startLatlng1 = new MogoLatLng(39.968919,116.407642); + MogoLatLng endLatlng1 = new MogoLatLng(40.010906,116.423821); + info1.setStartLocation(startLatlng1); + info1.setEndLocation(endLatlng1); + V2XServiceManager.getMoGoWarnPolylineManager().drawableWarnPolyline(getContext(), info1); + + //绘制识别物与交汇点连线 TODO + + + //更新数据连线数据 他车和自车 + + + //自车的移动 + + + //他车的移动 + + } + + @Override + public void clearALLPOI() { + + } +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java index 67d9db85a5..237a54fc30 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java @@ -39,16 +39,13 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { // 渐变色 List colors = new ArrayList<>(); -// if (info.getType().equals("1")) { //预警 TODO -// colors.add(0xFFFFA31A); -// colors.add(0xFFFFA31A); -// } else { -// colors.add(0xFFE32F46); -// colors.add(0xFFE32F46); -// } - - colors.add(0xFF3036); - colors.add(0xFF3036); + if (info.getType().equals("1")) { //预警 TODO + colors.add(0xFFFFA31A); + colors.add(0xFFFFA31A); + } else { + colors.add(0xFFE32F46); + colors.add(0xFFE32F46); + } // 线条粗细,渐变,渐变色值 options.width(60).useGradient(true).colorValues(colors);