diff --git a/core/function-impl/mogo-core-function-v2x/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-v2x/src/main/AndroidManifest.xml
index af9b0fa90e..6ccd24e6c8 100644
--- a/core/function-impl/mogo-core-function-v2x/src/main/AndroidManifest.xml
+++ b/core/function-impl/mogo-core-function-v2x/src/main/AndroidManifest.xml
@@ -1,4 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java
new file mode 100644
index 0000000000..61632259ce
--- /dev/null
+++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/receiver/TestPanelBroadcastReceiver.java
@@ -0,0 +1,202 @@
+package com.mogo.eagle.core.function.v2x.events.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.mogo.eagle.core.data.map.MogoLatLng;
+import com.mogo.eagle.core.function.call.map.CallerSmpManager;
+import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
+import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
+import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes;
+import com.mogo.eagle.core.function.v2x.events.entity.net.V2XSpecialCarRes;
+import com.mogo.eagle.core.function.v2x.events.scenario.scene.livecar.V2XVoiceCallLiveBiz;
+import com.mogo.eagle.core.function.v2x.events.utils.TestOnLineCarUtils;
+import com.mogo.eagle.core.function.v2x.events.utils.V2XSQLiteUtils;
+import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
+import com.mogo.module.common.entity.MarkerExploreWay;
+import com.mogo.module.common.entity.V2XMessageEntity;
+import com.mogo.module.common.entity.V2XPushMessageEntity;
+import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.service.share.IMogoTrafficUploadProvider;
+import com.mogo.service.statusmanager.IMogoStatusManager;
+import com.zhidao.carchattingprovider.ICarsChattingProvider;
+import com.zhidao.carchattingprovider.MogoDriverInfo;
+
+import java.util.List;
+
+import static android.text.style.TtsSpan.GENDER_MALE;
+
+/**
+ * V2X 测试面板广播接收,目的是可以通过广播调用起来面板
+ *
+ * @author donghongyu
+ */
+public class TestPanelBroadcastReceiver extends BroadcastReceiver {
+ private static final String TAG = V2XConst.MODULE_NAME + "_TestPanelBroadcastReceiver";
+
+ private Context mContext;
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ try {
+ this.mContext = context;
+ int sceneType = intent.getIntExtra(V2XConst.BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0);
+ Logger.d(TAG, "textPanelOpenType:" + sceneType);
+
+ // 分发场景
+ dispatchSceneTest(sceneType);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 分发处理场景
+ *
+ * @param sceneType 场景类型
+ */
+ private void dispatchSceneTest(int sceneType) {
+ Logger.d(TAG, "sceneType=" + sceneType);
+ if (sceneType == 0) {//打开用户信息
+ MogoDriverInfo mogoDriverInfo = new MogoDriverInfo();
+ mogoDriverInfo.setAge(24);
+ mogoDriverInfo.setGender(GENDER_MALE);
+ mogoDriverInfo.setSn("12345678");
+ mogoDriverInfo.setUserName("测试");
+ mogoDriverInfo.setUserHead("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1600872867592&di=994e371880ca6ae2814f553e0d0e4139&imgtype=0&src=http%3A%2F%2Fp3.ssl.cdn.btime.com%2Ft014c5d8a1e5cef12ba.jpg%3Fsize%3D506x543");
+ ICarsChattingProvider provider = BridgeApi.INSTANCE.carChatProvider();
+ if (provider != null) {
+ provider.showUserWindow("CAR_CALL_USER_TO_" + V2XConst.MODULE_NAME, mogoDriverInfo, mContext);
+ }
+ } else if (sceneType == 1) {// 触发道路事件
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioRoadEventData();
+
+ Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
+ 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 == 3) {//触发H5推送事件
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioPushEventData();
+
+ 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 == 4) {//触发H5推送直播事件
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioPushLiveEventData();
+
+ 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 == 5) {//H5推送触发V2X动画
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioAnimationEventData();
+
+ 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 == 6) {//查看前车直播
+ V2XVoiceCallLiveBiz.getInstance().getFrontCarLive();
+ } else if (sceneType == 7) {//查看前方路口直播
+ V2XVoiceCallLiveBiz.getInstance().getOpenRoadCameraLive();
+ } else if (sceneType == 8) {//触发疲劳驾驶
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioFatigueDrivingData();
+
+ 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 == 9) {//触发他人发起道路求助事件
+ V2XMessageEntity> v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioSeekHelpData();
+
+ 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 == 10) {//触发事件UGC
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XScenarioRoadEventUGCData();
+
+ 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 == 11) {//触发违章停车事件
+ V2XMessageEntity> v2XMessageEntity =
+ TestOnLineCarUtils.getV2XIllegalParkData();
+
+ 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 == 12) {//车路云场景预警-右侧
+ 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);
+ } else if (sceneType == 13) {//车路云场景预警-左侧
+ 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) {//行人预警,行人路线预测 车路云预警-前方行人
+ 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) {// 交通状况查询
+
+ IMogoTrafficUploadProvider provider = BridgeApi.INSTANCE.trafficUpload();
+ if (provider != null) {
+ provider.verifyCurrentTrafficStatus();
+ }
+ } /*else if (sceneType == 16) {//触发基于目的地预测的线路推荐
+ V2XRefreshModel model = BridgeApi.INSTANCE.refreshModel();
+ model.
+ V2XServiceManager.getV2XRefreshModel().queryRoadData("F803EB2046PZD00149");
+ } */else if (sceneType == 17) {//最优路线推荐
+ V2XMessageEntity v2XMessageEntity =
+ TestOnLineCarUtils.getV2XOptimalRoute();
+
+ 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 == 18) {// 自车求助
+ 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);
+ IMogoStatusManager statusManager = BridgeApi.INSTANCE.statusManager();
+ if (statusManager != null) {
+ statusManager.setSeekHelping(V2XConst.MODULE_NAME, true);
+ }
+ } else if (sceneType == 20) {// 小地图绘制线
+ List coordinates = TestOnLineCarUtils.getTestCoordinates();
+ CallerSmpManager.drawablePolyline(coordinates);
+ } else if (sceneType == 21) {// 小地图清除绘制线
+ CallerSmpManager.clearPolyline();
+ }
+ }
+
+
+ /**
+ * 存储本地数据
+ *
+ * @param v2XRoadEventEntity 要存储的场景
+ */
+ public void saveLocalStory(int scenarioType, MarkerExploreWay v2XRoadEventEntity) {
+ try {
+ V2XSQLiteUtils.saveLocalStory(scenarioType, v2XRoadEventEntity, v2XRoadEventEntity.hashCode());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java
new file mode 100644
index 0000000000..8267396b79
--- /dev/null
+++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/TestOnLineCarUtils.java
@@ -0,0 +1,516 @@
+package com.mogo.eagle.core.function.v2x.events.utils;
+
+import com.mogo.eagle.core.data.map.MogoLatLng;
+import com.mogo.eagle.core.function.v2x.R;
+import com.mogo.eagle.core.function.v2x.events.entity.net.V2XOptimalRouteDataRes;
+import com.mogo.eagle.core.function.v2x.events.entity.net.V2XSpecialCarRes;
+import com.mogo.eagle.core.network.utils.GsonUtil;
+import com.mogo.eagle.core.utilcode.util.Utils;
+import com.mogo.module.common.entity.MarkerExploreWay;
+import com.mogo.module.common.entity.MarkerResponse;
+import com.mogo.module.common.entity.V2XMessageEntity;
+import com.mogo.module.common.entity.V2XPushMessageEntity;
+import com.mogo.module.common.entity.V2XRoadEventEntity;
+import com.mogo.module.common.entity.V2XWarningEntity;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * author : donghongyu
+ * e-mail : 1358506549@qq.com
+ * date : 2020-01-0918:20
+ * desc : 生成测试数据
+ * version: 1.0
+ */
+public class TestOnLineCarUtils {
+
+
+ /**
+ * 获取测试的违章停车数据
+ */
+ public static V2XMessageEntity> getV2XIllegalParkData() {
+ try {
+ InputStream inputStream = Utils.getApp().getResources().openRawResource(R.raw.illegal_park_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ MarkerResponse markerResponse = GsonUtil.objectFromJson(baos.toString(), MarkerResponse.class);
+
+ V2XMessageEntity> v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(markerResponse.getResult().getExploreWay());
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ /**
+ * 模拟道路事件测试数据
+ */
+ public static V2XMessageEntity getV2XScenarioRoadEventData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_road_event_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XRoadEventEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XRoadEventEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ /**
+ * 模拟道路事件UGC测试数据
+ */
+ public static V2XMessageEntity getV2XScenarioRoadEventUGCData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_road_event_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XRoadEventEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XRoadEventEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟H5推送数据
+ */
+ public static V2XMessageEntity getV2XScenarioPushEventData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_push_event_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XPushMessageEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 测试数据
+ */
+ 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 = Utils.getApp()
+ .getResources()
+ .openRawResource(id);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XWarningEntity warningEntity = GsonUtil.objectFromJson(baos.toString(), V2XWarningEntity.class);
+ V2XMessageEntity messageEntity = new V2XMessageEntity();
+ messageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_WEAKNESS);
+ messageEntity.setContent(warningEntity);
+ return messageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟H5推送直播数据
+ */
+ public static V2XMessageEntity getV2XScenarioPushLiveEventData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_push_live_event_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XPushMessageEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟H5推送场景动画数据
+ */
+ public static V2XMessageEntity getV2XScenarioAnimationEventData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_push_animation_event_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XPushMessageEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_ANIMATION_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟H5推送场景--十字路口碰撞
+ */
+ public static V2XMessageEntity getV2XScenarioCrossCrash() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_push_cross_crash);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XPushMessageEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_ANIMATION_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟 疲劳驾驶
+ */
+ public static V2XMessageEntity getV2XScenarioFatigueDrivingData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_fatigue_driving_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XPushMessageEntity v2xRoadEventEntity =
+ GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟 道路求助
+ */
+ public static V2XMessageEntity> getV2XScenarioSeekHelpData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_seek_help);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XSpecialCarRes v2xRoadEventEntity =
+ GsonUtil.objectFromJson(baos.toString(), V2XSpecialCarRes.class);
+
+ V2XMessageEntity> v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity.getCoordinates());
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 模拟 后方VIP
+ */
+ public static V2XMessageEntity> getV2XScenarionVRBehindVIPData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_push_vr_hehind_vip_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XSpecialCarRes v2xRoadEventEntity =
+ GsonUtil.objectFromJson(baos.toString(), V2XSpecialCarRes.class);
+
+ V2XMessageEntity> v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity.getCoordinates());
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ /**
+ * 逆向车辆路线预判
+ */
+ public static V2XMessageEntity getV2XScenarionVRReverseCarData() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.scenario_push_vr_reverse_car_data);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XPushMessageEntity v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XPushMessageEntity.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ /**
+ * 模拟最优路线推送
+ */
+ public static V2XMessageEntity getV2XOptimalRoute() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.test_data_v2x_zuiyouluxian);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ V2XOptimalRouteDataRes v2xRoadEventEntity = GsonUtil.objectFromJson(baos.toString(), V2XOptimalRouteDataRes.class);
+
+ V2XMessageEntity v2xMessageEntity = new V2XMessageEntity<>();
+ // 控制类型
+ v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_VR_SHOW);
+ // 设置数据
+ v2xMessageEntity.setContent(v2xRoadEventEntity);
+ // 控制展示状态
+ v2xMessageEntity.setShowState(true);
+ return v2xMessageEntity;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ 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;
+ }
+
+
+ /**
+ * 返回绘制线路测试数据
+ *
+ * @return
+ */
+ public static List getTestCoordinates() {
+ try {
+ InputStream inputStream = Utils.getApp()
+ .getResources()
+ .openRawResource(R.raw.test_coordinates);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len = -1;
+ byte[] buffer = new byte[1024];
+ while ((len = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, len);
+ }
+ inputStream.close();
+
+ // 加载数据源
+ return GsonUtil.arrayFromJson(baos.toString(), MogoLatLng.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}