From 5864813775b0f69635e5e2d0214c1c25707b62bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 2 Apr 2021 10:29:10 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E9=99=90=E5=88=B6=E6=9C=80=E4=BC=98?= =?UTF-8?q?=E8=B7=AF=E7=BA=BF=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/v2x/scenario/impl/V2XScenarioManager.java | 4 +++- .../scenario/scene/route/V2XOptimalRouteVREventMarker.java | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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 5ed3162f4d..1eaf187abb 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 @@ -16,8 +16,8 @@ import com.mogo.module.v2x.scenario.scene.livecar.V2XPushLiveCarScenario; import com.mogo.module.v2x.scenario.scene.livecar.V2XVoiceCallLiveScenario; import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkScenario; import com.mogo.module.v2x.scenario.scene.push.V2XPushEventScenario; -import com.mogo.module.v2x.scenario.scene.route.V2XOptimalRouteVREventScenario; import com.mogo.module.v2x.scenario.scene.road.V2XRoadEventScenario; +import com.mogo.module.v2x.scenario.scene.route.V2XOptimalRouteVREventScenario; import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpScenario; import com.mogo.module.v2x.scenario.scene.ugc.V2XEventUgcScenario; import com.mogo.module.v2x.scenario.scene.warning.V2XFrontWarningScenario; @@ -106,6 +106,8 @@ public class V2XScenarioManager implements IV2XScenarioManager { case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW: if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { mV2XScenario = new V2XOptimalRouteVREventScenario(); + } else { + mV2XScenario = null; } break; case V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_TOP: diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java index 0702296ea3..4dd538fe59 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/route/V2XOptimalRouteVREventMarker.java @@ -54,12 +54,11 @@ public class V2XOptimalRouteVREventMarker implements IV2XMarker colors = new ArrayList<>(); + colors.add(0xFFF95959); - colors.add(0xFF942B48); - colors.add(0xFFCB253A); // 线条粗细,渐变,渐变色值 - options.width(30).useGradient(true).colorValues(colors); + options.width(20).useGradient(true).colorValues(colors); for (double[] doubles : entity.getRecommendPolyline()) { options.add(doubles[0], doubles[1]); From c08324d986d16dc7ee576860f67666d85bd13672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 2 Apr 2021 11:49:26 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=8B=E5=8A=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/module/extensions/navi/TopView.java | 6 ++++-- .../res/raw/scenario_push_vr_event_data_yongdu_gongsi.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) 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 0f98f21a68..a883d44ad8 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 @@ -43,15 +43,17 @@ public class TopView extends FrameLayout { return super.onTouchEvent(event); } - private float originY; + private float originX,originY; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { originY = ev.getY(); + originX = ev.getY(); } else if (ev.getAction() == MotionEvent.ACTION_MOVE) { // 垂直滑动,事件拦截 - return Math.abs(originY - ev.getY()) > ViewConfiguration.get(getContext()).getScaledTouchSlop(); + return Math.abs(originY - ev.getY()) > ViewConfiguration.get(getContext()).getScaledTouchSlop() + ||Math.abs(originX - ev.getX()) > ViewConfiguration.get(getContext()).getScaledTouchSlop(); } return false; } diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json index 7eac88ddd5..c4a47a5b64 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_push_vr_event_data_yongdu_gongsi.json @@ -1,7 +1,7 @@ { "sceneId": "200008", "alarmContent": "拥堵路线推荐", - "expireTime": 20000, + "expireTime": 10000, "sceneCategory": 0, "sceneDescription": "拥堵路线推荐", "sceneName": "拥堵路线推荐", From 9417136b153b7047aac41a63e5b3c6826bed32cf Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 2 Apr 2021 11:01:43 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=A1=A5=E7=82=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/warning/V2XWarningMarker.java | 36 ++++++++++--------- .../res/raw/scenario_warning_event_data.json | 2 +- 2 files changed, 21 insertions(+), 17 deletions(-) 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 cb6c5decb6..9b17a2bb16 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 @@ -29,6 +29,7 @@ import java.util.List; */ public class V2XWarningMarker implements IV2XMarker { private V2XWarningEntity mMarkerEntity; + private MarkerShowEntity markerShowEntity = new MarkerShowEntity(); private Context mContext = V2XServiceManager.getContext(); @Override @@ -39,30 +40,33 @@ public class V2XWarningMarker implements IV2XMarker { location.setLat(mMarkerEntity.getLat()); location.setLon(mMarkerEntity.getLon()); - MarkerShowEntity markerShowEntity = new MarkerShowEntity(); markerShowEntity.setMarkerLocation(location); markerShowEntity.setMarkerType(V2XConst.V2X_FRONT_WARNING_MARKER); - - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - clearPOI(); - WorkThreadHandler.getInstance().postDelayed(() -> { - IMogoMarker marker = drawMarkerAndReturn(markerShowEntity); - //如果有预警碰撞点,识别物与预警碰撞点之间连线,并执行平移动画 - if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() != 0) { - drawLine(); - smooth(marker); - } - }, 0); - - } else { - - } +// drawLineAndSmooth(); + pointsBetween(); } catch (Exception e) { } } + private void drawLineAndSmooth(){ + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + clearPOI(); + WorkThreadHandler.getInstance().postDelayed(() -> { + IMogoMarker marker = drawMarkerAndReturn(markerShowEntity); + //如果有预警碰撞点,识别物与预警碰撞点之间连线,并执行平移动画 + if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() != 0) { + drawLine(); + smooth(marker); + } + }, 0); + + } else { + + } + } + public void pointsBetween() { try { List stopLines = mMarkerEntity.getStopLines(); diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json index 06b468f7d1..d7728ad888 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json @@ -2,7 +2,7 @@ "type": 2, "lat": 39.977148, "lon": 116.417478, - "distance": 2.22, + "distance": 2, "collisionLat": 39.977094, "collisionLon": 116.417634, "stopLines":[ From a917bd280b78fae7422e6ff1eaf2a1f1362dec23 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 2 Apr 2021 14:08:58 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E7=BB=98=E5=88=B6=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/warning/V2XWarningMarker.java | 44 ++++++++++++++++--- .../main/res/layout/window_test_console.xml | 2 +- .../res/raw/scenario_warning_event_data.json | 8 ++-- 3 files changed, 43 insertions(+), 11 deletions(-) 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 9b17a2bb16..18326771bc 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 @@ -31,6 +31,7 @@ public class V2XWarningMarker implements IV2XMarker { private V2XWarningEntity mMarkerEntity; private MarkerShowEntity markerShowEntity = new MarkerShowEntity(); private Context mContext = V2XServiceManager.getContext(); + List fillPoints = new ArrayList();//停止线经纬度合集 @Override public void drawPOI(Object entity) { @@ -41,16 +42,22 @@ public class V2XWarningMarker implements IV2XMarker { location.setLon(mMarkerEntity.getLon()); markerShowEntity.setMarkerLocation(location); - markerShowEntity.setMarkerType(V2XConst.V2X_FRONT_WARNING_MARKER); // drawLineAndSmooth(); pointsBetween(); + //绘制停止线 + drawStopLines(fillPoints); + WorkThreadHandler.getInstance().postDelayed(() -> { + clearPOI(); + }, 6_000); + //绘制安全距离 + } catch (Exception e) { } } - private void drawLineAndSmooth(){ + private void drawLineAndSmooth() { if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { clearPOI(); WorkThreadHandler.getInstance().postDelayed(() -> { @@ -67,8 +74,10 @@ public class V2XWarningMarker implements IV2XMarker { } } + //补点后的停止线经纬度合集 public void pointsBetween() { try { + fillPoints.clear(); List stopLines = mMarkerEntity.getStopLines(); if (stopLines.size() > 1) { MogoLatLng x = mMarkerEntity.getStopLines().get(0); @@ -79,11 +88,12 @@ public class V2XWarningMarker implements IV2XMarker { //两点间的角度 double angle = LocationUtils.getAngle(x.lon, x.lat, y.lon, y.lat); //根据距离和角度获取下个点的经纬度 - List replenish = new ArrayList(); + fillPoints.add(x); for (int i = 1; i < 3; i++) { MogoLatLng newLocation = LocationUtils.getNewLocation(x, average * i, angle); - replenish.add(newLocation); + fillPoints.add(newLocation); } + fillPoints.add(y); } } catch (Exception e) { @@ -91,7 +101,29 @@ public class V2XWarningMarker implements IV2XMarker { } - //绘制marker + private void drawStopLines(List points) { + clearPOI(); + for (int i = 0; i < points.size(); i++) { + MogoLatLng latLng = (MogoLatLng) points.get(i); + drawMarkerWithLocation(latLng); + } + } + + private void drawMarkerWithLocation(MogoLatLng latLng) { + MogoMarkerOptions options = new MogoMarkerOptions() + .object(markerShowEntity) + .latitude(latLng.lat) + .longitude(latLng.lon); + IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); + options.icon3DRes(com.mogo.module.service.R.raw.people); + options.anchor(0.5f, 0.5f); + options.anchorColor("#FF4040"); + IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(V2XConst.V2X_FRONT_WARNING_MARKER, options); + iMarkerView.setMarker(marker); + marker.setToTop(); + } + + //绘制并返回marker public IMogoMarker drawMarkerAndReturn(MarkerShowEntity markerShowEntity) { MogoMarkerOptions options = new MogoMarkerOptions() .object(markerShowEntity) @@ -100,7 +132,7 @@ public class V2XWarningMarker implements IV2XMarker { IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); options.icon3DRes(com.mogo.module.service.R.raw.people); options.anchorColor("#FF4040"); - IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options); + IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(V2XConst.V2X_FRONT_WARNING_MARKER, options); iMarkerView.setMarker(marker); marker.setToTop(); return marker; 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 98db0c3e37..85c806cb25 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 @@ -246,7 +246,7 @@ android:layout_marginBottom="@dimen/dp_10" android:background="#FF0606" android:padding="@dimen/dp_10" - android:text="前车碰撞预警" + android:text="前方碰撞预警" android:textColor="#FFFFFF" android:textSize="@dimen/dp_22" app:layout_constraintBottom_toBottomOf="parent" diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json index d7728ad888..ded0e8a92c 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json @@ -7,12 +7,12 @@ "collisionLon": 116.417634, "stopLines":[ { - "lat": 39.977082, - "lon": 116.417553 + "lat": 39.976858, + "lon": 116.417651 }, { - "lat": 39.977078, - "lon": 116.417666 + "lat": 39.976874, + "lon": 116.417757 } ], "from": 1, From 5990cec4392cd963628d77838fef09442d2c5c8e Mon Sep 17 00:00:00 2001 From: wujifei Date: Fri, 2 Apr 2021 15:04:10 +0800 Subject: [PATCH 5/8] =?UTF-8?q?new#vr=E6=A8=A1=E5=BC=8F=E6=95=85=E9=9A=9C?= =?UTF-8?q?=E6=B1=82=E5=8A=A9UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../com/mogo/module/share/ShareControl.java | 6 +- .../scene/help/V2XCarForHelpScenario.java | 24 ++++- .../scene/help/V2XCarForHelpWindow.java | 102 ++++++++++++++++++ .../res/drawable-xhdpi/icon_car_for_help.png | Bin 0 -> 5137 bytes .../res/layout/window_carforhelp_detail.xml | 55 ++++++++++ .../src/main/res/values/colors.xml | 2 + 7 files changed, 185 insertions(+), 6 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_car_for_help.png create mode 100644 modules/mogo-module-v2x/src/main/res/layout/window_carforhelp_detail.xml diff --git a/gradle.properties b/gradle.properties index 73f8f9dadb..2172a6f8a0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -145,7 +145,7 @@ MOGO_OCH_TAXI_VERSION=1.0.0 ######## 外部依赖引用 # 车聊聊 -CARCHATTING_VERSION=2.2.77 +CARCHATTING_VERSION=2.2.311 # 车聊聊接口 CARCHATTINGPROVIDER_VERSION=1.1.11 # websocket diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index c9a7816550..5c04289638 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -301,9 +301,9 @@ public class ShareControl implements IMogoShareManager, Handler.Callback { } break; case VOICE_CMD_PUB_TROUBLE_HELP: - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - return; - } +// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { +// return; +// } if (needAuth()) { goAuth(STEP_AFTER_AUTH_TYPE_SEEK_HELP, TYPE_DENSE_FOG, false); } else { 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 b558ffa800..e1f35a4d4c 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 @@ -2,6 +2,8 @@ package com.mogo.module.v2x.scenario.scene.help; import android.content.Intent; import android.os.CountDownTimer; +import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.Nullable; @@ -11,6 +13,7 @@ import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.scenario.impl.AbsV2XScenario; +import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpWindow; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; import com.mogo.module.v2x.voice.V2XVoiceConstants; @@ -44,6 +47,7 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM private V2XSeekHelpButton mV2XSeekHelpButton; public V2XCarForHelpScenario() { + setV2XWindow(new V2XCarForHelpWindow(V2XServiceManager.getContext())); mV2XSeekHelpButton = new V2XSeekHelpButton(); setV2XButton(mV2XSeekHelpButton); V2XServiceManager.getMoGoStatusManager().registerStatusChangedListener(TAG, StatusDescriptor.SEEK_HELPING, this); @@ -57,6 +61,14 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM } setV2XMessageEntity(v2XMessageEntity); Boolean isShow = getV2XMessageEntity().getContent(); + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + if (isShow) { + showWindow(); + } else { + closeWindow(); + } + // return; + } if (isShow) { showButton(); mySeekHelpCountDownTimerCancel(); @@ -84,12 +96,20 @@ public class V2XCarForHelpScenario extends AbsV2XScenario implements IM @Override public void showWindow() { - //无window + if (getV2XWindow() != null) { + ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + (int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_140)); + V2XServiceManager.getMogoTopViewManager().addView(getV2XWindow().getView(), layoutParams); + getV2XWindow().show(getV2XMessageEntity().getContent()); + } } @Override public void closeWindow() { - //无window + 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 new file mode 100644 index 0000000000..84b1c8081d --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XCarForHelpWindow.java @@ -0,0 +1,102 @@ +package com.mogo.module.v2x.scenario.scene.help; + +import android.content.Context; +import android.content.Intent; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import com.mogo.commons.data.BaseData; +import com.mogo.commons.voice.AIAssist; +import com.mogo.module.common.entity.V2XPushMessageEntity; +import com.mogo.module.v2x.R; +import com.mogo.module.v2x.V2XConst; +import com.mogo.module.v2x.V2XServiceManager; +import com.mogo.module.v2x.listener.V2XWindowStatusListener; +import com.mogo.module.v2x.network.V2XRefreshCallback; +import com.mogo.module.v2x.scenario.scene.V2XBasWindow; +import com.mogo.module.v2x.scenario.view.IV2XWindow; +import com.mogo.module.v2x.utils.V2XUtils; +import com.mogo.module.v2x.voice.V2XVoiceCallbackListener; +import com.mogo.module.v2x.voice.V2XVoiceConstants; +import com.mogo.module.v2x.voice.V2XVoiceManager; +import com.mogo.utils.storage.SharedPrefsMgr; + +import static com.mogo.module.v2x.V2XConst.MODULE_NAME; + +/** + * created by wujifei on 2021/4/1 16:04 + * describe: + */ +public class V2XCarForHelpWindow extends V2XBasWindow implements IV2XWindow { + private static final String TAG = MODULE_NAME + "_" + V2XCarForHelpScenario.class.getSimpleName(); + private TextView tvCancel; + private V2XVoiceCallbackListener cancelCb = (String command, Intent intent) -> { + close(); + }; + + + public V2XCarForHelpWindow(Context context) { + this(context, null); + } + + public V2XCarForHelpWindow(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public V2XCarForHelpWindow(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(context); + } + + private void initView(Context context) { + LayoutInflater.from(context).inflate(R.layout.window_carforhelp_detail, this); + tvCancel = (TextView) findViewById(R.id.tv_cancel); + tvCancel.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + close(); + } + }); + } + + @Override + public void show(Boolean entity) { + V2XVoiceManager.INSTANCE.registerWakeCmd(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CANCEL_HELP, cancelCb); + } + + @Override + public void close() { + if (V2XServiceManager.getMoGoStatusManager().isSeekHelping()) { + V2XServiceManager.getMoGoStatusManager().setSeekHelping(TAG, false); + SharedPrefsMgr.getInstance(V2XUtils.getApp()).putLong(V2XConst.SEEK_HELP_TIME, 0); + V2XServiceManager.getV2XRefreshModel().cancelHelpSignal(new V2XRefreshCallback() { + @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 + public void onFail(String msg) { + Toast.makeText(V2XServiceManager.getContext(), msg, Toast.LENGTH_SHORT).show(); + } + }); + } + + } + + @Override + public View getView() { + return this; + } + + @Override + public void setWindowStatusListener(V2XWindowStatusListener listener) { + + } +} diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_car_for_help.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/icon_car_for_help.png new file mode 100644 index 0000000000000000000000000000000000000000..6244ee2b2fdadba21e6f9edcebf6bdf5853ed628 GIT binary patch literal 5137 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 + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/values/colors.xml b/modules/mogo-module-v2x/src/main/res/values/colors.xml index cb5b32ca4c..f3c8c733f3 100644 --- a/modules/mogo-module-v2x/src/main/res/values/colors.xml +++ b/modules/mogo-module-v2x/src/main/res/values/colors.xml @@ -20,4 +20,6 @@ #4C83FF #FF3036 + + #F63A35 \ No newline at end of file From f9f117423cd3aef7ac3cec6b61f6fc1dbc3a6eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 2 Apr 2021 16:33:56 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BA=86=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E5=9C=B0=E5=9B=BE1.0.0-vr-8.5.2=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BA=86=E9=A1=BA=E4=B9=89=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index 8a8e49cbfe..2ac43dc030 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.1' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.2' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4' } From 0f4c9405245412d0acb02af1eb4b8b371fde4ef1 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 2 Apr 2021 17:19:04 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=AE=89=E5=85=A8=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E7=BB=98=E5=88=B6(=E8=87=AA=E8=BD=A6=E5=88=B0=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E7=BA=BF=E8=B7=9D=E7=A6=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/V2XWarningEntity.java | 46 +++--------- .../java/com/mogo/module/v2x/V2XConst.java | 4 + .../warning/V2XFrontWarningScenario.java | 16 +++- .../scene/warning/V2XWarningMarker.java | 74 +++++++++++-------- .../scene/warning/V2XWarningWindow.java | 6 +- .../res/raw/scenario_warning_event_data.json | 6 +- 6 files changed, 78 insertions(+), 74 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java index df3e48319a..9f294af585 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/V2XWarningEntity.java @@ -58,40 +58,11 @@ public class V2XWarningEntity implements Serializable { //自组字段 //tts播报 private String tts; - //打点位置 - private MarkerLocation location; + //自车位置 + private MogoLatLng carLocation; - public void setLocation(MarkerLocation location) { - this.location = location; - } - - public MarkerLocation getLocation() { - if (location == null) { - MarkerLocation location = new MarkerLocation(); - location.setLat(getLat()); - location.setLon(getLon()); - setLocation(location); - } - return location; - } - - - public void setTipContent(int type) { - switch (type) { - case 0: - this.warningContent = "行人碰撞预警"; - break; - case 1: - case 3: - case 4: - this.warningContent = "前车碰撞预警"; - break; - case 2: - this.warningContent = "摩托车碰撞预警"; - break; - default: - break; - } + public MogoLatLng getCarLocation() { + return carLocation; } public void setTts(int type) { @@ -167,6 +138,10 @@ public class V2XWarningEntity implements Serializable { this.stopLines = stopLines; } + public void setCarLocation(MogoLatLng carLocation) { + this.carLocation = carLocation; + } + public int getType() { return type; } @@ -212,9 +187,6 @@ public class V2XWarningEntity implements Serializable { } public String getWarningContent() { - if (this.warningContent == null) { - setTipContent(type); - } return warningContent; } @@ -270,7 +242,7 @@ public class V2XWarningEntity implements Serializable { ", systemTime=" + systemTime + ", satelliteTime=" + satelliteTime + ", tts='" + tts + '\'' + - ", location=" + location + + ", carLocation=" + carLocation + '}'; } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java index 4d03e6cf94..1430bf8fa2 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XConst.java @@ -145,6 +145,10 @@ public class V2XConst { * */ public static final String V2X_FRONT_WARNING_MARKER = "V2X_FRONT_WARNING_MARKER"; + /* + *V2X 车路云前方预警 + * */ + public static final String V2X_FRONT_STOP_LINE = "V2X_FRONT_STOP_LINE"; /** * V2X预警日志tag */ 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 4b58b04e90..2355cc0096 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 @@ -2,6 +2,7 @@ package com.mogo.module.v2x.scenario.scene.warning; import android.content.Context; import android.content.Intent; +import android.location.Location; import android.util.Log; import android.view.View; import android.view.ViewGroup; @@ -9,7 +10,9 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.MogoLatLng; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XPoiTypeEnum; @@ -39,7 +42,7 @@ import java.util.List; * @description 车路云—场景预警-V1.0 前车/行人/摩托车/盲区碰撞预警 * @since: 2021/3/24 */ -public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener { +public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener , IMogoCarLocationChangedListener2 { private int direction; private V2XWarningEntity mMarkerEntity; @@ -130,4 +133,15 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV public void beforeViewRemoveAnim(View view) { } + + @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 18326771bc..90eb63254b 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 @@ -24,14 +24,14 @@ import java.util.List; /** * @author liujing - * @description 描述 + * @description 前方预警marker打点 绘制安全线和预警线 * @since: 2021/3/30 */ public class V2XWarningMarker implements IV2XMarker { private V2XWarningEntity mMarkerEntity; private MarkerShowEntity markerShowEntity = new MarkerShowEntity(); private Context mContext = V2XServiceManager.getContext(); - List fillPoints = new ArrayList();//停止线经纬度合集 + private List fillPoints = new ArrayList();//停止线经纬度合集 @Override public void drawPOI(Object entity) { @@ -42,14 +42,17 @@ public class V2XWarningMarker implements IV2XMarker { location.setLon(mMarkerEntity.getLon()); markerShowEntity.setMarkerLocation(location); -// drawLineAndSmooth(); - pointsBetween(); - //绘制停止线 - drawStopLines(fillPoints); - WorkThreadHandler.getInstance().postDelayed(() -> { - clearPOI(); - }, 6_000); - //绘制安全距离 + + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + pointsBetween(); + //绘制停止线 + drawStopLines(fillPoints); + drawSafeLine(); + WorkThreadHandler.getInstance().postDelayed(() -> { + V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + }, 6_000); + } } catch (Exception e) { @@ -57,21 +60,27 @@ public class V2XWarningMarker implements IV2XMarker { } - private void drawLineAndSmooth() { - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - clearPOI(); - WorkThreadHandler.getInstance().postDelayed(() -> { - IMogoMarker marker = drawMarkerAndReturn(markerShowEntity); - //如果有预警碰撞点,识别物与预警碰撞点之间连线,并执行平移动画 - if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() != 0) { - drawLine(); - smooth(marker); + //绘制安全距离 + private void drawSafeLine() { + clearPOI(); + WorkThreadHandler.getInstance().postDelayed(() -> { + //自车位置 + MogoLatLng car = mMarkerEntity.getCarLocation(); + if (car == null) { + double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon(); + double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(); + car = new MogoLatLng(lat, lon); + car = new MogoLatLng(39.977709,116.417703); + } + if (car != null) { + //根据到停止线的距离和方向角获取经纬度 + MogoLatLng + stopLineLo = LocationUtils.getNewLocation(car, mMarkerEntity.getStopLineDistance(), mMarkerEntity.getAngle()); + if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() > 0) { + drawLine(car, stopLineLo); } - }, 0); - - } else { - - } + } + }, 0); } //补点后的停止线经纬度合集 @@ -101,15 +110,17 @@ public class V2XWarningMarker implements IV2XMarker { } + //绘制停止线-通过打点的方式实现 private void drawStopLines(List points) { clearPOI(); + V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); for (int i = 0; i < points.size(); i++) { MogoLatLng latLng = (MogoLatLng) points.get(i); - drawMarkerWithLocation(latLng); + drawMarkerWithLocation(latLng, V2XConst.V2X_FRONT_STOP_LINE); } } - private void drawMarkerWithLocation(MogoLatLng latLng) { + private void drawMarkerWithLocation(MogoLatLng latLng, String tag) { MogoMarkerOptions options = new MogoMarkerOptions() .object(markerShowEntity) .latitude(latLng.lat) @@ -118,7 +129,7 @@ public class V2XWarningMarker implements IV2XMarker { options.icon3DRes(com.mogo.module.service.R.raw.people); options.anchor(0.5f, 0.5f); options.anchorColor("#FF4040"); - IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(V2XConst.V2X_FRONT_WARNING_MARKER, options); + IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(tag, options); iMarkerView.setMarker(marker); marker.setToTop(); } @@ -139,12 +150,10 @@ public class V2XWarningMarker implements IV2XMarker { } //绘制线 - public void drawLine() { + public void drawLine(MogoLatLng s, MogoLatLng e) { DrawLineInfo drawLineInfo = new DrawLineInfo(); - MogoLatLng slatLng = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon()); - MogoLatLng endLatLng = new MogoLatLng(mMarkerEntity.getCollisionLat(), mMarkerEntity.getCollisionLon()); - drawLineInfo.setStartLocation(slatLng); - drawLineInfo.setEndLocation(endLatLng); + drawLineInfo.setStartLocation(s); + drawLineInfo.setEndLocation(e); V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, drawLineInfo); } @@ -170,4 +179,5 @@ public class V2XWarningMarker implements IV2XMarker { public void clearLine() { V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); } + } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningWindow.java index 3983091eaf..14e2ee8528 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningWindow.java @@ -1,6 +1,7 @@ package com.mogo.module.v2x.scenario.scene.warning; import android.content.Context; +import android.location.Location; import android.os.Handler; import android.util.AttributeSet; import android.view.LayoutInflater; @@ -10,6 +11,10 @@ import android.widget.TextView; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.VoicePreemptType; +import com.mogo.map.MogoLatLng; +import com.mogo.map.navi.IMogoCarLocationChangedListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; +import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.entity.V2XWarningEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; @@ -120,6 +125,5 @@ public class V2XWarningWindow extends V2XBasWindow implements IV2XWindow { V2XServiceManager .getMogoTopViewManager() .removeView(this); - } } diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json index ded0e8a92c..91f29e6187 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data.json @@ -5,7 +5,7 @@ "distance": 2, "collisionLat": 39.977094, "collisionLon": 116.417634, - "stopLines":[ + "stopLines": [ { "lat": 39.976858, "lon": 116.417651 @@ -16,11 +16,11 @@ } ], "from": 1, - "angle": 120, + "angle": 0, "direction": 10014, "speed": 11.108121, "targetColor": "#FF4040", - "stopLineDistance": 20, + "stopLineDistance": 30, "stopLineLat": 39.977094, "stopLineLon": 116.417634, "warningContent": "小心行人", From 48942b7121e8f9dad2f38617ec198c3664fa9402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 2 Apr 2021 17:40:39 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86V2X=E7=9A=84?= =?UTF-8?q?=E9=81=93=E8=B7=AF=E4=BA=8B=E4=BB=B6=E7=BB=98=E5=88=B6=E7=82=B9?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E5=9B=9E=E7=A2=89=E7=9A=84=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/v2x/listener/V2XLocationListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XLocationListener.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XLocationListener.java index 9181b64e38..411ee5efba 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XLocationListener.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XLocationListener.java @@ -89,12 +89,12 @@ public class V2XLocationListener implements IMogoLocationListener, CarStatusList loc.setAltitude( location.getAltitude() ); loc.setBearing( location.getBearing() ); loc.setProvider( location.getProvider() ); -// onLocationChangedImpl( loc ); + onLocationChangedImpl( loc ); } @Override public void onLocationChanged(MogoLocation location) { - onLocationChangedImpl(location); +// onLocationChangedImpl(location); } private void onLocationChangedImpl(MogoLocation location){