-
-
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml
new file mode 100644
index 0000000000..bce5be42b0
--- /dev/null
+++ b/modules/mogo-module-smp/src/main/res/values-xhdpi-2560x1440/dimens.xml
@@ -0,0 +1,18 @@
+
+
+ 40px
+
+ 400px
+ 400px
+
+ 370px
+ 370px
+
+ 1620px
+ 780px
+
+ 0px
+ 0px
+ 1920px
+ 1080px
+
\ No newline at end of file
diff --git a/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml
index fd5d8ff737..62836ac9d0 100644
--- a/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-smp/src/main/res/values-xhdpi/dimens.xml
@@ -2,14 +2,12 @@
30px
- 400px
- 400px
-
288px
288px
260px
260px
+
1620px
780px
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 7166bb0fa1..78ef685e55 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
@@ -1,20 +1,13 @@
package com.mogo.module.v2x;
import android.content.Context;
-import android.util.Log;
-
import com.alibaba.android.arouter.launcher.ARouter;
-import com.mogo.map.MogoLatLng;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.overlay.IMogoOverlayManager;
-import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.search.geo.IMogoGeoSearch;
import com.mogo.map.uicontroller.IMogoMapUIController;
-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.IMoGoPersonWarnPolylineManager;
import com.mogo.module.v2x.manager.IMoGoStopPolylineManager;
@@ -23,10 +16,8 @@ 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;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.adas.IMogoADASController;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java
index 584c4e5650..c60b4e390d 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java
@@ -10,6 +10,7 @@ import com.mogo.module.v2x.listener.V2XMessageListener_401010;
import com.mogo.module.v2x.listener.V2XMessageListener_401011;
import com.mogo.module.v2x.listener.V2XMessageListener_401012;
import com.mogo.module.v2x.listener.V2XMessageListener_402000;
+import com.mogo.module.v2x.listener.V2XMessageListener_402001;
import com.mogo.utils.logger.Logger;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
@@ -34,7 +35,7 @@ public class V2XSocketManager {
private V2XMessageListener_401009 v2XMessageListener_401009;
private V2XMessageListener_401010 v2XMessageListener_401010;
private V2XMessageListener_402000 mV2XMessageListener_402000;
-
+ private V2XMessageListener_402001 mV2XMessageListener402001;
private V2XSocketManager() {
}
@@ -65,6 +66,7 @@ public class V2XSocketManager {
register401007();
register401009();
register401020();
+ registerWarningMsg();
// TODO 这里是前瞻需求,量产版本需要注释
register401003();
@@ -72,6 +74,7 @@ public class V2XSocketManager {
//register401006();
}
+
/**
* 反注册消息通道,不再进行接受
*/
@@ -225,6 +228,7 @@ public class V2XSocketManager {
v2XMessageListener_401009
);
}
+
/**
* * 车路云—场景预警-V1.0
* * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=52829799
@@ -241,6 +245,16 @@ public class V2XSocketManager {
);
}
+ /**
+ * * 车路云—场景预警-V1.0
+ * * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=52829799
+ * * 弱势交通参与者
+ */
+ public void registerWarningMsg() {
+ mV2XMessageListener402001 = new V2XMessageListener_402001();
+ V2XServiceManager.getMoGoSocketManager().registerOnMessageListener(402001, mV2XMessageListener402001);
+ }
+
/**
* * 2.0.3
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 65771d6bba..126f448d0a 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
@@ -5,7 +5,7 @@ import android.content.Intent;
import android.util.Log;
import com.mogo.module.common.entity.V2XWarningEntity;
-import com.mogo.module.v2x.listener.V2XWarnMessageListener;
+import com.mogo.module.v2x.listener.V2XMessageListener_402001;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -22,7 +22,7 @@ public class V2XWaringManager {
private static V2XWaringManager mV2XWaringManager;
//TODO 需要修改
- private V2XWarnMessageListener v2XWarnMessageListener;
+ private V2XMessageListener_402001 mV2XMessageListener402001;
private V2XWaringManager() {
@@ -83,7 +83,7 @@ public class V2XWaringManager {
// 加载数据源
V2XWarningEntity warningEntity = GsonUtil.objectFromJson(baos.toString(), V2XWarningEntity.class);
- V2XServiceManager.getMoGoV2XCloundDataManager().analysisV2XCloundDataEvent(warningEntity);
+// V2XServiceManager.getMoGoV2XCloundDataManager().analysisV2XCloundDataEvent(warningEntity);
} catch (Exception e) {
e.printStackTrace();
}
@@ -94,10 +94,10 @@ public class V2XWaringManager {
*/
public void unregisterAdasSocketMessage() {
Logger.w(V2XConst.LOG_NAME_WARN, "反注册Socket通道....");
- if (v2XWarnMessageListener != null) {
+ if (mV2XMessageListener402001 != null) {
V2XServiceManager
.getMoGoSocketManager()
- .unregisterOnMessageListener(401018, v2XWarnMessageListener);
+ .unregisterOnMessageListener(401018, mV2XMessageListener402001);
}
}
@@ -105,16 +105,16 @@ public class V2XWaringManager {
* 道路预警 弱势群体事件,行人 TODO type
*/
private void registerWarnListener() {
- v2XWarnMessageListener = new V2XWarnMessageListener();
+ mV2XMessageListener402001 = new V2XMessageListener_402001();
V2XServiceManager
.getMoGoSocketManager()
.registerOnMessageListener(
401018,
- v2XWarnMessageListener);
+ mV2XMessageListener402001);
}
- public V2XWarnMessageListener getV2XMessageListener() {
- return v2XWarnMessageListener;
+ public V2XMessageListener_402001 getV2XMessageListener() {
+ return mV2XMessageListener402001;
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XMessageListener_402001.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XMessageListener_402001.java
new file mode 100644
index 0000000000..a98755091f
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XMessageListener_402001.java
@@ -0,0 +1,48 @@
+package com.mogo.module.v2x.listener;
+
+import android.content.Intent;
+import android.util.Log;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.mogo.module.common.entity.V2XMessageEntity;
+import com.mogo.module.common.entity.V2XWarningEntity;
+import com.mogo.module.v2x.V2XConst;
+import com.mogo.module.v2x.V2XServiceManager;
+import com.mogo.module.v2x.entity.net.V2XOptimalRouteDataRes;
+import com.mogo.module.v2x.utils.V2XUtils;
+import com.mogo.service.connection.IMogoOnMessageListener;
+
+/**
+ * desc: 下发的云端预警数据
+ */
+public class V2XMessageListener_402001 implements IMogoOnMessageListener {
+
+ @Override
+ public Class target() {
+ return V2XOptimalRouteDataRes.class;
+ }
+
+ @Override
+ public void onMsgReceived(V2XOptimalRouteDataRes info) {
+ Log.d(V2XConst.LOG_NAME_WARN, "V2XWarnMessageListener onMsgReceived ---11---> ");
+ //Logger.d(MODULE_NAME, "V2XMessageListener_401011==V2X地图气泡数据刷新:\n" + GsonUtil.jsonFromObject(response));
+ V2XUtils.runOnBackgroundThread(() -> {
+ // 解析不同的Marker类型,然后对应的进行绘制
+ if (info != null) {
+ // 解析存储道路事件 liyz
+ Log.d(V2XConst.LOG_NAME_WARN, "V2XWarnMessageListener onMsgReceived --22--> ");
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW);
+ // 设置数据
+ v2xMessageEntity.setContent(info);
+ Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
+ intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
+ LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
+ }
+ });
+
+ }
+
+}
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
deleted file mode 100644
index 9c42a2df54..0000000000
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/listener/V2XWarnMessageListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mogo.module.v2x.listener;
-
-import android.util.Log;
-
-import com.mogo.module.common.entity.V2XWarningEntity;
-import com.mogo.module.v2x.V2XConst;
-import com.mogo.module.v2x.V2XServiceManager;
-import com.mogo.module.v2x.utils.V2XUtils;
-import com.mogo.service.connection.IMogoOnMessageListener;
-
-/**
- * desc: 下发的云端预警数据
- *
- */
-public class V2XWarnMessageListener implements IMogoOnMessageListener {
-
- @Override
- public Class target() {
- return V2XWarningEntity.class;
- }
-
- @Override
- public void onMsgReceived(V2XWarningEntity info) {
- Log.d(V2XConst.LOG_NAME_WARN, "V2XWarnMessageListener onMsgReceived ---11---> ");
- //Logger.d(MODULE_NAME, "V2XMessageListener_401011==V2X地图气泡数据刷新:\n" + GsonUtil.jsonFromObject(response));
- V2XUtils.runOnBackgroundThread(() -> {
- // 解析不同的Marker类型,然后对应的进行绘制
- if (info != null) {
- // 解析存储道路事件 liyz
- Log.d(V2XConst.LOG_NAME_WARN, "V2XWarnMessageListener onMsgReceived --22--> ");
- V2XServiceManager.getMoGoV2XCloundDataManager().analysisV2XCloundDataEvent(info);
- }
- });
-
- }
-
-}
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 2d430d7db5..0057de52d9 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
@@ -7,8 +7,6 @@ import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.map.MogoLatLng;
-import com.mogo.map.marker.IMogoMarker;
-import com.mogo.map.marker.MogoMarkerOptions;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.module.common.MogoApisHandler;
@@ -80,7 +78,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
if (mV2XScenario == null) {
mV2XScenario = new V2XFrontWarningScenario();
}
- mV2XScenario.setWarningEntity(cloundWarningInfo);
+// mV2XScenario.setWarningEntity(cloundWarningInfo);
mV2XScenario.init(null);
//预警蒙层
MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING);
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java
index 485fab815c..0a8554c0d4 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java
@@ -90,6 +90,9 @@ public class V2XRefreshModel {
}
/**
+ * 已经由
+ * @see com.mogo.module.v2x.V2XMarkerService
+ * 短链代替
* 刷新地图点数据,同步获取
*/
public void querySnapshotAsync(MogoLatLng latLng, int radius, int limit) {
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java
index 93e1410bc8..1ebf7ee558 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/AdasDataBroadcastReceiver.java
@@ -23,7 +23,7 @@ public class AdasDataBroadcastReceiver extends BroadcastReceiver {
// Logger.d(V2XConst.LOG_NAME_WARN, "AdasDataBroadcastReceiver -->" + GsonUtil.jsonFromObject(adasResult));
String adasResult = (String) intent.getSerializableExtra(V2XConst.BROADCAST_ADAS_EXTRA_KEY);
Log.d(V2XConst.LOG_NAME_WARN, "AdasDataBroadcastReceiver -----> ");
- V2XWaringManager.getInstance().handleAdasData(intent);
+// V2XWaringManager.getInstance().handleAdasData(intent);
} catch (Exception e) {
e.printStackTrace();
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/TestPanelBroadcastReceiver.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/TestPanelBroadcastReceiver.java
index d273de7c7a..18e243ccdd 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/TestPanelBroadcastReceiver.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/receiver/TestPanelBroadcastReceiver.java
@@ -25,6 +25,7 @@ import com.zhidao.carchattingprovider.MogoDriverInfo;
import java.util.List;
import static android.text.style.TtsSpan.GENDER_MALE;
+import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
/**
* V2X 测试面板广播接收,目的是可以通过广播调用起来面板
@@ -76,17 +77,9 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver {
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
-
// 存储本地,出行动态作展示
saveLocalStory(V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING,
v2XMessageEntity.getContent().getNoveltyInfo());
- } else if (sceneType == 2) {//车路云—场景预警-V1.0 碰撞预警
- V2XMessageEntity v2XMessageEntity =
- TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData();
-
- Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
- intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
- LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 3) {//触发H5推送事件
V2XMessageEntity v2XMessageEntity =
TestOnLineCarUtils.getV2XScenarioPushEventData();
@@ -110,7 +103,7 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver {
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 6) {//查看前车直播
V2XVoiceCallLiveBiz.getInstance().getFrontCarLive();
- } else if (sceneType == 7) {//查看前车直播
+ } else if (sceneType == 7) {//查看前方路口直播
V2XVoiceCallLiveBiz.getInstance().getOpenRoadCameraLive();
} else if (sceneType == 8) {//触发疲劳驾驶
V2XMessageEntity v2XMessageEntity =
@@ -141,17 +134,21 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver {
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 12) {//车路云场景预警-右侧
- Intent intent = new Intent(V2XConst.BROADCAST_ADAS_SCENE_HANDLER_ACTION);
- intent.putExtra(V2XConst.BROADCAST_ADAS_EXTRA_KEY, "right");
+ V2XMessageEntity messageEntity = TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData("right");
+ Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
+ intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, messageEntity);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
mContext.sendBroadcast(intent);
} else if (sceneType == 13) {//车路云场景预警-左侧
- Intent intent = new Intent(V2XConst.BROADCAST_ADAS_SCENE_HANDLER_ACTION);
- intent.putExtra(V2XConst.BROADCAST_ADAS_EXTRA_KEY, "left");
- mContext.sendBroadcast(intent);
+ V2XMessageEntity messageEntity = TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData("left");
+ Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
+ intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, messageEntity);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 14) {//行人预警,行人路线预测 车路云预警-前方行人
- Intent intent = new Intent(V2XConst.BROADCAST_ADAS_SCENE_HANDLER_ACTION);
- intent.putExtra(V2XConst.BROADCAST_ADAS_EXTRA_KEY, "pedestrians");
- mContext.sendBroadcast(intent);
+ V2XMessageEntity messageEntity = TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData("pedestrians");
+ Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
+ intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, messageEntity);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 15) {// 交通状况查询
V2XServiceManager.getIMogoTrafficUploadProvider().verifyCurrentTrafficStatus();
} else if (sceneType == 16) {//触发基于目的地预测的线路推荐
@@ -164,11 +161,19 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver {
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 18) { //test visualAngle UI
+ V2XServiceManager.getMapService().getMarkerManager(mContext).inVisibleAllMarkers();
V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT);
} else if (sceneType == 19) { //test visualAngle UI
V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT);
} else if (sceneType == 20) { //test visualAngle UI
V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_CLOSE_SIGHT);
+ } else if (sceneType == 21) {// 自车求助
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioCarForHelpEventData();
+ Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
+ intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
+ V2XServiceManager.getMoGoStatusManager().setSeekHelping(MODULE_NAME, true);
}
}
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 5d33724f15..dd8ac647b1 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
@@ -4,6 +4,8 @@ import android.content.Intent;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import com.mogo.map.uicontroller.VisualAngleMode;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
@@ -63,6 +65,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
V2XUtils.runOnUiThread(() -> {
// 提取之前存储的场景
if (v2XMessageEntity != null) {
+ sceneChange();
// 广播给应用内部其它模块
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
@@ -110,8 +113,8 @@ 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;
}
@@ -138,6 +141,17 @@ public class V2XScenarioManager implements IV2XScenarioManager {
}
}
+ /**
+ * http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=52833468
+ * 道路事件触发后,切换到中景
+ */
+ private void sceneChange() {
+ if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().
+ getCurrentMapVisualAngle() != VisualAngleMode.MODE_MEDIUM_SIGHT) {
+ V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT);
+ }
+ }
+
private void hidOtherPanel() {
try {
// 与其它面板互斥
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java
index 13be5af0ac..9c7a04a9f3 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/help/V2XSeekHelpButton.java
@@ -84,7 +84,7 @@ public class V2XSeekHelpButton implements IV2XButton {
doAction();
});
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- (int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_150));
+ (int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_car_for_help_window_height));
V2XServiceManager.getMogoTopViewManager().addView(topView, layoutParams);
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java
index 6fa7ab80fa..ae3b8ff515 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java
@@ -13,6 +13,7 @@ import com.mogo.commons.voice.AIAssist;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
+import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
@@ -85,9 +86,22 @@ public class V2XVoiceCallLiveBiz implements IMogoMarkerClickListener{
MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerMogoStaticMarkerClickListener(MAP_STATIC, this);
}
+ /**
+ * 地图上静态marker点击,现在仅点击摄像头
+ * @param marker
+ * @return
+ */
@Override
public boolean onStaticMarkerClicked(IMogoMarker marker) {
Log.d(REGISTER_LIFECYCLE_TAG,"onStaticMarkerClicked marker");
+ if(V2XServiceManager.getMapService().getMapUIController().getCurrentMapVisualAngle().isLongSight()){
+ Log.d(REGISTER_LIFECYCLE_TAG,"onStaticMarkerClicked marker is on LongSight, so don't response");
+ return false;
+ }
+ //拉近地图视角为近景
+ V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_CLOSE_SIGHT);
+ //移动地图中心点至marker位置
+ V2XServiceManager.getMapService().getMapUIController().moveToCenter(marker.getPosition(),true);
String assInfo = marker.getMarkerAssInfo();
Log.d(REGISTER_LIFECYCLE_TAG,"onStaticMarkerClicked marker assInfo : " + assInfo);
if (TextUtils.isEmpty(assInfo) || !assInfo.contains(MAP_STATIC_TRAFFIC)) {
@@ -161,6 +175,10 @@ public class V2XVoiceCallLiveBiz implements IMogoMarkerClickListener{
});
}
+ /**
+ * 获取特定路口摄像头直播
+ * @param assInfo 路口摄像头Id
+ */
private void getSpecifiedOpenCameraLive(String assInfo) {
MoGoAiCloudTrafficLive.viewDesignativeIntersectionLive(assInfo, new ITrafficIntersectionLiveCallBack() {
@Override
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java
index 940e4aabf8..03934fbeb9 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java
@@ -226,14 +226,14 @@ public class V2XTestConsoleWindow extends ConstraintLayout {
});
//车路云—场景预警-V1.0 碰撞预警
- mBtnTriggerWarningEvent.setOnClickListener(v -> {
- 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);
- });
+// mBtnTriggerWarningEvent.setOnClickListener(v -> {
+// V2XMessageEntity v2XMessageEntity =
+// TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData("right");
+//
+// 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 =
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 b24c8276d9..37762d5ebd 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,41 +42,33 @@ import java.util.List;
* @description 车路云—场景预警-V1.0 前车/行人/摩托车/盲区碰撞预警
* @since: 2021/3/24
*/
-public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener {
- private int direction;
+public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopViewStatusListener, IMogoCarLocationChangedListener2 {
private V2XWarningEntity mMarkerEntity;
+ static private V2XWarningMarker sV2XWarningMarker = new V2XWarningMarker();
public V2XFrontWarningScenario() {
setV2XWindow(new V2XWarningWindow());
-// setV2XMarker(new V2XWarningMarker());
+ setV2XMarker(sV2XWarningMarker);
}
@Override
public void init(@Nullable V2XMessageEntity v2XMessageEntity) {
try {
- if (v2XMessageEntity != null) {
+ if (v2XMessageEntity.getContent() != null) {
+ MogoApisHandler.getInstance().getApis().getRegisterCenterApi()
+ .registerCarLocationChangedListener(TAG, this);
if (V2XServiceManager.getMoGoStatusManager().isMainPageOnResume()) {
mMarkerEntity = (V2XWarningEntity) v2XMessageEntity.getContent();
- direction = mMarkerEntity.getDirection();
- MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(direction, MogoReceiver.ACTION_V2X_FRONT_WARNING);
show();
- drawPOI();
}
} else {
- direction = mMarkerEntity.getDirection();
- MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(direction, MogoReceiver.ACTION_V2X_FRONT_WARNING);
- show();
-// drawPOI();
+
}
} catch (Exception e) {
e.printStackTrace();
}
}
- public void setWarningEntity(V2XWarningEntity markerEntity) {
- mMarkerEntity = markerEntity;
- }
-
@Override
public void show() {
showWindow();
@@ -85,8 +77,6 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV
@Override
public void showWindow() {
if (getV2XWindow() != null && mMarkerEntity != null) {
- View view = getV2XWindow().getView();
- //Logger.d(MODULE_NAME, "添加window= " + view);
ViewGroup.LayoutParams layoutParams =
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
@@ -95,7 +85,7 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV
.getMogoTopViewManager()
.addView(getV2XWindow().getView(), layoutParams, this);
getV2XWindow().show(mMarkerEntity);
-// getV2XMarker().drawPOI(mMarkerEntity);
+ getV2XMarker().drawPOI(mMarkerEntity);
}
}
@@ -134,7 +124,7 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV
@Override
public void onViewRemoved(View view) {
-
+ Log.d(TAG, "onViewRemoved");
}
@Override
@@ -147,4 +137,14 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMogoTopV
}
+ @Override
+ public void onCarLocationChanged2(Location latLng) {
+ sV2XWarningMarker.onCarLocationChanged2(latLng);
+ }
+
+ @Override
+ public void onCarLocationChanged(MogoLatLng latLng) {
+
+ }
+
}
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 9f3f54f6ce..78d610c64e 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
@@ -1,14 +1,18 @@
package com.mogo.module.v2x.scenario.scene.warning;
import android.content.Context;
+import android.location.Location;
import android.util.Log;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
+import com.mogo.map.navi.IMogoCarLocationChangedListener2;
+import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.drawer.MarkerDrawer;
+import com.mogo.module.common.drawer.V2XWarnDataDrawer;
import com.mogo.module.common.drawer.marker.EmptyMarkerView;
import com.mogo.module.common.drawer.marker.IMarkerView;
import com.mogo.module.common.drawer.marker.MapMarkerAdapter;
@@ -17,10 +21,13 @@ import com.mogo.module.common.entity.MarkerLocation;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.common.entity.V2XWarningEntity;
import com.mogo.module.common.utils.Trigonometric;
+import com.mogo.module.service.MarkerServiceHandler;
+import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.module.v2x.R;
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.listener.V2XLocationListener;
import com.mogo.module.v2x.marker.OptimalSpeedMarkerView;
import com.mogo.module.v2x.marker.V2XFrontTargetMarkerView;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
@@ -30,11 +37,15 @@ import com.mogo.utils.ViewUtils;
import com.mogo.utils.WorkThreadHandler;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_STOP_LINE_DATA;
+import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_WARN_DATA;
+import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_TOP;
import static com.mogo.module.v2x.V2XConst.V2X_FRONT_WARNING_MARKER;
import static com.mogo.module.v2x.V2XConst.V2X_OPTIMAL_SPEED_MARKER;
+import static com.mogo.module.v2x.V2XServiceManager.getContext;
/**
* @author liujing
@@ -43,64 +54,316 @@ import static com.mogo.module.v2x.V2XConst.V2X_OPTIMAL_SPEED_MARKER;
*/
public class V2XWarningMarker implements IV2XMarker {
private static final String TAG = "V2XWarningMarker";
- private V2XWarningEntity mMarkerEntity;
- private MarkerShowEntity markerShowEntity = new MarkerShowEntity();
- private Context mContext = V2XServiceManager.getContext();
- private IMogoMarker optimalMarker = null;
+ private static String WARNING_ARROWS = "WARNING_ARROWS";
+ private V2XWarningEntity mCloundWarningInfo;
+ private boolean isSelfLineClear = true;//绘制线是否已被清除
+ private List fillPoints = new ArrayList();//停止线经纬度合集
+ private boolean isFirstLocation = false;
+ private MogoLatLng carLocation = new MogoLatLng(
+ MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(),
+ MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon()
+ );
+
+ /*
+ * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算
+ * */
+ private MogoLatLng middleLocationInStopLine;
+ private static long showTime = 5000;
+ private float bearing;
@Override
public void drawPOI(Object entity) {
try {
- mMarkerEntity = (V2XWarningEntity) entity;
- MarkerLocation location = new MarkerLocation();
- location.setLat(mMarkerEntity.getLat());
- location.setLon(mMarkerEntity.getLon());
-
- markerShowEntity.setMarkerLocation(location);
-
- MogoMarkerOptions optionsRipple = new MogoMarkerOptions()
- .latitude(mMarkerEntity.getLat())
- .longitude(mMarkerEntity.getLon())
- .anchor(0.5f, 0.5f)
- .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH);
- optionsRipple
- .icon(ViewUtils.fromView(new EmptyMarkerView(mContext)));
- optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple);
- optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(mContext)));
- optimalMarker.showInfoWindow();
- UiThreadHandler.postDelayed(() -> {
- optimalMarker.hideInfoWindow();
- }, 8000);
+ mCloundWarningInfo = (V2XWarningEntity) entity;
+ drawLineWithEntity();
} catch (Exception e) {
-
+ Log.d(TAG, e.toString());
}
}
+ public void drawLineWithEntity() {
+ showTime = mCloundWarningInfo.getShowTime() > 0 ? mCloundWarningInfo.getShowTime() : 5000;
+ Log.d(TAG, "显示时间为++" + String.valueOf(showTime));
+ pointsBetween();
+ bearing = V2XLocationListener.getInstance().getLastCarLocation().getBearing();
+ //预警蒙层
+ MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING);
+ isSelfLineClear = false;
+ isFirstLocation = false;
+ V2XServiceManager.getMarkerManager().removeMarkers(WARNING_ARROWS);
+ if (mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP) { //前方 TODO
+ middleLocationInStopLine = getMiddleLocationInStopLine();
+ //如果是正前方类型,红色绘制区域从停止线向前绘制50米
+ MogoLatLng warningLocation = Trigonometric.getNewLocation(middleLocationInStopLine, 50, mCloundWarningInfo.getAngle());
+ //停止线前方画线
+ WorkThreadHandler.getInstance().postDelayed(() -> {
+ //二轮车和行人的渲染和移动
+ V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA);
+ V2XWarnDataDrawer.getInstance().renderWarnData(mCloundWarningInfo);
+ //绘制识别物与交汇点连线,并且更新连线数据
+ drawRedWarningLineFrontOfStopLine(mCloundWarningInfo, middleLocationInStopLine, warningLocation);
+ //添加停止线marker
+ handleStopLine();
+ //自车画线
+ drawSelfCarLine(carLocation.lon, carLocation.lat, bearing);
+ }, 0);
- @Override
- public void clearPOI() {
- V2XServiceManager.getMarkerManager().removeMarkers(V2X_FRONT_WARNING_MARKER);
+ UiThreadHandler.postDelayed(() -> {
+ V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
+ V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
+ V2XServiceManager.getMoGoStopPolylineManager().clearLine();
+ isSelfLineClear = true;
+ }, showTime);
+
+ } else { //左侧或者右侧
+ WorkThreadHandler.getInstance().postDelayed(() -> {
+ //绘制识别物与交汇点连线,并且更新连线数据
+ drawOtherObjectLine(mCloundWarningInfo);
+ //二轮车和行人的渲染和移动
+ V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA);
+ V2XWarnDataDrawer.getInstance().renderWarnData(mCloundWarningInfo);
+
+ //车辆静止的时候
+ drawSelfCarLine(carLocation.lon, carLocation.lat, bearing);
+
+ }, 0);
+
+ //延迟3秒清理线
+ UiThreadHandler.postDelayed(() -> {
+ V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
+ V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
+ isSelfLineClear = true;
+ }, showTime);
+ }
}
- public void clearLine() {
- V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
+ /**
+ * 场景如:车辆行驶正前方绘制红色区域(停止线继续前行的预警区域) TODO 需要实时给行人当前位置
+ */
+ private void drawRedWarningLineFrontOfStopLine(V2XWarningEntity info, MogoLatLng
+ startLatLng, MogoLatLng mogoLatLng) {
+ if (info != null) {
+ IMogoPolyline polyLine = V2XServiceManager.getMoGoStopPolylineManager().getMogoStopPolyline();
+ MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon);
+ float distance = CoordinateUtils.calculateLineDistance(startLatLng.lon, startLatLng.lat, endLatlng.lon, endLatlng.lat);
+ MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatLng, distance / 2, mCloundWarningInfo.getAngle());
+ Log.d(TAG, "红色区域起始点 = " + startLatLng.lon + "," + startLatLng.lat +
+ "中间点坐标:" + addMiddleLoc.lon + "," + addMiddleLoc.lat
+ + "终点" + endLatlng.lon + "," + endLatlng.lat);
+ if (polyLine != null) {
+ Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null");
+ polyLine.setPoints(Arrays.asList(startLatLng, addMiddleLoc, endLatlng));
+ polyLine.setTransparency(0.5f);
+ } else {
+ DrawLineInfo lineInfo = new DrawLineInfo();
+ List locations = new ArrayList();
+ locations.add(startLatLng);
+ locations.add(addMiddleLoc);
+ locations.add(endLatlng);
+ lineInfo.setLocations(locations);
+ lineInfo.setHeading(info.heading);
+ Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine width = " + info.getRoadwidth());
+ lineInfo.setWidth(info.getRoadwidth() * 14 + 5);
+ V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo);
+ }
+ } else {
+ V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
+ V2XServiceManager.getMoGoStopPolylineManager().clearLine();
+ }
}
+ /**
+ * 补点后的停止线经纬度合集
+ */
+ 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 = Trigonometric.getAngle(x.lon, x.lat, y.lon, y.lat);
+ //根据距离和角度获取下个点的经纬度
+ fillPoints.add(x);
+ for (int i = 1; i < 3; i++) {
+ MogoLatLng newLocation = Trigonometric.getNewLocation(x, average * i, angle);
+ fillPoints.add(newLocation);
+ }
+ fillPoints.add(y);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
/*
- * 2D资源绘制停止线
+ * 停止线绘制
+ * */
+ private void handleStopLine() {
+ try {
+ if (mCloundWarningInfo != null) {
+ V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA);
+ for (int i = 0; i < fillPoints.size(); i++) {
+ V2XWarningEntity entity = new V2XWarningEntity();
+ MogoLatLng latLng = (MogoLatLng) fillPoints.get(i);
+ entity.setLat(latLng.lat);
+ entity.setLon(latLng.lon);
+ entity.heading = mCloundWarningInfo.heading;
+ V2XWarnDataDrawer.getInstance().renderStopLineData(entity);
+ }
+ }
+ //移动完成以后,3s后消失
+ UiThreadHandler.postDelayed(() -> {
+ V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA);
+ }, mCloundWarningInfo.getShowTime());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private MogoLatLng getMogoLat(MogoLatLng latlng) {
+ MogoLatLng newLocation = Trigonometric.getNewLocation(latlng, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle());
+ return newLocation;
+ }
+
+ /*
+ * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算
+ * */
+ private MogoLatLng getMiddleLocationInStopLine() {
+ Log.d(TAG, "计算停止线上的某个点" + String.valueOf(carLocation.lat + "," + String.valueOf(carLocation.lon)));
+ if (carLocation.lat == 0 || carLocation.lon == 0) {
+ Log.d(TAG, "获取不到车的位置");
+ }
+ MogoLatLng newLocation = Trigonometric.getNewLocation(carLocation, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle());
+ return newLocation;
+ }
+
+ /**
+ * 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警)
+ */
+ public void drawSelfCarLine(double lon, double lat, float bearing) {
+ if (!isSelfLineClear) {
+ IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline();
+ if (mCloundWarningInfo != null) {
+ MogoLatLng startLatlng = null;
+ MogoLatLng endLatlng = null;
+ MogoLatLng addMiddleLoc = null;
+
+ if (!isFirstLocation) {
+ carLocation = getMogoLat(new MogoLatLng(lat, lon));
+ isFirstLocation = true;
+ }
+ //绘制线的终点(在停止线上或者预碰撞点上)
+
+ endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lat : mCloundWarningInfo.getCollisionLat(),
+ mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lon : mCloundWarningInfo.getCollisionLon());
+ //自车位置
+ startLatlng = new MogoLatLng(lat, lon);
+ float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat);
+ //扩展点为了渐变色添加
+ addMiddleLoc = Trigonometric.getNewLocation(startLatlng, distance / 2, Trigonometric.getAngle(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat));
+ Log.d(TAG, "自车为起点绘制 自车;" + startLatlng.lon + "," + startLatlng.lat +
+ "中间扩展点" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点:" + endLatlng.lon + "," + endLatlng.lat);
+
+ if (mogoPolyline != null) {
+ mogoPolyline.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng));
+ mogoPolyline.setTransparency(0.5f);
+ } else {
+ DrawLineInfo info = new DrawLineInfo(); // 对象
+ Log.d(TAG, "安全区域的画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng);
+ List locations = new ArrayList();
+ locations.add(startLatlng);
+ locations.add(addMiddleLoc);
+ locations.add(endLatlng);
+ info.setLocations(locations);
+ info.setHeading(bearing);
+ info.setWidth(mCloundWarningInfo.getRoadwidth() * 14 + 5);
+ info.setDirection(mCloundWarningInfo.getDirection());
+ V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info);
+ }
+ } else {
+ V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
+ }
+ }
+ }
+
+ /**
+ * 侧方目标物与预碰撞点连线,并且更新数据 TODO 需要实时给行人当前位置
+ */
+ private void drawOtherObjectLine(V2XWarningEntity info) {
+ if (info != null) {
+ IMogoPolyline polyLine = V2XServiceManager.getMoGoPersonWarnPolylineManager().getMogoPersonWarnPolyline();
+ MogoLatLng startLatlng = new MogoLatLng(info.getLat(), info.getLon());//识别物坐标
+ MogoLatLng endLatlng = new MogoLatLng(info.getCollisionLat(), info.getCollisionLon());//预碰撞点坐标
+ float distance = CoordinateUtils.calculateLineDistance(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat);//识别物到碰撞点之间的距离
+ MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatlng, distance / 2,
+ Trigonometric.getAngle(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat));//补点
+ if (polyLine != null) {
+ Log.d(V2XConst.LOG_NAME_WARN, "polyLine != null");
+ polyLine.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng));
+ polyLine.setTransparency(0.5f);
+ } else {
+ DrawLineInfo lineInfo = new DrawLineInfo();
+ Log.d(TAG, "目标物与预碰撞点画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng);
+ List locations = new ArrayList();
+ locations.add(startLatlng);
+ locations.add(addMiddleLoc);
+ locations.add(endLatlng);
+ lineInfo.setLocations(locations);
+ lineInfo.setHeading(info.heading);
+ Log.d(V2XConst.LOG_NAME_WARN, "drawOtherObjectLine width = " + info.getRoadwidth());
+ lineInfo.setWidth(info.getRoadwidth() * 14 + 5);
+ V2XServiceManager.getMoGoPersonWarnPolylineManager().drawPersonWarnPolyline(getContext(), lineInfo);
+ //识别物到预碰撞点之间的箭头
+ addArrows(startLatlng, endLatlng);
+ }
+ } else {
+ Log.e(V2XConst.LOG_NAME_WARN, "info == null");
+ V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
+ }
+ }
+
+ //侧面目标物与碰撞点之间添加多个小箭头
+ private void addArrows(MogoLatLng startLatLng, MogoLatLng endLatLng) {
+ float distance = CoordinateUtils.calculateLineDistance(
+ startLatLng.lon, startLatLng.lat, endLatLng.lon, endLatLng.lat);
+ double rotate = Trigonometric.getAngle(startLatLng.lon, startLatLng.lat, endLatLng.lon, endLatLng.lat);
+ Log.d(TAG, "添加小箭头--目标物与预碰撞点之间的距离是" + String.valueOf(distance));
+ if (distance > 5) {
+ int count = (int) (distance / 5);
+ for (int i = 0; i < count; i++) {
+ MogoLatLng newLo = Trigonometric.getNewLocation(
+ startLatLng, 5 * (i + 1), Trigonometric.getAngle(startLatLng.lon, startLatLng.lat, endLatLng.lon, endLatLng.lat));
+ Log.d(TAG, "小箭头位置" + newLo);
+ V2XWarnDataDrawer.getInstance().drawerArrowsMarkerWithLocation(newLo, WARNING_ARROWS, 10, new Double(rotate).intValue());
+ }
+ }
+ //延迟3秒清理线
+ UiThreadHandler.postDelayed(() -> {
+
+ V2XServiceManager.getMarkerManager().removeMarkers(WARNING_ARROWS);
+ }, showTime);
+
+ }
+
+ /*
+ * 2D资源绘制停止线 暂时不需要
* */
private void drawStopLineWith2Resource() {
- MogoLatLng carlo = mMarkerEntity.getCarLocation();
+ MogoLatLng carlo = mCloundWarningInfo.getCarLocation();
if (carlo == null) {
double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon();
double lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat();
carlo = new MogoLatLng(lat, lon);
}
//自车行驶方向的前方*米的经纬度,该经纬度在停止线上
- MogoLatLng drawStopLineLon = Trigonometric.getNewLocation(carlo, mMarkerEntity.getStopLineDistance(), mMarkerEntity.getAngle());
+ MogoLatLng drawStopLineLon = Trigonometric.getNewLocation(carlo, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle());
Log.d(TAG, "2D资源绘" + drawStopLineLon);
MogoMarkerOptions optionsRipple = new MogoMarkerOptions()
.latitude(drawStopLineLon.getLat())
@@ -115,6 +378,28 @@ public class V2XWarningMarker implements IV2XMarker {
stopLine.showInfoWindow();
UiThreadHandler.postDelayed(() -> {
stopLine.hideInfoWindow();
- }, 8000);
+ }, showTime);
}
+
+ public void onCarLocationChanged2(Location latLng) {
+ carLocation = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude());
+ if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() && isSelfLineClear == false) {
+ //当行人经纬度交点 开始画线,否则清理
+ if (mCloundWarningInfo != null) {
+ mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()));
+ }
+ drawSelfCarLine(latLng.getLongitude(), latLng.getLatitude(), latLng.getBearing());
+ }
+ Log.d(TAG, "车辆行驶轨迹" + String.valueOf(latLng.getLongitude()) + "," + String.valueOf(latLng.getLatitude()));
+ }
+
+ @Override
+ public void clearPOI() {
+ V2XServiceManager.getMarkerManager().removeMarkers(V2X_FRONT_WARNING_MARKER);
+ }
+
+ 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 d59915b3b0..d43db290f1 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
@@ -4,6 +4,7 @@ import android.content.Context;
import android.location.Location;
import android.os.Handler;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
@@ -127,4 +128,5 @@ public class V2XWarningWindow extends V2XBasWindow implements IV2XWindow {
.getMogoTopViewManager()
.removeView(this);
}
+
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java
index 0bdb711bdc..381d9d460f 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/TestOnLineCarUtils.java
@@ -7,6 +7,7 @@ import com.mogo.module.common.entity.V2XPushMessageEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.common.entity.V2XWarningEntity;
import com.mogo.module.v2x.R;
+import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.entity.net.V2XOptimalRouteDataRes;
import com.mogo.module.v2x.entity.net.V2XSpecialCarRes;
import com.mogo.utils.network.utils.GsonUtil;
@@ -158,11 +159,25 @@ public class TestOnLineCarUtils {
return null;
}
- public static V2XMessageEntity getV2XScenarioPushFrontWarningEventData() {
+ /**
+ * 测试数据
+ */
+ public static V2XMessageEntity getV2XScenarioPushFrontWarningEventData(String adasResult) {
+
try {
+ int id = R.raw.scenario_warning_event_data_right;
+ switch (adasResult) {
+ case "left":
+ id = R.raw.scenario_warning_event_data_left;
+ break;
+ case "pedestrians":
+ id = R.raw.scenario_warning_event_data_pedestrians;
+ break;
+ default:
+ }
InputStream inputStream = V2XUtils.getApp()
.getResources()
- .openRawResource(R.raw.scenario_warning_event_data_right);
+ .openRawResource(id);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[1024];
@@ -173,14 +188,10 @@ public class TestOnLineCarUtils {
// 加载数据源
V2XWarningEntity warningEntity = GsonUtil.objectFromJson(baos.toString(), V2XWarningEntity.class);
- V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
- // 控制类型
- v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_TOP);
- // 设置数据
- v2xMessageEntity.setContent(warningEntity);
- // 控制展示状态
- v2xMessageEntity.setShowState(true);
- return v2xMessageEntity;
+ V2XMessageEntity messageEntity = new V2XMessageEntity();
+ messageEntity.setType(warningEntity.getDirection());
+ messageEntity.setContent(warningEntity);
+ return messageEntity;
} catch (Exception e) {
e.printStackTrace();
}
@@ -454,4 +465,25 @@ public class TestOnLineCarUtils {
}
return null;
}
+ /**
+ * 自车求助测试数据
+ */
+ public static V2XMessageEntity getV2XScenarioCarForHelpEventData() {
+ try {
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP);
+ // 设置数据
+ v2xMessageEntity.setContent(true);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
}
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/icon_play.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/icon_play.png
new file mode 100644
index 0000000000..bd17c2a12c
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/icon_play.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/module_v2x_vr_close.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/module_v2x_vr_close.png
new file mode 100644
index 0000000000..95a08f52f4
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/module_v2x_vr_close.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_daolushigong_vr.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_daolushigong_vr.png
new file mode 100644
index 0000000000..3b658c62d3
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_daolushigong_vr.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_jiaotongjiancha_vr.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_jiaotongjiancha_vr.png
new file mode 100644
index 0000000000..4510b5c3c1
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_jiaotongjiancha_vr.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_jiaotongshigu_vr.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_jiaotongshigu_vr.png
new file mode 100644
index 0000000000..d5cca39f45
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_jiaotongshigu_vr.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_nongwu_vr.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_nongwu_vr.png
new file mode 100644
index 0000000000..3ed7564641
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_nongwu_vr.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_yongdu_vr.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_yongdu_vr.png
new file mode 100644
index 0000000000..3c2b759b40
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_yongdu_vr.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_optimal_route_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_optimal_route_warning.png
new file mode 100644
index 0000000000..76ae6f035a
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_optimal_route_warning.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_car_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_car_warning.png
similarity index 100%
rename from modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_car_warning.png
rename to modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_car_warning.png
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_dead_zone.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_dead_zone.png
similarity index 100%
rename from modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_dead_zone.png
rename to modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_dead_zone.png
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_m_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_m_warning.png
similarity index 100%
rename from modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_m_warning.png
rename to modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_m_warning.png
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_p_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_p_warning.png
similarity index 100%
rename from modules/mogo-module-v2x/src/main/res/drawable-xxhdpi/v2x_road_front_p_warning.png
rename to modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_road_front_p_warning.png
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_bg.xml
index b7428f06fb..707a1b5291 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_bg.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/bg_v2x_event_bg.xml
@@ -2,5 +2,5 @@
-
+
\ 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 adfeb53772..aef6b12987 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
@@ -2,8 +2,9 @@
+ android:textSize="@dimen/module_v2x_road_event_text_size" />
@@ -273,9 +274,9 @@
android:id="@+id/tv_line"
android:layout_width="@dimen/dp_0_5"
android:layout_height="@dimen/dp_70"
+ android:alpha="0.3"
android:background="@color/v2x_line_color"
android:visibility="gone"
- android:alpha="0.3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_play"
app:layout_constraintStart_toEndOf="@+id/ll_event"
@@ -284,14 +285,12 @@
@@ -83,7 +83,7 @@
android:layout_marginRight="@dimen/dp_42"
android:gravity="center_vertical"
android:textColor="#FFFFFF"
- android:textSize="@dimen/dp_42"
+ android:textSize="@dimen/module_v2x_fault_help_distance_text_size"
app:layout_constraintBottom_toBottomOf="@+id/ivFaultHelpEventCall"
app:layout_constraintEnd_toStartOf="@+id/ivFaultHelpEventCall"
app:layout_constraintTop_toTopOf="@+id/ivFaultHelpEventCall"
@@ -91,8 +91,8 @@
@@ -21,7 +21,7 @@
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/dp_28"
- android:maxWidth="@dimen/dp_100"
+ android:maxWidth="@dimen/module_v2n_tip_text_width"
android:text="1.2米"
android:textColor="@color/v2x_FF3036"
android:textSize="@dimen/dp_32" />
@@ -33,7 +33,7 @@
android:layout_alignEnd="@+id/warning_distance"
android:layout_centerVertical="true"
android:layout_marginLeft="@dimen/dp_20"
- android:layout_marginRight="@dimen/dp_20"
+ android:layout_marginRight="@dimen/module_v2n_tip_text_margin_right"
android:layout_toRightOf="@+id/warning_type_image"
android:text="前车碰撞预警"
android:textColor="#FFFFFF"
diff --git a/modules/mogo-module-v2x/src/main/res/layout/vr_window_top_tips.xml b/modules/mogo-module-v2x/src/main/res/layout/vr_window_top_tips.xml
index c4c5b9f5a3..446e5c311e 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/vr_window_top_tips.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/vr_window_top_tips.xml
@@ -12,8 +12,8 @@
diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail_vr.xml
index 4411a57baf..8c54bdc86a 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail_vr.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/window_road_event_detail_vr.xml
@@ -2,14 +2,14 @@
14px
44px
19px
+
+
+ 100px
+ 32px
+
572px
diff --git a/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml
index a580148415..af1575dcd3 100644
--- a/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml
+++ b/modules/mogo-module-v2x/src/main/res/values-mdpi/dimens.xml
@@ -99,6 +99,11 @@
14px
44px
19px
+
+
+ 100px
+ 32px
+
572px
diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml
index 091c72520e..b43ce52f75 100644
--- a/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml
+++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi-1920x1000/dimens.xml
@@ -80,6 +80,11 @@
26px
80px
34px
+
+
+ 100px
+ 32px
+
940px
diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml
new file mode 100644
index 0000000000..bd5d9c6937
--- /dev/null
+++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml
@@ -0,0 +1,50 @@
+
+
+ 1100px
+ 227px
+ 187px
+ 30px
+ 133px
+ 133px
+ 38px
+ 42px
+ 12px
+ 40px
+
+ 778px
+ 687px
+ 200px
+ 10px
+ 487px
+ 778px
+
+ 234px
+ 1067px
+ 187px
+
+ 107px
+ 47px
+
+ 35px
+ 48px
+ 35px
+ 36px
+ 64px
+ 108px
+
+ 53px
+
+ 200px
+ 854px
+ 187px
+ 133px
+ 133px
+ 480px
+ 42px
+ 40px
+
+
+ 133px
+ 42px
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml
index 1882f8ea15..6fc0fe97ff 100644
--- a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml
@@ -17,6 +17,8 @@
670px
526px
+ 20px
+
147px
60px
40px
@@ -95,7 +97,8 @@
80px
- 182px
+ 882px
+ 182px
64px
60px
@@ -113,6 +116,11 @@
26px
80px
34px
+
+
+ 100px
+ 32px
+
940px
@@ -128,4 +136,34 @@
46px
26px
+ 140px
+ 20px
+ 100px
+ 100px
+ 30px
+ 32px
+ 8px
+ 30px
+
+ 800px
+ 140px
+
+ 80px
+ 35px
+
+ 27px
+ 40px
+ 27px
+ 24px
+ 42px
+ 80px
+ 40px
+ 150px
+ 640px
+ 140px
+ 100px
+ 100px
+ 480px
+ 32px
+ 30px
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java
index 4ec381d393..61aa1e5b35 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/map/IMogoSmallMapProvider.java
@@ -1,13 +1,24 @@
package com.mogo.service.map;
+import androidx.annotation.IdRes;
+import androidx.fragment.app.FragmentActivity;
+
+import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.service.module.IMogoModuleProvider;
/**
* @author donghongyu
* @date 12/10/20 1:36 PM
*/
-public interface IMogoSmallMapProvider extends IMogoModuleProvider {
+public interface IMogoSmallMapProvider extends IProvider {
+ /**
+ * 初始化网约车容器
+ *
+ * @param activity
+ * @param containerId 容器ID
+ */
+ void init(FragmentActivity activity, @IdRes int containerId );
/**
* 显示面板
diff --git a/settings.gradle b/settings.gradle
index 03e108e85c..68ff11a9df 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -14,6 +14,7 @@ include ':tts:tts-noop'
include ':test:crashreport'
include ':test:crashreport-bugly'
include ':test:crashreport-noop'
+include ':test:crashreport-upgrade'
include ':skin:skin-support'
include ':skin:skin-support-appcompat'
include ':skin:skin-support-cardview'
@@ -25,8 +26,6 @@ include ':skin:mogo-skin-support-noop'
include ':skin:mogo-skin-support'
include ':modules:mogo-module-widgets'
include ':modules:mogo-module-monitor'
-include ':foudations:mogo-base-services-apk'
-include ':foudations:mogo-base-services-sdk'
include ':modules:mogo-module-splash-noop'
include ':modules:mogo-module-splash'
include ':modules:mogo-module-left-panel-noop'
diff --git a/test/crashreport-bugly/build.gradle b/test/crashreport-bugly/build.gradle
index 2ee98887fe..9c042db3df 100644
--- a/test/crashreport-bugly/build.gradle
+++ b/test/crashreport-bugly/build.gradle
@@ -49,7 +49,7 @@ dependencies {
implementation project(":foudations:mogo-commons")
}
- implementation 'com.tencent.bugly:crashreport:latest.release'
+ implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
//其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9
implementation 'com.tencent.bugly:nativecrashreport:latest.release'
//其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
diff --git a/test/crashreport-upgrade/.gitignore b/test/crashreport-upgrade/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/test/crashreport-upgrade/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/test/crashreport-upgrade/build.gradle b/test/crashreport-upgrade/build.gradle
new file mode 100644
index 0000000000..e28fb2d408
--- /dev/null
+++ b/test/crashreport-upgrade/build.gradle
@@ -0,0 +1,55 @@
+apply plugin: 'com.android.library'
+apply plugin: 'com.alibaba.arouter'
+
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+
+ ndk {
+ // 设置支持的SO库架构
+ abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
+ }
+
+ javaCompileOptions {
+ annotationProcessorOptions {
+ arguments = [AROUTER_MODULE_NAME: project.getName()]
+ }
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: "libs", include: ["*.jar"])
+ implementation rootProject.ext.dependencies.androidxappcompat
+ implementation rootProject.ext.dependencies.arouter
+ annotationProcessor rootProject.ext.dependencies.aroutercompiler
+
+ if (Boolean.valueOf(RELEASE)) {
+ implementation rootProject.ext.dependencies.crashreport
+ implementation rootProject.ext.dependencies.mogoutils
+ implementation rootProject.ext.dependencies.mogocommons
+ } else {
+ implementation project(":test:crashreport")
+ implementation project(":foudations:mogo-utils")
+ implementation project(":foudations:mogo-commons")
+ }
+
+ implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
+ //其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.0
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
\ No newline at end of file
diff --git a/test/crashreport-upgrade/consumer-rules.pro b/test/crashreport-upgrade/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/test/crashreport-upgrade/gradle.properties b/test/crashreport-upgrade/gradle.properties
new file mode 100644
index 0000000000..bcb33e8a94
--- /dev/null
+++ b/test/crashreport-upgrade/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.test
+POM_ARTIFACT_ID=crashreport-upgrade
+VERSION_CODE=1
diff --git a/test/crashreport-upgrade/proguard-rules.pro b/test/crashreport-upgrade/proguard-rules.pro
new file mode 100644
index 0000000000..68dec0863c
--- /dev/null
+++ b/test/crashreport-upgrade/proguard-rules.pro
@@ -0,0 +1,24 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+-dontwarn com.tencent.bugly.**
+-keep public class com.tencent.bugly.**{*;}
+-keep class android.support.**{*;}
diff --git a/test/crashreport-upgrade/src/main/AndroidManifest.xml b/test/crashreport-upgrade/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..765c64126e
--- /dev/null
+++ b/test/crashreport-upgrade/src/main/AndroidManifest.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java
new file mode 100644
index 0000000000..8e2b0380b8
--- /dev/null
+++ b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportConstants.java
@@ -0,0 +1,15 @@
+package com.mogo.test.crashreport.upgrade;
+
+
+/**
+ * @author donghongyu
+ * @since 2020/9/9
+ *
+ * 描述
+ */
+public class UpgradeReportConstants {
+
+ public static final String PATH = "/upgradereport/api";
+
+ public static final String NAME = "UpgradeReportApi";
+}
diff --git a/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java
new file mode 100644
index 0000000000..18eb9acfce
--- /dev/null
+++ b/test/crashreport-upgrade/src/main/java/com/mogo/test/crashreport/upgrade/UpgradeReportProvider.java
@@ -0,0 +1,74 @@
+package com.mogo.test.crashreport.upgrade;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.facade.template.IProvider;
+import com.mogo.commons.network.Utils;
+import com.mogo.utils.logger.Logger;
+import com.tencent.bugly.Bugly;
+import com.tencent.bugly.crashreport.CrashReport;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+
+/**
+ * @author donghongyu
+ * @since 2020/9/9
+ *
+ * 升级模块
+ */
+@Route(path = UpgradeReportConstants.PATH)
+public class UpgradeReportProvider implements IProvider {
+
+ private static final String TAG = "UpgradeReportProvider";
+
+ @Override
+ public void init(Context context) {
+ Logger.d(TAG, "init");
+ String packageName = context.getPackageName();
+ String processName = getProcessName(android.os.Process.myPid());
+
+ //设置Bugly 用户策略(UserStrategy)
+ CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context);
+
+ strategy.setUploadProcess(processName == null || processName.equals(packageName));
+
+ CrashReport.putUserData(context, "serial", Utils.getSn());
+
+ Bugly.init(context, "f3f8b0b2f1", true, strategy);
+ }
+
+ /**
+ * 获取进程号对应的进程名
+ *
+ * @param pid 进程号
+ * @return 进程名
+ */
+ private static String getProcessName(int pid) {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"));
+ String processName = reader.readLine();
+ if (!TextUtils.isEmpty(processName)) {
+ processName = processName.trim();
+ }
+ return processName;
+ } catch (Throwable throwable) {
+ throwable.printStackTrace();
+ } finally {
+ try {
+ if (reader != null) {
+ reader.close();
+ }
+ } catch (IOException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/test/crashreport-upgrade/src/main/res/xml/provider_paths.xml b/test/crashreport-upgrade/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000000..1b4e49502c
--- /dev/null
+++ b/test/crashreport-upgrade/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file