diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 83405b8de1..4ff10f68a5 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -91,6 +91,7 @@ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java index bfadaf3c8e..d86d0213d8 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java @@ -26,9 +26,7 @@ import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_WARN_ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedListener { private static final String TAG = "V2XWarnDataDrawer"; - private static volatile V2XWarnDataDrawer sInstance; - private boolean mChangeCarModeStatus; private V2XWarnDataDrawer() { @@ -73,28 +71,27 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL */ public void renderWarnData(V2XWarningEntity data) { MarkerLocation location = new MarkerLocation(); - location.setLat(data.getLat()); - location.setLon(data.getLon()); + location.setLat(data.getDirection() == 1 ? data.getStopLines().get(0).lat : data.getLat()); + location.setLon(data.getDirection() == 1 ? data.getStopLines().get(0).lon : data.getLon()); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); markerShowEntity.setMarkerLocation(location); markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_WARN_DATA); - WorkThreadHandler.getInstance().postDelayed(() -> { - IMogoMarker marker = drawMarker(markerShowEntity); - Log.d("liyz", "renderWarnData marker != null "); - marker.addDynamicAnchorPosition(new MogoLatLng(data.getCollisionLat(), data.getCollisionLon()), (float) data.getHeading(), 5000); - - //移动完成以后,3s后消失 - UiThreadHandler.postDelayed( () -> { - marker.remove(); - }, 8000 ); - - }, 0); + IMogoMarker marker = drawMarker(markerShowEntity); + Log.d("liyz", "renderWarnData marker != null "); + marker.addDynamicAnchorPosition(new MogoLatLng( + data.getDirection() == 1 ? data.getStopLines().get(1).lat : data.getCollisionLat(), + data.getDirection() == 1 ? data.getStopLines().get(1).lon : data.getCollisionLon()), (float) data.getHeading(), 5000); + //移动完成以后,3s后消失 + UiThreadHandler.postDelayed(() -> { + marker.remove(); + }, 8000); } + public IMogoMarker drawMarker(MarkerShowEntity markerShowEntity) { MogoMarkerOptions options = new MogoMarkerOptions() .object(markerShowEntity) @@ -103,8 +100,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); options.icon3DRes(getModelRes(2)); //TODO -// options.anchorColor("#FF4040"); - options.anchorColor("#FF3036"); //红色 + options.anchorColor("#FB3C3CFF"); //红色#FF3036 蓝色:#256BFF IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(markerShowEntity.getMarkerType(), options); iMarkerView.setMarker(marker); marker.setToTop(); @@ -112,4 +108,44 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL return marker; } + /** + * 绘制停止线 + * + * @param data + */ + public void renderStopLineData(V2XWarningEntity data) { + MarkerLocation location = new MarkerLocation(); + location.setLat(data.getLat()); + location.setLon(data.getLon()); + + MarkerShowEntity markerShowEntity = new MarkerShowEntity(); + markerShowEntity.setMarkerLocation(location); + markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_WARN_DATA); + + IMogoMarker marker = drawStopLineMarker(markerShowEntity); + + //移动完成以后,3s后消失 + UiThreadHandler.postDelayed(() -> { + marker.remove(); + }, 8000); + + } + + public IMogoMarker drawStopLineMarker(MarkerShowEntity markerShowEntity) { + MogoMarkerOptions options = new MogoMarkerOptions() + .object(markerShowEntity) + .latitude(markerShowEntity.getMarkerLocation().getLat()) + .longitude(markerShowEntity.getMarkerLocation().getLon()); + IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); + options.icon3DRes(getModelRes(1)); //TODO + + options.anchorColor("#FB3C3CFF"); //红色#FF3036 蓝色:#256BFF + IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(markerShowEntity.getMarkerType(), options); + iMarkerView.setMarker(marker); + marker.setToTop(); + + return marker; + } + + } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/TopView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/TopView.java index a883d44ad8..1648a8b388 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/TopView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/navi/TopView.java @@ -52,8 +52,7 @@ public class TopView extends FrameLayout { originX = ev.getY(); } else if (ev.getAction() == MotionEvent.ACTION_MOVE) { // 垂直滑动,事件拦截 - return Math.abs(originY - ev.getY()) > ViewConfiguration.get(getContext()).getScaledTouchSlop() - ||Math.abs(originX - ev.getX()) > ViewConfiguration.get(getContext()).getScaledTouchSlop(); + return Math.abs(originY - ev.getY()) > ViewConfiguration.get(getContext()).getScaledTouchSlop(); } return false; } 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 483ac4e448..04ebf4aa95 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 @@ -43,6 +43,13 @@ public class MoGoV2XServicePaths { @Keep public static final String PATH_V2X_PERSON_WARN_POLYLINE_MANAGER = "/v2xPersonWarnPolylineManager/api"; + /** + * V2X 停止线连接线 + */ + @Keep + public static final String PATH_V2X_STOP_POLYLINE_MANAGER = "/v2xStopPolylineManager/api"; + + /** * V2X 云端数据处理 */ 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 2df6f55679..7166bb0fa1 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 @@ -17,6 +17,7 @@ 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.IMoGoPersonWarnPolylineManager; +import com.mogo.module.v2x.manager.IMoGoStopPolylineManager; import com.mogo.module.v2x.manager.IMoGoV2XCloundDataManager; import com.mogo.module.v2x.manager.IMoGoV2XMarkerManager; import com.mogo.module.v2x.manager.IMoGoV2XPolylineManager; @@ -114,6 +115,7 @@ public class V2XServiceManager { private static IMoGoV2XStatusManager moGoV2XStatusManager; private static IMoGoWarnPolylineManager moGoWarnPolylineManager; private static IMoGoPersonWarnPolylineManager moGoPersonWarnPolylineManager; + private static IMoGoStopPolylineManager moGoStopPolylineManager; private static IMoGoV2XCloundDataManager moGoV2XCloundDataManager; private V2XServiceManager() { @@ -170,6 +172,7 @@ public class V2XServiceManager { 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); moGoPersonWarnPolylineManager = (IMoGoPersonWarnPolylineManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_PERSON_WARN_POLYLINE_MANAGER).navigation(context); + moGoStopPolylineManager = (IMoGoStopPolylineManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STOP_POLYLINE_MANAGER).navigation(context); moGoV2XStatusManager = (IMoGoV2XStatusManager) ARouter.getInstance().build(MoGoV2XServicePaths.PATH_V2X_STATUS_MANAGER).navigation(context); } @@ -351,4 +354,11 @@ public class V2XServiceManager { V2XServiceManager.moGoPersonWarnPolylineManager = moGoPersonWarnPolylineManager; } + public static IMoGoStopPolylineManager getMoGoStopPolylineManager() { + return moGoStopPolylineManager; + } + + public static void setMoGoStopPolylineManager(IMoGoStopPolylineManager moGoStopPolylineManager) { + V2XServiceManager.moGoStopPolylineManager = moGoStopPolylineManager; + } } 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 a274f3d9c6..66bc31e67d 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 @@ -138,27 +138,8 @@ public class V2XWaringManager { // info1.setHeading(10); // info1.setStartLocation(startLatlng1); // info1.setEndLocation(endLatlng1); -// -// //只有在3d模型下高精数据才有值 TODO -// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { -// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(116.411198243370, -// 39.9809517154582, (float) 3.13919341919472 , true, true); -// Log.d(V2XConst.LOG_NAME_WARN, "roadWidth = " + roadWidth); -// float pixel = V2XServiceManager.getMapUIController().getScalePerPixel(); -// float width = roadWidth / pixel; -// Log.d(V2XConst.LOG_NAME_WARN, "width = " + width + "---pixel = " + pixel); -// info1.setWidth(roadWidth); -// } -// -// V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info1); -// -// //延迟3秒清理线 -// UiThreadHandler.postDelayed( () -> { -// V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); -// }, 3000 ); - - // adas 每隔一秒传递的他车或行人数据 + // adas 每隔一秒传递的他车或行人数据,避免重复 // V2XServiceManager.getmIMogoADASController().addAdasRecognizedDataCallback(resultList -> { // // 绘制近景识别到的车辆,行人和二轮车 // AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult( resultList ); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java index 8e5b8b24e1..fe7e4d093f 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java @@ -143,6 +143,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { private MogoImageView ivEvent; private TextView tvEvent; + private ImageView ivPlay; private TextView tvLine; private TextView tvPlay; @@ -163,6 +164,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { ivEvent = itemView.findViewById(R.id.iv_event); tvEvent = itemView.findViewById(R.id.tv_event); + ivPlay = itemView.findViewById(R.id.iv_play); tvLine = itemView.findViewById(R.id.tv_line); tvPlay = itemView.findViewById(R.id.tv_play); } @@ -248,6 +250,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { ivEventImg.setOnClickListener(v -> { showRoadVideoInfo(v2XEventShowEntity); }); + ivPlay.setVisibility(VISIBLE); tvLine.setVisibility(VISIBLE); tvPlay.setVisibility(VISIBLE); tvPlay.setOnClickListener(v -> { @@ -261,6 +264,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { ivEventImg.setOnClickListener(null); ivEventPlay.setOnClickListener(null); ivEventPlay.setVisibility(GONE); + ivPlay.setVisibility(GONE); tvLine.setVisibility(GONE); tvPlay.setVisibility(GONE); } @@ -279,11 +283,11 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { } ivEvent.setImageResource(EventTypeUtils.getPoiTypeSrcVr(mNoveltyInfo.getPoiType())); tvEvent.setText(EventTypeUtils.getPoiTypeStrVr(mNoveltyInfo.getPoiType())); - if (mNoveltyInfo.getPoiType() == V2XPoiTypeEnum.FOURS_FOG) { + if (V2XPoiTypeEnum.FOURS_FOG.equals(mNoveltyInfo.getPoiType())) { V2XServiceManager.getDisplayEffectsManager().displayEffects(V2XPoiTypeEnum.FOURS_FOG); // MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(ALERT_THE_FRONT_CRASH_WARNING_TOP, MogoReceiver.ACTION_V2X_FRONT_WARNING); } - tvEventAddress.setText(mNoveltyInfo.getAddr()); + tvEventAddress.setText(mNoveltyInfo.getAddr()); tvEventDistance.setText("距离 " + (int) mNoveltyInfo.getDistance() + "米"); Calendar c = Calendar.getInstance(); 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 e6a68b6331..f2d9fe9e43 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 @@ -1,6 +1,5 @@ package com.mogo.module.v2x.entity.model; - import com.mogo.map.MogoLatLng; @@ -22,6 +21,8 @@ public class DrawLineInfo { private float width; + private int direction; + public String getType() { return type; } @@ -61,4 +62,12 @@ public class DrawLineInfo { public void setWidth(float width) { this.width = width; } + + public int getDirection() { + return direction; + } + + public void setDirection(int direction) { + this.direction = direction; + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoStopPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoStopPolylineManager.java new file mode 100644 index 0000000000..86aa8fb677 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/IMoGoStopPolylineManager.java @@ -0,0 +1,27 @@ +package com.mogo.module.v2x.manager; + +import android.content.Context; + +import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.map.overlay.IMogoPolyline; +import com.mogo.module.v2x.entity.model.DrawLineInfo; + +/** + * 绘制可变宽度和渐变的线 + */ +public interface IMoGoStopPolylineManager extends IProvider { + /** + * 绘制连接线,目标车,与当前车辆间连线 + * + * @param context + * @param info + */ + void drawStopPolyline(Context context, DrawLineInfo info); + + /** + * 移除连接线 + */ + void clearLine(); + + IMogoPolyline getMogoStopPolyline(); +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java index 5f64cf646b..d2d42ead25 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoPersonWarnPolylineManager.java @@ -39,26 +39,12 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan // 渐变色 List colors = new ArrayList<>(); - -// if (info.getType() != null) { -// if (info.getType().equals("1")) { //预警 TODO -// colors.add(0xFFFFA31A); -// colors.add(0xFFFFA31A); -// } else { -// colors.add(0xFFE32F46); -// colors.add(0xFFE32F46); -// } -// } else { -// colors.add(0xFFE32F46); -// colors.add(0xFFE32F46); -// } - colors.add(0xFFE32F46); colors.add(0xFFE32F46); // 线条粗细,渐变,渐变色值 - Log.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager width = " + info.getWidth()); - options.width(info.getWidth()).useGradient(true).transparency(0.1f).colorValues(colors); + Log.d(V2XConst.LOG_NAME_WARN, "MoGoPersonWarnPolylineManager width = " + info.getWidth()); + options.width(info.getWidth()).useGradient(true).colorValues(colors); // 当前车辆位置 options.add(info.getStartLocation()); // 目标车辆位置 @@ -66,7 +52,7 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan // 绘制线的对象 mMogoPolyline = V2XServiceManager.getMogoOverlayManager().addPolyline(options); - + mMogoPolyline.setTransparency(0.5f); } catch (Exception e) { e.printStackTrace(); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoStopPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoStopPolylineManager.java new file mode 100644 index 0000000000..1e957b2199 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoStopPolylineManager.java @@ -0,0 +1,79 @@ +package com.mogo.module.v2x.manager.impl; + +import android.content.Context; +import android.util.Log; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.overlay.IMogoPolyline; +import com.mogo.map.overlay.MogoPolylineOptions; +import com.mogo.module.v2x.MoGoV2XServicePaths; +import com.mogo.module.v2x.V2XConst; +import com.mogo.module.v2x.V2XServiceManager; +import com.mogo.module.v2x.entity.model.DrawLineInfo; +import com.mogo.module.v2x.manager.IMoGoStopPolylineManager; +import com.mogo.module.v2x.manager.IMoGoWarnPolylineManager; + +import java.util.ArrayList; +import java.util.List; + +/** + * 当前车辆与道路事件的连接线 + */ +@Route(path = MoGoV2XServicePaths.PATH_V2X_STOP_POLYLINE_MANAGER) +public class MoGoStopPolylineManager implements IMoGoStopPolylineManager { + private static IMogoPolyline mMogoPolyline; + + + @Override + public void drawStopPolyline(Context context, DrawLineInfo info) { + if (info == null) { + return; + } + + try { + if (mMogoPolyline != null) { + mMogoPolyline.remove(); + } + + // 连接线参数 + MogoPolylineOptions options = new MogoPolylineOptions(); + List colors = new ArrayList<>(); + colors.add(0xFFE32F46); + colors.add(0xFFE32F46); + + Log.d(V2XConst.LOG_NAME_WARN, "MoGoStopPolylineManager roadWidth = " + info.getWidth()); + // 线条粗细,渐变,渐变色值 + // 当前车辆位置 + options.width(info.getWidth() == 0.0 ? 60 : info.getWidth()).useGradient(true).colorValues(colors); + options.add(info.getStartLocation()); + // 目标车辆位置 + options.add(info.getEndLocation()); + + // 绘制线的对象 + mMogoPolyline = V2XServiceManager.getMogoOverlayManager().addPolyline(options); + mMogoPolyline.setTransparency(0.5f); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void clearLine() { + if (mMogoPolyline != null) { + mMogoPolyline.remove(); + mMogoPolyline = null; + } + } + + @Override + public void init(Context context) { + + } + + + @Override + public IMogoPolyline getMogoStopPolyline() { + return mMogoPolyline; + } +} 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 index c7bfc74e61..d3499534cb 100644 --- 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 @@ -1,26 +1,36 @@ package com.mogo.module.v2x.manager.impl; import android.content.Context; +import android.content.Intent; import android.location.Location; import android.util.Log; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.overlay.IMogoPolyline; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.drawer.V2XWarnDataDrawer; +import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XWarningEntity; +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.module.v2x.MoGoV2XServicePaths; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.entity.model.DrawLineInfo; import com.mogo.module.v2x.manager.IMoGoV2XCloundDataManager; +import com.mogo.module.v2x.utils.LocationUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WorkThreadHandler; -import com.mogo.utils.logger.Logger; + +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import static com.mogo.module.v2x.V2XServiceManager.getContext; @@ -31,6 +41,9 @@ import static com.mogo.module.v2x.V2XServiceManager.getContext; public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMogoCarLocationChangedListener2 { private V2XWarningEntity mCloundWarningInfo; private static String TAG = "MoGoV2XCloundDataManager"; + private boolean isSelfLineClear; + private List fillPoints = new ArrayList();//停止线经纬度合集 + @Override public void init(Context context) { @@ -43,21 +56,103 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> "); mCloundWarningInfo = cloundWarningInfo; + pointsBetween(); - //绘制识别物与交汇点连线,并且更新连线数据 - WorkThreadHandler.getInstance().postDelayed(() -> { - drawOtherObjectLine(cloundWarningInfo); - }, 0); + //发送预警提示 + MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); - //二轮车和行人的渲染和移动 - V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); + isSelfLineClear = false; + + Log.d(V2XConst.LOG_NAME_WARN, "direction = " + cloundWarningInfo.getDirection()); + if (cloundWarningInfo.getDirection() == 1) { //前方 + //停止线前方画线 + MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.heading); + WorkThreadHandler.getInstance().postDelayed(() -> { + //二轮车和行人的渲染和移动 + V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); + //绘制识别物与交汇点连线,并且更新连线数据 + drawStopLine(cloundWarningInfo, newLocation); + //添加停止线marker + handleStopLine(); + }, 0); + + UiThreadHandler.postDelayed(() -> { + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoStopPolylineManager().clearLine(); + + isSelfLineClear = true; + }, 8000); + + } else { //左侧或者右侧 + WorkThreadHandler.getInstance().postDelayed(() -> { + //绘制识别物与交汇点连线,并且更新连线数据 + drawOtherObjectLine(cloundWarningInfo); + //二轮车和行人的渲染和移动 + V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo); + }, 0); + + //延迟3秒清理线 + UiThreadHandler.postDelayed(() -> { + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + + isSelfLineClear = true; + }, 8000); + } - //延迟3秒清理线 - UiThreadHandler.postDelayed( () -> { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - }, 8000 ); } + + private void handleStopLine() { + for (int i = 0; i < fillPoints.size(); i++) { + V2XWarningEntity entity = new V2XWarningEntity(); + MogoLatLng latLng = (MogoLatLng) fillPoints.get(i); + entity.setLat(latLng.lat); + entity.setLat(latLng.lon); + entity.setCollisionLat(mCloundWarningInfo.getCollisionLat()); + entity.setCollisionLon(mCloundWarningInfo.getCollisionLon()); + entity.heading = mCloundWarningInfo.heading; + V2XWarnDataDrawer.getInstance().renderStopLineData(entity); + } + } + + /** + * 绘制停止线前方线 TODO 需要实时给行人当前位置 + */ + private void drawStopLine(V2XWarningEntity info, MogoLatLng mogoLatLng) { + IMogoPolyline polyLine = V2XServiceManager.getMoGoStopPolylineManager().getMogoStopPolyline(); + if (info != null) { + if (polyLine != null) { + Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null"); + polyLine.setPoints(Arrays.asList(new MogoLatLng(info.getLat(), info.getLon()), + new MogoLatLng(info.getCollisionLat(), info.getCollisionLon()))); + polyLine.setTransparency(0.5f); + } else { + Log.e(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine == null"); + DrawLineInfo lineInfo = new DrawLineInfo(); + MogoLatLng startLatlng = new MogoLatLng( + ((MogoLatLng) fillPoints.get(0)).lat, + ((MogoLatLng) fillPoints.get(0)).lon); + Log.d(V2XConst.LOG_NAME_WARN, "stop drawStopLine lon =" + startLatlng.lon + "--lat =" + startLatlng.lat); + MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon); + Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine lon =" + mogoLatLng.lon + "--lat =" + mogoLatLng.lat); + Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine lon =" + endLatlng.lon + "--lat =" + endLatlng.lat); + + lineInfo.setStartLocation(startLatlng); + lineInfo.setEndLocation(endLatlng); + lineInfo.setHeading(info.heading); + Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine width = " + info.getRoadwidth()); + lineInfo.setWidth(info.getRoadwidth()); + V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); + } + } else { + Log.e(V2XConst.LOG_NAME_WARN, "drawStopLine info == null"); + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + } + } + + /** * 绘制行人和二轮车连线,并且更新数据 TODO 需要实时给行人当前位置 */ @@ -68,6 +163,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog Log.d(V2XConst.LOG_NAME_WARN, "polyLine != null"); polyLine.setPoints(Arrays.asList(new MogoLatLng(info.getLat(), info.getLon()), new MogoLatLng(info.getCollisionLat(), info.getCollisionLon()))); + polyLine.setTransparency(0.5f); } else { Log.e(V2XConst.LOG_NAME_WARN, "polyLine == null"); DrawLineInfo lineInfo = new DrawLineInfo(); @@ -76,15 +172,10 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog lineInfo.setStartLocation(startLatlng); lineInfo.setEndLocation(endLatlng); lineInfo.setHeading(info.heading); - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { -// float roadWidth = V2XServiceManager.getMapUIController().getRoadWidth(info.getLon(), -// info.getLat(), (float) info.heading, true, true); - Log.d(V2XConst.LOG_NAME_WARN, "drawOtherObjectLine width = " + info.getRoadwidth()); - lineInfo.setWidth(info.getRoadwidth()); - } + Log.d(V2XConst.LOG_NAME_WARN, "drawOtherObjectLine width = " + info.getRoadwidth()); + lineInfo.setWidth(info.getRoadwidth()); V2XServiceManager.getMoGoPersonWarnPolylineManager().drawPersonWarnPolyline(getContext(), lineInfo); } - } else { Log.e(V2XConst.LOG_NAME_WARN, "info == null"); V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); @@ -101,35 +192,34 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog */ @Override public void onCarLocationChanged2(Location latLng) { - Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude()); +// Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear); //当行人经纬度交点 经纬度不为空,开始画线,否则清理 //自车只需要关注移动 - IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); - if (mCloundWarningInfo != null) { - if (mogoPolyline != null) { - mogoPolyline.setPoints(Arrays.asList(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()), - new MogoLatLng(mCloundWarningInfo.getCollisionLat(), mCloundWarningInfo.getCollisionLon()))); - + if (!isSelfLineClear) { + IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); + if (mCloundWarningInfo != null) { + if (mogoPolyline != null) { + mogoPolyline.setPoints(Arrays.asList(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()), + new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lat : mCloundWarningInfo.getCollisionLat(), + mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lon : mCloundWarningInfo.getCollisionLon()))); + mogoPolyline.setTransparency(0.5f); + } else { + Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth()); + DrawLineInfo info = new DrawLineInfo(); // 对象 + MogoLatLng startLatlng = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()); + MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lat : mCloundWarningInfo.getCollisionLat(), + mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lon : mCloundWarningInfo.getCollisionLon()); + info.setHeading(latLng.getBearing()); + info.setStartLocation(startLatlng); + info.setEndLocation(endLatlng); + info.setWidth(mCloundWarningInfo.getRoadwidth()); //TODO 还需要转换比例尺 + info.setDirection(mCloundWarningInfo.getDirection()); + V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); + } } else { - Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth()); - DrawLineInfo info = new DrawLineInfo(); // 对象 - MogoLatLng startLatlng = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()); - MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getCollisionLat(), mCloundWarningInfo.getCollisionLon()); - info.setHeading(latLng.getBearing()); - info.setStartLocation(startLatlng); - info.setEndLocation(endLatlng); - info.setWidth(mCloundWarningInfo.getRoadwidth()); //TODO 还需要转换比例尺 - V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); - } - - //延迟3秒清理线 TODO 何时 清理 - UiThreadHandler.postDelayed( () -> { + Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mCloundWarningInfo == null"); V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - }, 13000 ); - - } else { - Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mCloundWarningInfo == null"); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + } } } @@ -139,4 +229,33 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog } + /** + * 补点后的停止线经纬度合集 + */ + public void pointsBetween() { + try { + fillPoints.clear(); + List stopLines = mCloundWarningInfo.getStopLines(); + if (stopLines.size() > 1) { + MogoLatLng x = mCloundWarningInfo.getStopLines().get(0); + MogoLatLng y = mCloundWarningInfo.getStopLines().get(1); + //两点间的距离 + float distance = CoordinateUtils.calculateLineDistance(x.lon, x.lat, y.lon, y.lat); + float average = distance / 3; + //两点间的角度 + double angle = LocationUtils.getAngle(x.lon, x.lat, y.lon, y.lat); + //根据距离和角度获取下个点的经纬度 + fillPoints.add(x); + for (int i = 1; i < 3; i++) { + MogoLatLng newLocation = LocationUtils.getNewLocation(x, average * i, angle); + fillPoints.add(newLocation); + } + fillPoints.add(y); + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + } 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 c38d3869d4..51a9fcb00d 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 @@ -42,34 +42,26 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { MogoPolylineOptions options = new MogoPolylineOptions(); List colors = new ArrayList<>(); -// if (info.getType() != null) { -// if (info.getType().equals("1")) { //预警 TODO -// colors.add(0xFFFFA31A); -// colors.add(0xFFFFA31A); -// } else { -// colors.add(0xFFE32F46); -// colors.add(0xFFE32F46); -// } -// } else { -// Log.e(V2XConst.LOG_NAME_WARN, "drawWarnPolyline info.getType() == null "); -// colors.add(0xFFE32F46); -// colors.add(0xFFE32F46); -// } + if (info.getDirection() == 1) { + colors.add(0xFF3036FF); + colors.add(0xFF3036FF); + } else { + colors.add(0xFFE32F46); + colors.add(0xFFE32F46); + } - colors.add(0xFFE32F46); - colors.add(0xFFE32F46); - - Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager roadWidth = " + info.getWidth()); + Log.d(V2XConst.LOG_NAME_WARN, "MoGoWarnPolylineManager roadWidth = " + info.getWidth()); // 线条粗细,渐变,渐变色值 - options.width(info.getWidth()).useGradient(true).transparency(0.9f).colorValues(colors); -// options.width(info.getWidth()).useGradient(true).colorValues(colors); // 当前车辆位置 + options.width(info.getWidth() == 0.0 ? 60 : info.getWidth()).useGradient(true).colorValues(colors); +// options.width(60).useGradient(true).colorValues(colors); options.add(info.getStartLocation()); // 目标车辆位置 options.add(info.getEndLocation()); // 绘制线的对象 mMogoPolyline = V2XServiceManager.getMogoOverlayManager().addPolyline(options); + mMogoPolyline.setTransparency(0.5f); } catch (Exception e) { e.printStackTrace(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index 1eaf187abb..4b45679502 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -114,7 +114,11 @@ public class V2XScenarioManager implements IV2XScenarioManager { case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_LEFT: case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_RIGHT: case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_BOTTOM: - mV2XScenario = new V2XFrontWarningScenario(); + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + mV2XScenario = new V2XFrontWarningScenario(); + } else { + mV2XScenario = null; + } break; default: mV2XScenario = null; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java index e1f35a4d4c..09fa98f8ee 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpScenario.java @@ -67,7 +67,7 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM } else { closeWindow(); } - // return; + return; } if (isShow) { showButton(); @@ -98,8 +98,8 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM public void showWindow() { if (getV2XWindow() != null) { ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - (int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_140)); + ViewGroup.LayoutParams.MATCH_PARENT, + (int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_140)); V2XServiceManager.getMogoTopViewManager().addView(getV2XWindow().getView(), layoutParams); getV2XWindow().show(getV2XMessageEntity().getContent()); } @@ -107,9 +107,9 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM @Override public void closeWindow() { - if (getV2XWindow() != null) { - getV2XWindow().close(); - } +// if (getV2XWindow() != null) { +// getV2XWindow().close(); +// } } private V2XVoiceCallbackListener cancelCb = null; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java index 84b1c8081d..00ecfd0077 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java @@ -75,10 +75,8 @@ public class V2XCarForHelpWindow extends V2XBasWindow implements IV2XWindow() { @Override public void onSuccess(BaseData result) { - AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("已取消", null); //移除窗体 V2XServiceManager.getMogoTopViewManager().removeView(V2XCarForHelpWindow.this); - V2XVoiceManager.INSTANCE.unRegisterWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP); } @Override @@ -86,6 +84,20 @@ public class V2XCarForHelpWindow extends V2XBasWindow implements IV2XWindow { - V2XMessageEntity v2XMessageEntity = - TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData(); - - Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION); - intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); - LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent); - }); - mBtnTriggerPushEvent.setOnClickListener(v -> { V2XMessageEntity v2XMessageEntity = TestOnLineCarUtils.getV2XScenarioPushEventData(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XFrontWarningScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XFrontWarningScenario.java index 2355cc0096..d8031e5759 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XFrontWarningScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XFrontWarningScenario.java @@ -42,7 +42,7 @@ import java.util.List; * @description 车路云—场景预警-V1.0 前车/行人/摩托车/盲区碰撞预警 * @since: 2021/3/24 */ -public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener , IMogoCarLocationChangedListener2 { +public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { private int direction; private V2XWarningEntity mMarkerEntity; @@ -134,14 +134,4 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV } - @Override - public void onCarLocationChanged2(Location latLng) { - - } - - @Override - public void onCarLocationChanged(MogoLatLng latLng) { - mMarkerEntity.setCarLocation(latLng); - drawPOI(); - } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index 4c9e3078ae..d7566943a1 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java @@ -48,7 +48,7 @@ public class V2XWarningMarker implements IV2XMarker { if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { pointsBetween(); //绘制停止线 - drawStopLines(fillPoints); +// drawStopLines(fillPoints); drawSafeLine(); WorkThreadHandler.getInstance().postDelayed(() -> { V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); @@ -72,9 +72,9 @@ public class V2XWarningMarker implements IV2XMarker { //根据到停止线的距离和方向角获取经纬度 MogoLatLng stopLineLo = LocationUtils.getNewLocation(car, mMarkerEntity.getStopLineDistance(), mMarkerEntity.getAngle()); - if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() > 0) { - drawLine(car, stopLineLo); - } +// if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() > 0) { +// drawLine(car, stopLineLo); +// } } else { Log.d(TAG, "自车位置没有拿到"); } @@ -152,6 +152,7 @@ public class V2XWarningMarker implements IV2XMarker { DrawLineInfo drawLineInfo = new DrawLineInfo(); drawLineInfo.setStartLocation(s); drawLineInfo.setEndLocation(e); + drawLineInfo.setWidth(60); V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, drawLineInfo); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java index ad2838ce84..c8d2e6b766 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/EventTypeUtils.java @@ -135,7 +135,7 @@ public class EventTypeUtils { break; // 积水 case V2XPoiTypeEnum.FOURS_PONDING: - str = "前方道路积水道路积水"; + str = "前方道路积水"; break; // 浓雾 case V2XPoiTypeEnum.FOURS_FOG: diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_play.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_play.png new file mode 100644 index 0000000000..b38e732923 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_play.png differ diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail.xml index bc25522ee9..435eb8b454 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail.xml @@ -205,4 +205,82 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml index ac91f6c608..ae2ab6d8bb 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml @@ -229,28 +229,44 @@ android:id="@+id/iv_event" android:layout_width="@dimen/dp_100" android:layout_height="@dimen/dp_100" + android:layout_marginLeft="@dimen/dp_30" android:scaleType="fitXY" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - android:layout_marginLeft="@dimen/dp_30" app:miv_failureHolder="@drawable/v2x_icon_live_logo" app:miv_overlayImageId="@drawable/v2x_icon_live_logo" app:miv_placeHolder="@drawable/v2x_icon_live_logo" app:miv_topLeftRadius="@dimen/dp_20" /> - + app:layout_constraintTop_toTopOf="parent"> + + + + + + diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml index 85c806cb25..7c1583a11d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml @@ -238,20 +238,6 @@ android:textSize="@dimen/dp_22" android:textStyle="bold" /> -