From c72e9beed7bb739c418ed323bcfb2b0ed36199c7 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 14 Jul 2021 20:55:12 +0800 Subject: [PATCH 01/44] fix bug of cloud data reslove --- OCH/build/jrebel/project-cleaned.marker | 0 app2/build/jrebel/project-cleaned.marker | 0 .../build/jrebel/project-cleaned.marker | 0 libraries/build/jrebel/project-cleaned.marker | 0 .../build/jrebel/project-cleaned.marker | 0 modules/build/jrebel/project-cleaned.marker | 0 .../drawer/AdasRecognizedResultDrawer.java | 1 - .../common/drawer/SnapshotSetDataDrawer.java | 88 ++++++------------- services/build/jrebel/project-cleaned.marker | 0 skin/build/jrebel/project-cleaned.marker | 0 test/build/jrebel/project-cleaned.marker | 0 tts/build/jrebel/project-cleaned.marker | 0 12 files changed, 26 insertions(+), 63 deletions(-) create mode 100644 OCH/build/jrebel/project-cleaned.marker create mode 100644 app2/build/jrebel/project-cleaned.marker create mode 100644 foudations/build/jrebel/project-cleaned.marker create mode 100644 libraries/build/jrebel/project-cleaned.marker create mode 100644 main-extensions/build/jrebel/project-cleaned.marker create mode 100644 modules/build/jrebel/project-cleaned.marker create mode 100644 services/build/jrebel/project-cleaned.marker create mode 100644 skin/build/jrebel/project-cleaned.marker create mode 100644 test/build/jrebel/project-cleaned.marker create mode 100644 tts/build/jrebel/project-cleaned.marker diff --git a/OCH/build/jrebel/project-cleaned.marker b/OCH/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app2/build/jrebel/project-cleaned.marker b/app2/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/foudations/build/jrebel/project-cleaned.marker b/foudations/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libraries/build/jrebel/project-cleaned.marker b/libraries/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/main-extensions/build/jrebel/project-cleaned.marker b/main-extensions/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/build/jrebel/project-cleaned.marker b/modules/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index e9a2fd6598..a6d2c2e424 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -133,7 +133,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer { sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); mMarkersCaches.clear(); mMarkersCaches = newAdasRecognizedMarkersCaches; -// Log.d(TAG, "更新缓存marker, size : " + mMarkersCaches.size()); Log.d("ADAS数据延时绘制", "render 接收数据 -> 处理结束 " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms"); } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 26d0d1942b..f49172a616 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -35,6 +35,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; /** * @author congtaowang @@ -173,44 +174,18 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic IMogoMarker marker = mMarkersCaches.remove(uniqueKey); if (marker != null && !marker.isDestroyed()) { updateCacheMarkerRes(marker, cloudRoadData); - renderSnapshotOneFrame(true, marker, uniqueKey, cloudRoadData, newMarkersCaches); + renderSnapshotOneFrame(marker, uniqueKey, cloudRoadData, newMarkersCaches); } else { newDiffSet.add(cloudRoadData); } } removeUselessMarker(mMarkersCaches); removeUselessLastRecord(); - - // 能复用的 marker 数量 -// int cachedMarkerSize = mMarkersCaches.size(); // 需要新增的 marker 数量 int newDiffSetSize = newDiffSet.size(); - // 能复用的数量 -// int size = Math.min(cachedMarkerSize, newDiffSetSize); - // 复用过期 marker if (newDiffSetSize > 0) { -// Iterator> entryIterator = mMarkersCaches.entrySet().iterator(); -// for (int i = 0; i < size; i++) { -// SocketDownData.CloudRoadDataProto cloudRoadData = newDiffSet.get(i); -// String uniqueKey = cloudRoadData.getUuid(); -// Map.Entry entry = entryIterator.next(); -// entryIterator.remove(); -// SocketDownData.CloudRoadDataProto old = mLastPositions.remove(entry.getKey()); -// IMogoMarker marker = entry.getValue(); -// if (marker == null) { -// continue; -// } -// -// // 更新资源内容 -// if (old == null || old.getType() != cloudRoadData.getType()) { -// updateCacheMarkerRes(marker, cloudRoadData); -// } -// renderSnapshotOneFrame(marker, uniqueKey, cloudRoadData, newMarkersCaches); -// } - // 复用过后还需新增的 marker - for (int i = 0; i < newDiffSetSize; i++) { SocketDownData.CloudRoadDataProto cloudRoadData = newDiffSet.get(i); String uniqueKey = cloudRoadData.getUuid(); @@ -218,17 +193,13 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic if (marker == null) { continue; } - renderSnapshotOneFrame(false, marker, uniqueKey, cloudRoadData, newMarkersCaches); + Log.d("云端融合数据", "新增marker id : " + uniqueKey); + renderSnapshotOneFrame(marker, uniqueKey, cloudRoadData, newMarkersCaches); } } -// if (cachedMarkerSize - size > 0) { -// sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); -// } - sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); mMarkersCaches.clear(); mMarkersCaches = newMarkersCaches; - } /** @@ -295,41 +266,34 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @param cloudRoadData {@link SocketDownData.CloudRoadDataProto} * @param newSnapshotCaches 缓存数据 */ - private void renderSnapshotOneFrame(boolean useCache, IMogoMarker marker, String uniqueKey, SocketDownData.CloudRoadDataProto cloudRoadData, Map newSnapshotCaches) { + private void renderSnapshotOneFrame(IMogoMarker marker, String uniqueKey, SocketDownData.CloudRoadDataProto cloudRoadData, Map newSnapshotCaches) { - Logger.d(TAG, "renderSnapshotOneFrame"); - final long start = System.currentTimeMillis(); + Log.d("云端融合数据", " uuid : " + uniqueKey + " type : " + cloudRoadData.getType() + " fromType : " + cloudRoadData.getFromType()); + final long start = System.nanoTime(); SocketDownData.CloudRoadDataProto lastPosition = mLastPositions.remove(uniqueKey); - - double lastLon = -1; - double lastLat = -1; - if (lastPosition != null) { - lastLon = lastPosition.getWgslon(); - lastLat = lastPosition.getWgslat(); - } - - double[] matchLonLat = getMatchLonLat(cloudRoadData.getUuid(), cloudRoadData.getWgslon(), cloudRoadData.getWgslat(), cloudRoadData.getHeading(), lastLon, lastLat); - - SocketDownData.CloudRoadDataProto.Builder builder = cloudRoadData.toBuilder(); - builder.setWgslon(matchLonLat[0]); - builder.setWgslat(matchLonLat[1]); - - cloudRoadData = builder.build(); + // 道路吸附 +// double lastLon = -1; +// double lastLat = -1; +// if (lastPosition != null) { +// lastLon = lastPosition.getWgslon(); +// lastLat = lastPosition.getWgslat(); +// } +// double[] matchLonLat = getMatchLonLat(cloudRoadData.getUuid(), cloudRoadData.getWgslon(), cloudRoadData.getWgslat(), cloudRoadData.getHeading(), lastLon, lastLat); +// SocketDownData.CloudRoadDataProto.Builder builder = cloudRoadData.toBuilder(); +// builder.setWgslon(matchLonLat[0]); +// builder.setWgslat(matchLonLat[1]); +// cloudRoadData = builder.build(); mLastPositions.put(uniqueKey, cloudRoadData); - - if (useCache) { - long interval = computeAnimDuration(lastPosition.getSatelliteTime(), cloudRoadData.getSatelliteTime()); - - final MogoLatLng point = new MogoLatLng(cloudRoadData.getWgslat(), cloudRoadData.getWgslon()); - long cost = System.currentTimeMillis() - start; - final long intervalRef = interval - cost; - marker.addDynamicAnchorPosition(point, (float) cloudRoadData.getHeading(), intervalRef); - } else { - marker.setRotateAngle(((float) cloudRoadData.getHeading())); - marker.setPosition(cloudRoadData.getWgslat(), cloudRoadData.getWgslon()); + long interval = 45; + if (lastPosition != null) { + interval = computeAnimDuration(lastPosition.getSatelliteTime(), cloudRoadData.getSatelliteTime()); } + final MogoLatLng point = new MogoLatLng(cloudRoadData.getWgslat(), cloudRoadData.getWgslon()); + long cost = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start); + final long intervalRef = interval - cost; + marker.addDynamicAnchorPosition(point, (float) cloudRoadData.getHeading(), intervalRef); marker.setAnchorColor(getModelRenderColor(cloudRoadData.getType(), cloudRoadData.getFromType(), cloudRoadData.getSpeed(), cloudRoadData.getWgslon(), cloudRoadData.getWgslat(), cloudRoadData.getHeading())); newSnapshotCaches.put(uniqueKey, marker); diff --git a/services/build/jrebel/project-cleaned.marker b/services/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/skin/build/jrebel/project-cleaned.marker b/skin/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/build/jrebel/project-cleaned.marker b/test/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tts/build/jrebel/project-cleaned.marker b/tts/build/jrebel/project-cleaned.marker new file mode 100644 index 0000000000..e69de29bb2 From 5a2433a13dc56ba418f6f478fdbda4db111deb30 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 15 Jul 2021 09:36:49 +0800 Subject: [PATCH 02/44] .. --- OCH/build/jrebel/project-cleaned.marker | 0 foudations/build/jrebel/project-cleaned.marker | 0 libraries/build/jrebel/project-cleaned.marker | 0 main-extensions/build/jrebel/project-cleaned.marker | 0 modules/build/jrebel/project-cleaned.marker | 0 .../mogo/module/common/drawer/AdasRecognizedResultDrawer.java | 2 +- .../com/mogo/module/common/drawer/SnapshotSetDataDrawer.java | 2 +- services/build/jrebel/project-cleaned.marker | 0 skin/build/jrebel/project-cleaned.marker | 0 test/build/jrebel/project-cleaned.marker | 0 tts/build/jrebel/project-cleaned.marker | 0 11 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 OCH/build/jrebel/project-cleaned.marker delete mode 100644 foudations/build/jrebel/project-cleaned.marker delete mode 100644 libraries/build/jrebel/project-cleaned.marker delete mode 100644 main-extensions/build/jrebel/project-cleaned.marker delete mode 100644 modules/build/jrebel/project-cleaned.marker delete mode 100644 services/build/jrebel/project-cleaned.marker delete mode 100644 skin/build/jrebel/project-cleaned.marker delete mode 100644 test/build/jrebel/project-cleaned.marker delete mode 100644 tts/build/jrebel/project-cleaned.marker diff --git a/OCH/build/jrebel/project-cleaned.marker b/OCH/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/foudations/build/jrebel/project-cleaned.marker b/foudations/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/libraries/build/jrebel/project-cleaned.marker b/libraries/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/main-extensions/build/jrebel/project-cleaned.marker b/main-extensions/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/modules/build/jrebel/project-cleaned.marker b/modules/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index a6d2c2e424..a33f05b20c 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -41,7 +41,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { /** * 上一帧数据的缓存 */ - protected static Map mMarkersCaches = new ConcurrentHashMap<>(); + private static Map mMarkersCaches = new ConcurrentHashMap<>(); public AdasRecognizedResultDrawer() { super(); diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index f49172a616..d09f04049a 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -81,7 +81,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic /** * 上一帧数据的缓存 */ - protected static Map mMarkersCaches = new ConcurrentHashMap<>(); + private static Map mMarkersCaches = new ConcurrentHashMap<>(); private final Map mLastPositions = new ConcurrentHashMap<>(); diff --git a/services/build/jrebel/project-cleaned.marker b/services/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/skin/build/jrebel/project-cleaned.marker b/skin/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/test/build/jrebel/project-cleaned.marker b/test/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tts/build/jrebel/project-cleaned.marker b/tts/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 From c523f0f22c02edcd5d55fd294c38d34289d59569 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 15 Jul 2021 16:43:16 +0800 Subject: [PATCH 03/44] mock loc intent data --- .../java/com/mogo/module/adas/receiver/11 | 1 - modules/mogo-module-common/build.gradle | 2 + .../src/main/AndroidManifest.xml | 12 +++- .../common/datacenter/RealTimeData.java | 68 +++++++++++++++++++ .../SnapshotLocationDataCenter.java} | 34 +++++----- .../datacenter/SpiRealTimeProvider.java | 61 +++++++++++++++++ ...napShotMockTestPanelBroadCastReceiver.java | 59 ++++++++++++++++ .../mogo/module/common/drawer/BaseDrawer.java | 8 +-- .../com/mogo/module/service/MogoServices.java | 4 +- .../intent/ADASStatusIntentHandler.java | 4 +- .../service/intent/MockIntentHandler.java | 4 +- .../service/location/MogoRTKLocation.java | 4 +- .../timedelay/TimeDelayUploadManager.java | 4 +- 13 files changed, 231 insertions(+), 34 deletions(-) delete mode 100644 modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/11 create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/RealTimeData.java rename modules/mogo-module-common/src/main/java/com/mogo/module/common/{uploadintime/SnapshotLocationController.java => datacenter/SnapshotLocationDataCenter.java} (84%) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SpiRealTimeProvider.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/11 b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/11 deleted file mode 100644 index 0b50c7cf45..0000000000 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/receiver/11 +++ /dev/null @@ -1 +0,0 @@ - [{"lat":26.820175208327566,"lng":0.0,"lon":112.57748204198309},{"lat":26.82009891465042,"lng":0.0,"lon":112.57735739748664},{"lat":26.820022750763542,"lng":0.0,"lon":112.57723266155585},{"lat":26.81994655656347,"lng":0.0,"lon":112.57710795477944},{"lat":26.81987031666393,"lng":0.0,"lon":112.57698328267305},{"lat":26.819793988171348,"lng":0.0,"lon":112.57685866945901},{"lat":26.819717530408877,"lng":0.0,"lon":112.57673414980971},{"lat":26.819635079638967,"lng":0.0,"lon":112.57661462149986},{"lat":26.819532022659132,"lng":0.0,"lon":112.5765234581422},{"lat":26.819488197195188,"lng":0.0,"lon":112.5764835085963},{"lat":26.81947053563866,"lng":0.0,"lon":112.57645743645142},{"lat":26.81945285740347,"lng":0.0,"lon":112.5764313389555},{"lat":26.81941584428336,"lng":0.0,"lon":112.57637074918446},{"lat":26.819355855639404,"lng":0.0,"lon":112.57626774620917},{"lat":26.8193352833325,"lng":0.0,"lon":112.57623094969783},{"lat":26.819315738575742,"lng":0.0,"lon":112.57619587959701},{"lat":26.81929619389902,"lng":0.0,"lon":112.5761608096667},{"lat":26.819276064037396,"lng":0.0,"lon":112.5761245744324},{"lat":26.819221654527443,"lng":0.0,"lon":112.5760208132482},{"lat":26.819153675938914,"lng":0.0,"lon":112.5758903945585},{"lat":26.8190859083974,"lng":0.0,"lon":112.57576035026403},{"lat":26.81904791926707,"lng":0.0,"lon":112.57568644394968},{"lat":26.819047477540156,"lng":0.0,"lon":112.57568591545105},{"lat":26.819047035811135,"lng":0.0,"lon":112.57568538694994},{"lat":26.819046594080046,"lng":0.0,"lon":112.57568485844635},{"lat":26.81902999052958,"lng":0.0,"lon":112.57568137976324},{"lat":26.818966668056316,"lng":0.0,"lon":112.57572279587626},{"lat":26.81896660310204,"lng":0.0,"lon":112.57572518130716},{"lat":26.81896683258833,"lng":0.0,"lon":112.57572606581252},{"lat":26.81896706207354,"lng":0.0,"lon":112.57572695031374},{"lat":26.818971211272444,"lng":0.0,"lon":112.57573544393973},{"lat":26.819027657144368,"lng":0.0,"lon":112.57584589447032},{"lat":26.819095546341085,"lng":0.0,"lon":112.57597644303986},{"lat":26.8191650468231,"lng":0.0,"lon":112.57610591408428},{"lat":26.819236806047,"lng":0.0,"lon":112.5762338575302},{"lat":26.819310184480436,"lng":0.0,"lon":112.57636063880027},{"lat":26.819384451187933,"lng":0.0,"lon":112.5764867800095},{"lat":26.819460642360763,"lng":0.0,"lon":112.57661149583805},{"lat":26.819536878267925,"lng":0.0,"lon":112.57673619431976},{"lat":26.819613220428206,"lng":0.0,"lon":112.57686079387894},{"lat":26.819689146973122,"lng":0.0,"lon":112.57698570087358},{"lat":26.819765257290772,"lng":0.0,"lon":112.57711047564952},{"lat":26.81984156841068,"lng":0.0,"lon":112.57723510283108},{"lat":26.819916608456698,"lng":0.0,"lon":112.57735767331373},{"lat":26.819990868286688,"lng":0.0,"lon":112.57747918205983},{"lat":26.82006704845146,"lng":0.0,"lon":112.57760363217366},{"lat":26.820142688927376,"lng":0.0,"lon":112.57772676391022},{"lat":26.820220480866162,"lng":0.0,"lon":112.57784947830805},{"lat":26.82029609426984,"lng":0.0,"lon":112.57797111160743},{"lat":26.820372540342063,"lng":0.0,"lon":112.57809575812311},{"lat":26.820449035279513,"lng":0.0,"lon":112.57822036992494},{"lat":26.82052479395364,"lng":0.0,"lon":112.5783432083879},{"lat":26.820600741070034,"lng":0.0,"lon":112.57846626552721},{"lat":26.820676451505513,"lng":0.0,"lon":112.57858892597905},{"lat":26.820750627333855,"lng":0.0,"lon":112.57870908764811},{"lat":26.820788099971104,"lng":0.0,"lon":112.57876896886103},{"lat":26.82079340880141,"lng":0.0,"lon":112.57877600898784},{"lat":26.82079871765643,"lng":0.0,"lon":112.57878304914836},{"lat":26.820804096213536,"lng":0.0,"lon":112.57879017489086},{"lat":26.820866626548845,"lng":0.0,"lon":112.5788587003478},{"lat":26.820983640738305,"lng":0.0,"lon":112.57893123552938},{"lat":26.82111632395692,"lng":0.0,"lon":112.57893777257203},{"lat":26.82117204164965,"lng":0.0,"lon":112.57891747212024},{"lat":26.821184743761496,"lng":0.0,"lon":112.57890962148315},{"lat":26.821197445813166,"lng":0.0,"lon":112.5789017 diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 991cf7dbfe..83df7bbeda 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -56,6 +56,8 @@ dependencies { api project(":foudations:mogo-commons") api project(':services:mogo-service-api') } + + annotationProcessor 'com.elegant.spi:compiler:1.0.3' } apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/modules/mogo-module-common/src/main/AndroidManifest.xml b/modules/mogo-module-common/src/main/AndroidManifest.xml index d2c8bb29e1..416b99cb53 100644 --- a/modules/mogo-module-common/src/main/AndroidManifest.xml +++ b/modules/mogo-module-common/src/main/AndroidManifest.xml @@ -1,2 +1,12 @@ + package="com.mogo.module.common" > + + + + + + + + + + diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/RealTimeData.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/RealTimeData.java new file mode 100644 index 0000000000..fb371c7337 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/RealTimeData.java @@ -0,0 +1,68 @@ +package com.mogo.module.common.datacenter; + +public class RealTimeData { + + private static volatile RealTimeData realTimeData; + private static final byte[] bytes = new byte[0]; + + private double lat; + private double lon; + private double heading; + private int speed; + private long satelliteTime; + + private RealTimeData() { + + } + + public static RealTimeData getInstance() { + if (realTimeData == null) { + synchronized (bytes) { + if (realTimeData == null) { + realTimeData = new RealTimeData(); + } + } + } + return realTimeData; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public void setHeading(double heading) { + this.heading = heading; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public void setSatelliteTime(long satelliteTime) { + this.satelliteTime = satelliteTime; + } + + public double getLat() { + return lat; + } + + public double getLon() { + return lon; + } + + public double getHeading() { + return heading; + } + + public int getSpeed() { + return speed; + } + + public long getSatelliteTime() { + return satelliteTime; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/uploadintime/SnapshotLocationController.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SnapshotLocationDataCenter.java similarity index 84% rename from modules/mogo-module-common/src/main/java/com/mogo/module/common/uploadintime/SnapshotLocationController.java rename to modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SnapshotLocationDataCenter.java index 52a5153297..4ca8c23695 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/uploadintime/SnapshotLocationController.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SnapshotLocationDataCenter.java @@ -1,35 +1,30 @@ -package com.mogo.module.common.uploadintime; +package com.mogo.module.common.datacenter; import com.mogo.commons.debug.DebugConfig; import com.mogo.module.common.MogoApisHandler; import com.mogo.service.locationinfo.CloudLocationInfo; -import com.mogo.utils.logger.Logger; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; -/* - * @author congtaowang - * @since 2020/12/14 - * - * 实时坐标数据处理中心 +/** + * 定位坐标同步数据中心 + * 接收来自工控机实际定位数据 */ -public class SnapshotLocationController { +public class SnapshotLocationDataCenter { - private static final String TAG = "SnapshotLocationController"; + private static volatile SnapshotLocationDataCenter sInstance; - private static volatile SnapshotLocationController sInstance; - - private SnapshotLocationController() { + private SnapshotLocationDataCenter() { } - public static SnapshotLocationController getInstance() { + public static SnapshotLocationDataCenter getInstance() { if (sInstance == null) { - synchronized (SnapshotLocationController.class) { + synchronized (SnapshotLocationDataCenter.class) { if (sInstance == null) { - sInstance = new SnapshotLocationController(); + sInstance = new SnapshotLocationDataCenter(); } } } @@ -52,6 +47,7 @@ public class SnapshotLocationController { private double mCurSpeed; private double mCurLon; private double mCurLat; + private long mSatelliteTime = 0; /** * 同步从定位来的数据(也可能是rtk) @@ -81,7 +77,6 @@ public class SnapshotLocationController { //测试面板状态同步 DebugConfig.setStatus(DebugConfig.sLocation, true); -// Logger.d(TAG, "同步到rtk数据"); double lon = data.optDouble("lon", -1); double lat = data.optDouble("lat", -1); double alt = data.optDouble("alt", -1); @@ -111,6 +106,7 @@ public class SnapshotLocationController { mCurSpeed = cloudLocationInfo.getSpeed(); mCurLon = cloudLocationInfo.getLon(); mCurLat = cloudLocationInfo.getLat(); + mSatelliteTime = cloudLocationInfo.getSatelliteTime(); } /** @@ -143,7 +139,6 @@ public class SnapshotLocationController { if (list.size() == 0) { return null; } - //Logger.d( TAG, "upload loc size = %s", list == null ? 0 : list.size() ); return list; } @@ -153,7 +148,6 @@ public class SnapshotLocationController { * @return 精度 */ public int getDataAccuracy() { - //Logger.d( TAG, "upload loc accuracy = %s", mDataAccuracy ); return mDataAccuracy; } @@ -168,4 +162,8 @@ public class SnapshotLocationController { public double getCurLat() { return mCurLat; } + + public long getSatelliteTime(){ + return mSatelliteTime; + } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SpiRealTimeProvider.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SpiRealTimeProvider.java new file mode 100644 index 0000000000..9b45273641 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SpiRealTimeProvider.java @@ -0,0 +1,61 @@ +package com.mogo.module.common.datacenter; + +import com.elegant.spi.annotations.Service; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.realtime.api.IRealTimeProvider; +import com.mogo.realtime.entity.SocketReceiveDataProto3; +import com.mogo.realtime.util.MortonCode; + +import static com.mogo.cloud.socket.SocketMsgType.MSG_TYPE_UPLINK_CAR_DATA; + +@Service(value = IRealTimeProvider.class) +public class SpiRealTimeProvider implements IRealTimeProvider { + + @Override + public SocketReceiveDataProto3.SocketReceiveDataProto getLocationMsg() { + + double lat = RealTimeData.getInstance().getLat(); + double lon = RealTimeData.getInstance().getLon(); + if (lat == 0.0f || lon == 0.0f) { + return null; + } + double heading = RealTimeData.getInstance().getHeading(); + int speed = RealTimeData.getInstance().getSpeed(); + long satelliteTime = RealTimeData.getInstance().getSatelliteTime(); + long mortonCode = MortonCode.encodeMorton(lon, lat); + + SocketReceiveDataProto3.LocationInfoProto locationInfoProto = + SocketReceiveDataProto3.LocationInfoProto.newBuilder() + .setLat(lat) + .setLon(lon) + .setHeading(heading) + .setSystemTime(System.currentTimeMillis()) + .setSatelliteTime(satelliteTime) + .setAlt(0) + .setDataAccuracy(1) + .setSpeed(speed) + .setMortonCode(mortonCode) + .setSn(MoGoAiCloudClientConfig.getInstance().getSn()) + .build(); + + SocketReceiveDataProto3.MyLocationReq myLocationReq = + SocketReceiveDataProto3.MyLocationReq.newBuilder() + .setLastCoordinate(locationInfoProto) + .setDataAccuracy(1) + .setMortonCode(mortonCode) + .setFromType(0) + .setSn(MoGoAiCloudClientConfig.getInstance().getSn()) + .build(); + + SocketReceiveDataProto3.OnePerSecondSendReqProto self = + SocketReceiveDataProto3.OnePerSecondSendReqProto.newBuilder() + .setSelf(myLocationReq) + .build(); + return SocketReceiveDataProto3.SocketReceiveDataProto.newBuilder() + .setIPCSn(MoGoAiCloudClientConfig.getInstance().getSn() + "xavier") + .setSn(MoGoAiCloudClientConfig.getInstance().getSn()) + .setData(self) + .setMsgType(MSG_TYPE_UPLINK_CAR_DATA.getMsgType()) + .setSeq(System.currentTimeMillis()).build(); + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java new file mode 100644 index 0000000000..a1a8f9308c --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java @@ -0,0 +1,59 @@ +package com.mogo.module.common.datacenter.receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.mogo.module.common.datacenter.RealTimeData; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; +import com.mogo.utils.logger.Logger; + +public class SnapShotMockTestPanelBroadCastReceiver extends BroadcastReceiver { + + private static final String TAG = "SnapShotMockTestPanelBroadCastReceiver"; + + /** + * 定位模拟测试控制面板广播Action + */ + public static final String BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY = "sceneType"; + + private Context mContext; + + @Override + public void onReceive(Context context, Intent intent) { + try { + this.mContext = context; + int sceneType = intent.getIntExtra(BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0); + Logger.d(TAG, "textPanelOpenType:" + sceneType); + // 分发场景 + dispatchSceneTest(sceneType); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 分发处理场景 + * 定位模拟分发场景中,需要case自己处理数据,以生产者消费者模式来提供 RealTimeData 所需字段,详见mockCase package + * + * @param sceneType 场景类型 + */ + private void dispatchSceneTest(int sceneType) { + Logger.d(TAG, "sceneType=" + sceneType); + if (sceneType == 1) { + //模拟顺义固定位置 + RealTimeData.getInstance().setLat(39.968309); + RealTimeData.getInstance().setLon(116.410871); + RealTimeData.getInstance().setHeading(120); + RealTimeData.getInstance().setSpeed(30); + long satelliteTime = SnapshotLocationDataCenter.getInstance().getSatelliteTime(); + if (satelliteTime == 0) { + satelliteTime = System.currentTimeMillis(); + } + RealTimeData.getInstance().setSatelliteTime(satelliteTime); + } else if (sceneType == 2) { + + } + + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index 17a611318e..5612f5318e 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -16,7 +16,7 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.R; import com.mogo.module.common.constants.AdasRecognizedType; import com.mogo.module.common.drawer.bean.SpeedData; -import com.mogo.module.common.uploadintime.SnapshotLocationController; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; import com.mogo.utils.WorkThreadHandler; import java.util.Collection; @@ -255,7 +255,7 @@ class BaseDrawer { protected double getCurSpeed() { double speed = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastSpeed(); if (speed <= 0) { - speed = SnapshotLocationController.getInstance().getCurSpeed(); + speed = SnapshotLocationDataCenter.getInstance().getCurSpeed(); } return speed; } @@ -271,8 +271,8 @@ class BaseDrawer { MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat(), }; if (coordinates[0] <= 0) { - coordinates[0] = SnapshotLocationController.getInstance().getCurLon(); - coordinates[1] = SnapshotLocationController.getInstance().getCurLat(); + coordinates[0] = SnapshotLocationDataCenter.getInstance().getCurLon(); + coordinates[1] = SnapshotLocationDataCenter.getInstance().getCurLat(); } return coordinates; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 7bb5d1e5a4..6e1bc8ec59 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -35,7 +35,7 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; -import com.mogo.module.common.uploadintime.SnapshotLocationController; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; import com.mogo.module.service.autopilot.AutoPilotRemoteController; import com.mogo.module.service.handler.MainLooperHandler; import com.mogo.module.service.handler.RefreshWorkThreadHandler; @@ -1003,7 +1003,7 @@ public class MogoServices implements IMogoMapListener, e.printStackTrace(); } MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map( data ); - SnapshotLocationController.getInstance().syncAdasLocationInfo( data ); + SnapshotLocationDataCenter.getInstance().syncAdasLocationInfo( data ); } catch ( Exception e ) { e.printStackTrace(); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/ADASStatusIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/ADASStatusIntentHandler.java index 90f21f8a24..c83e6a4b33 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/ADASStatusIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/ADASStatusIntentHandler.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.Intent; import android.text.TextUtils; -import com.mogo.module.common.uploadintime.SnapshotLocationController; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.module.service.carinfo.CarStateInfo; @@ -73,7 +73,7 @@ class ADASStatusIntentHandler implements IntentHandler { data.putOpt( "acceleration", stateInfo.getValues().getAcceleration() ); data.putOpt( "yawRate", stateInfo.getValues().getYaw_rate() ); MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map( data ); - SnapshotLocationController.getInstance().syncAdasLocationInfo( data ); + SnapshotLocationDataCenter.getInstance().syncAdasLocationInfo( data ); } catch ( Exception e ) { e.printStackTrace(); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java index f9238e5fb0..ba58bcaec0 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -33,7 +33,7 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.DataTypes; import com.mogo.module.common.dialog.WMDialog; import com.mogo.module.common.drawer.SnapshotSetDataDrawer; -import com.mogo.module.common.uploadintime.SnapshotLocationController; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.R; import com.mogo.module.service.status.EnvStatusManager; @@ -852,7 +852,7 @@ public class MockIntentHandler implements IntentHandler { //改变rtk定位数据,触发自车移动 MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map(jo); Log.i("mock-timer-loc-map", "cost " + (System.currentTimeMillis() - start) + "ms"); - SnapshotLocationController.getInstance().syncAdasLocationInfo(jo); + SnapshotLocationDataCenter.getInstance().syncAdasLocationInfo(jo); Log.i("mock-timer-loc", "cost " + (System.currentTimeMillis() - start) + "ms"); Log.i("mock-timer-loc-info", jo.toString()); return true; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java index a74570c00d..8248f6954e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/location/MogoRTKLocation.java @@ -9,7 +9,7 @@ import android.os.Bundle; import com.mogo.commons.AbsMogoApplication; import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.uploadintime.SnapshotLocationController; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; import com.mogo.service.locationinfo.CloudLocationInfo; import com.mogo.utils.logger.Logger; @@ -74,7 +74,7 @@ public class MogoRTKLocation { cloudLocationInfo.setSystemTime(System.currentTimeMillis()); cloudLocationInfo.setTileId(String.valueOf(MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController() .getTileId(location.getLongitude(), location.getLatitude()))); - SnapshotLocationController.getInstance().syncLocationInfo(cloudLocationInfo); + SnapshotLocationDataCenter.getInstance().syncLocationInfo(cloudLocationInfo); } } else { Logger.e(TAG, "location == null"); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/timedelay/TimeDelayUploadManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/timedelay/TimeDelayUploadManager.java index 6ac3dcf467..9d828d0d40 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/timedelay/TimeDelayUploadManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/timedelay/TimeDelayUploadManager.java @@ -13,7 +13,7 @@ import com.mogo.cloud.socket.entity.SocketDownData; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.SubscribeImpl; import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.uploadintime.SnapshotLocationController; +import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.network.TimeDelayApiService; import com.mogo.module.service.network.bean.MockSocketReceiverData; @@ -100,7 +100,7 @@ public class TimeDelayUploadManager implements IMogoOnMessageListener Date: Thu, 15 Jul 2021 17:24:02 +0800 Subject: [PATCH 04/44] no message --- .../receiver/SnapShotMockTestPanelBroadCastReceiver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java index a1a8f9308c..538dd76938 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/receiver/SnapShotMockTestPanelBroadCastReceiver.java @@ -34,7 +34,7 @@ public class SnapShotMockTestPanelBroadCastReceiver extends BroadcastReceiver { /** * 分发处理场景 - * 定位模拟分发场景中,需要case自己处理数据,以生产者消费者模式来提供 RealTimeData 所需字段,详见mockCase package + * 定位模拟分发场景中,需要case自己处理数据,以生产者消费者模式来提供 RealTimeData 所需字段 * * @param sceneType 场景类型 */ From 7d95479bcc5ce94615837eed7bb1962ae75ca6d3 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 15 Jul 2021 17:09:30 +0800 Subject: [PATCH 05/44] =?UTF-8?q?[fix]=20=E9=A2=84=E8=AD=A6=E5=88=92?= =?UTF-8?q?=E7=BA=BF=E4=B8=8D=E5=8F=96=E6=B6=88=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/drawer/V2XWarnDataDrawer.java | 2 - .../scene/warning/V2XWarningMarker.java | 94 +++++++++++-------- .../raw/scenario_warning_event_data_left.json | 2 +- ...enario_warning_event_data_pedestrians.json | 2 +- .../scenario_warning_event_data_right.json | 2 +- 5 files changed, 60 insertions(+), 42 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java index 2e875cb6b8..2ef39c0274 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java @@ -176,8 +176,6 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL markerShowEntity.setMarkerLocation(location); markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_STOP_LINE_DATA); IMogoMarker marker = drawStopLineMarker(markerShowEntity); - - } /** 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 790f7e7884..7be8e07801 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 @@ -58,7 +58,7 @@ public class V2XWarningMarker implements IV2XMarker { /* * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算 * */ - private MogoLatLng middleLocationInStopLine = new MogoLatLng(0,0); + private MogoLatLng middleLocationInStopLine = new MogoLatLng(0, 0); private static long showTime = 5000; private float bearing; @@ -75,8 +75,9 @@ public class V2XWarningMarker implements IV2XMarker { } public void drawLineWithEntity() { - showTime = mCloundWarningInfo.getShowTime() > 0 ? mCloundWarningInfo.getShowTime()*1000 : 5000; - Log.d(TAG, "显示时间为++" + String.valueOf(showTime)+"识别物类型:"+String.valueOf(mCloundWarningInfo.getType())); + showTime = mCloundWarningInfo.getShowTime() > 0 ? mCloundWarningInfo.getShowTime() * 1000 : 5000; + Log.d(TAG, "显示时间为++" + String.valueOf(showTime) + "识别物类型:" + + String.valueOf(mCloundWarningInfo.getType())); pointsBetween(); bearing = V2XLocationListener.getInstance().getLastCarLocation().getBearing(); isSelfLineClear = false; @@ -85,29 +86,28 @@ public class V2XWarningMarker implements IV2XMarker { if (fillPoints.size() > 0) { //存在停止线的情况 TODO middleLocationInStopLine = getMiddleLocationInStopLine(); //如果是正前方类型,红色绘制区域从停止线向前绘制50米 - MogoLatLng warningLocation = Trigonometric.getNewLocation(middleLocationInStopLine, 50, mCloundWarningInfo.getAngle()); + 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); + drawRedWarningLineFrontOfStopLine(mCloundWarningInfo, middleLocationInStopLine, + warningLocation); //添加停止线marker handleStopLine(); - if (carLocation.lat != 0 && carLocation.lon != 0){ + if (carLocation.lat != 0 && carLocation.lon != 0) { //自车画线 drawSelfCarLine(carLocation.lon, carLocation.lat, bearing); - }else { - Log.d(TAG,"自车定位数据为空carLocation == null"); + } else { + Log.d(TAG, "自车定位数据为空carLocation == null"); } }, 0); UiThreadHandler.postDelayed(() -> { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoStopPolylineManager().clearLine(); - isSelfLineClear = true; + clearAllLine(); }, showTime); } else { //无停止线 @@ -118,24 +118,22 @@ public class V2XWarningMarker implements IV2XMarker { V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA); V2XWarnDataDrawer.getInstance().renderWarnData(mCloundWarningInfo); //车辆静止的时候 - if (carLocation.lat != 0 && carLocation.lon != 0){ + if (carLocation.lat != 0 && carLocation.lon != 0) { drawSelfCarLine(carLocation.lon, carLocation.lat, bearing); - }else { - Log.d(TAG,"数据为空carLocation == null"); + } else { + Log.d(TAG, "数据为空carLocation == null"); } }, 0); //延迟3秒清理线 UiThreadHandler.postDelayed(() -> { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - isSelfLineClear = true; + clearAllLine(); }, showTime); } //预警蒙层 - MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); - + MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection + (mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); } /** @@ -146,8 +144,10 @@ public class V2XWarningMarker implements IV2XMarker { 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()); + 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); @@ -167,12 +167,21 @@ public class V2XWarningMarker implements IV2XMarker { lineInfo.setWidth(info.getRoadwidth() * 14 + 5); V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); } + UiThreadHandler.postDelayed(() -> { + clearAllLine(); + }, showTime); } else { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoStopPolylineManager().clearLine(); + clearAllLine(); } } + public void clearAllLine() { + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + V2XServiceManager.getMoGoStopPolylineManager().clearLine(); + isSelfLineClear = true; + } + /** * 补点后的停止线经纬度合集 */ @@ -227,7 +236,8 @@ public class V2XWarningMarker implements IV2XMarker { } private MogoLatLng getMogoLat(MogoLatLng latlng) { - MogoLatLng newLocation = Trigonometric.getNewLocation(latlng, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle()); + MogoLatLng newLocation = Trigonometric.getNewLocation(latlng, mCloundWarningInfo.getStopLineDistance(), + mCloundWarningInfo.getAngle()); return newLocation; } @@ -235,37 +245,45 @@ public class V2XWarningMarker implements IV2XMarker { * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算 * */ private MogoLatLng getMiddleLocationInStopLine() { - Log.d(TAG, "计算停止线上的某个点" + String.valueOf(carLocation.lat + "," + String.valueOf(carLocation.lon))); + 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()); + MogoLatLng newLocation = Trigonometric.getNewLocation(carLocation, mCloundWarningInfo.getStopLineDistance(), + mCloundWarningInfo.getAngle()); return newLocation; } /** - * 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警) + * 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP + * 自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警) + * lon 自车经度 + * lat 自车纬度 */ public void drawSelfCarLine(double lon, double lat, float bearing) { if (!isSelfLineClear) { IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); if (mCloundWarningInfo != null) { - MogoLatLng startLatlng = new MogoLatLng(0,0); - MogoLatLng endLatlng = new MogoLatLng(0,0); - MogoLatLng addMiddleLoc = new MogoLatLng(0,0); + MogoLatLng startLatlng = new MogoLatLng(0, 0); + MogoLatLng endLatlng = new MogoLatLng(0, 0); + MogoLatLng addMiddleLoc = new MogoLatLng(0, 0); 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()); + 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)); + 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); @@ -285,8 +303,11 @@ public class V2XWarningMarker implements IV2XMarker { info.setDirection(mCloundWarningInfo.getDirection()); V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); } + UiThreadHandler.postDelayed(() -> { + clearAllLine(); + }, showTime+3000); } else { - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + clearAllLine(); } } } @@ -323,7 +344,7 @@ public class V2XWarningMarker implements IV2XMarker { } } else { Log.e(V2XConst.LOG_NAME_WARN, "info == null"); - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + clearAllLine(); } } @@ -344,7 +365,6 @@ public class V2XWarningMarker implements IV2XMarker { } //延迟3秒清理线 UiThreadHandler.postDelayed(() -> { - V2XServiceManager.getMarkerManager().removeMarkers(WARNING_ARROWS); }, showTime); diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json index 2ed07eb3a8..6fe3edc623 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json @@ -16,6 +16,6 @@ "stopLineDistance": 60, "warningContent": "注意自行车", "heading": 0, - "showTime": 5000, + "showTime": 3, "roadwidth": 4.0 } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json index 381e3eadc8..0a48613c3c 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json @@ -24,6 +24,6 @@ "stopLineDistance": 60, "warningContent": "小心行人", "heading": 0, - "showTime": 5000, + "showTime": 3, "roadwidth": 4.0 } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json index c0a20d333c..6bba8cf023 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json @@ -15,6 +15,6 @@ "stopLineDistance": 60, "warningContent": "注意摩托车", "heading": 0, - "showTime": 5000, + "showTime": 3, "roadwidth": 4.0 } From bf09b5a61a33b02f10493354f4426f6ae1fc2ae2 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 15 Jul 2021 19:54:26 +0800 Subject: [PATCH 06/44] =?UTF-8?q?=E5=BC=B9=E6=A1=86=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E6=95=B0=E6=8D=AE=E5=86=85=E6=B5=8B,?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=B9=E6=A1=86=E5=8F=96=E6=B6=88=E6=97=B6?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/drawer/V2XWarnDataDrawer.java | 8 +- .../scene/warning/V2XWarningMarker.java | 126 +++++++----------- .../raw/scenario_warning_event_data_left.json | 2 +- ...enario_warning_event_data_pedestrians.json | 2 +- .../scenario_warning_event_data_right.json | 2 +- 5 files changed, 51 insertions(+), 89 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java index 2ef39c0274..0a89862ea9 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/V2XWarnDataDrawer.java @@ -74,7 +74,7 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL /** - * 绘制行人和二轮车,前方和左右 + * 识别物移动 * * @param data */ @@ -87,12 +87,10 @@ public class V2XWarnDataDrawer extends BaseDrawer implements IMogoStatusChangedL markerShowEntity.setMarkerLocation(location); markerShowEntity.setMarkerType(TYPE_MARKER_CLOUD_WARN_DATA); IMogoMarker marker = drawMarker(markerShowEntity, modeResType(data.getType())); - //识别物 - marker.addDynamicAnchorPosition(new MogoLatLng(data.getCollisionLat(), data.getCollisionLon()), (float) data.getHeading(), 5000); - //移动完成以后,3s后消失 + marker.addDynamicAnchorPosition(new MogoLatLng(data.getCollisionLat(), data.getCollisionLon()), (float) data.getHeading(), (long) (data.getShowTime() * 1000)); UiThreadHandler.postDelayed(() -> { marker.remove(); - }, data.getShowTime()); + }, data.getShowTime() * 1000); } 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 7be8e07801..b4edb1fb66 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 @@ -27,6 +27,7 @@ import com.mogo.module.v2x.scenario.view.IV2XMarker; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.ViewUtils; import com.mogo.utils.WorkThreadHandler; +import com.mogo.utils.network.utils.Util; import java.util.ArrayList; import java.util.Arrays; @@ -59,7 +60,7 @@ public class V2XWarningMarker implements IV2XMarker { * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算 * */ private MogoLatLng middleLocationInStopLine = new MogoLatLng(0, 0); - private static long showTime = 5000; + private static long showTime = 6000; private float bearing; @Override @@ -75,40 +76,38 @@ public class V2XWarningMarker implements IV2XMarker { } public void drawLineWithEntity() { - showTime = mCloundWarningInfo.getShowTime() > 0 ? mCloundWarningInfo.getShowTime() * 1000 : 5000; + showTime = mCloundWarningInfo.getShowTime() > 0 ? mCloundWarningInfo.getShowTime() * 1000 : 6000; Log.d(TAG, "显示时间为++" + String.valueOf(showTime) + "识别物类型:" + String.valueOf(mCloundWarningInfo.getType())); - pointsBetween(); + fillPointOnStopLine(); bearing = V2XLocationListener.getInstance().getLastCarLocation().getBearing(); isSelfLineClear = false; isFirstLocation = false; - V2XServiceManager.getMarkerManager().removeMarkers(WARNING_ARROWS); - if (fillPoints.size() > 0) { //存在停止线的情况 TODO + if (fillPoints.size() > 0) { + //存在停止线的情况 自车与停止线之间绘制蓝色安全线 停止线向前50m绘制红色预警线 + //先获取自车与停止线之间的点 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(); if (carLocation.lat != 0 && carLocation.lon != 0) { - //自车画线 + //自车与停止线直线绘制蓝色预警线 drawSelfCarLine(carLocation.lon, carLocation.lat, bearing); } else { Log.d(TAG, "自车定位数据为空carLocation == null"); } + //二轮车和行人的渲染和移动 + V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA); + //停止线向前方50m绘制红色预警线 + drawRedWarningLineFrontOfStopLine(mCloundWarningInfo, middleLocationInStopLine, + warningLocation); + V2XWarnDataDrawer.getInstance().renderWarnData(mCloundWarningInfo); + //添加停止线marker + handleStopLine(); }, 0); - UiThreadHandler.postDelayed(() -> { - clearAllLine(); - }, showTime); + clearAllLine(); } else { //无停止线 WorkThreadHandler.getInstance().postDelayed(() -> { @@ -116,29 +115,23 @@ public class V2XWarningMarker implements IV2XMarker { drawOtherObjectLine(mCloundWarningInfo); //二轮车和行人的渲染和移动 V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA); - V2XWarnDataDrawer.getInstance().renderWarnData(mCloundWarningInfo); //车辆静止的时候 if (carLocation.lat != 0 && carLocation.lon != 0) { drawSelfCarLine(carLocation.lon, carLocation.lat, bearing); } else { Log.d(TAG, "数据为空carLocation == null"); } + V2XWarnDataDrawer.getInstance().renderWarnData(mCloundWarningInfo); }, 0); - //延迟3秒清理线 - UiThreadHandler.postDelayed(() -> { - clearAllLine(); - }, showTime); + clearAllLine(); } //预警蒙层 MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection (mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); } - /** - * 场景如:车辆行驶正前方绘制红色区域(停止线继续前行的预警区域) TODO 需要实时给行人当前位置 - */ private void drawRedWarningLineFrontOfStopLine(V2XWarningEntity info, MogoLatLng startLatLng, MogoLatLng mogoLatLng) { if (info != null) { @@ -148,7 +141,7 @@ public class V2XWarningMarker implements IV2XMarker { endLatlng.lon, endLatlng.lat); MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatLng, distance / 2, mCloundWarningInfo.getAngle()); - Log.d(TAG, "红色区域起始点 = " + startLatLng.lon + "," + startLatLng.lat + + Log.d(TAG, "停止线前方50m区域的三个坐标点是:" + startLatLng.lon + "," + startLatLng.lat + "中间点坐标:" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点" + endLatlng.lon + "," + endLatlng.lat); if (polyLine != null) { @@ -167,25 +160,33 @@ public class V2XWarningMarker implements IV2XMarker { lineInfo.setWidth(info.getRoadwidth() * 14 + 5); V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); } - UiThreadHandler.postDelayed(() -> { - clearAllLine(); - }, showTime); + clearAllLine(); } else { clearAllLine(); } } public void clearAllLine() { - V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - V2XServiceManager.getMoGoStopPolylineManager().clearLine(); - isSelfLineClear = true; + UiThreadHandler.postDelayed(() -> { + Log.d(TAG, "清除所有预警线的时间是:" + String.valueOf(System.currentTimeMillis())); + //清除识别物到碰撞点预警线 + V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); + //清除车到碰撞点预警线 + V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); + //清除停止线 + V2XServiceManager.getMoGoStopPolylineManager().clearLine(); + //清除小箭头 + V2XServiceManager.getMarkerManager().removeMarkers(WARNING_ARROWS); + //清除停止线 + V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA); + isSelfLineClear = true; + }, showTime); } /** * 补点后的停止线经纬度合集 */ - public void pointsBetween() { + public void fillPointOnStopLine() { try { fillPoints.clear(); List stopLines = mCloundWarningInfo.getStopLines(); @@ -223,13 +224,11 @@ public class V2XWarningMarker implements IV2XMarker { entity.setLat(latLng.lat); entity.setLon(latLng.lon); entity.heading = mCloundWarningInfo.heading; + Log.d(TAG, "绘制停止线+time=" + String.valueOf(System.currentTimeMillis())); V2XWarnDataDrawer.getInstance().renderStopLineData(entity); } + clearAllLine(); } - //移动完成以后,3s后消失 - UiThreadHandler.postDelayed(() -> { - V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA); - }, mCloundWarningInfo.getShowTime()); } catch (Exception e) { e.printStackTrace(); } @@ -256,8 +255,7 @@ public class V2XWarningMarker implements IV2XMarker { } /** - * 自车为起点绘制(根据设计,前方行人/弱势交通参与者预警 getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP - * 自车与停止线之间为蓝色预警;其他侧方预警自车与预碰撞点之间显示红色预警) + * 自车与停止线之间为蓝色预警 * lon 自车经度 * lat 自车纬度 */ @@ -274,7 +272,7 @@ public class V2XWarningMarker implements IV2XMarker { isFirstLocation = true; } //绘制线的终点(在停止线上或者预碰撞点上) - endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? + endLatlng = new MogoLatLng(mCloundWarningInfo.getStopLines().size() > 0 ? middleLocationInStopLine.lat : mCloundWarningInfo.getCollisionLat(), mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? middleLocationInStopLine.lon : mCloundWarningInfo.getCollisionLon()); @@ -292,7 +290,7 @@ public class V2XWarningMarker implements IV2XMarker { mogoPolyline.setTransparency(0.5f); } else { DrawLineInfo info = new DrawLineInfo(); // 对象 - Log.d(TAG, "安全区域的画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); + Log.d(TAG, "安全区域蓝色预警线" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); List locations = new ArrayList(); locations.add(startLatlng); locations.add(addMiddleLoc); @@ -301,11 +299,10 @@ public class V2XWarningMarker implements IV2XMarker { info.setHeading(bearing); info.setWidth(mCloundWarningInfo.getRoadwidth() * 14 + 5); info.setDirection(mCloundWarningInfo.getDirection()); + Log.d(TAG, "绘制自车与碰撞点之间的预警线+time=" + String.valueOf(System.currentTimeMillis())); V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); } - UiThreadHandler.postDelayed(() -> { - clearAllLine(); - }, showTime+3000); + clearAllLine(); } else { clearAllLine(); } @@ -328,6 +325,8 @@ public class V2XWarningMarker implements IV2XMarker { polyLine.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); polyLine.setTransparency(0.5f); } else { + //识别物到预碰撞点之间的箭头 + addArrows(startLatlng, endLatlng); DrawLineInfo lineInfo = new DrawLineInfo(); Log.d(TAG, "目标物与预碰撞点画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); List locations = new ArrayList(); @@ -339,8 +338,6 @@ public class V2XWarningMarker implements IV2XMarker { 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"); @@ -363,42 +360,9 @@ public class V2XWarningMarker implements IV2XMarker { 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 = 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, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle()); - Log.d(TAG, "2D资源绘" + drawStopLineLon); - MogoMarkerOptions optionsRipple = new MogoMarkerOptions() - .latitude(drawStopLineLon.getLat()) - .longitude(drawStopLineLon.getLon()) - .anchor(1.0f, 1.0f) - .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); - - optionsRipple - .icon(ViewUtils.fromView(new EmptyMarkerView(V2XServiceManager.getContext()))); - IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(TYPE_MARKER_CLOUD_STOP_LINE_DATA, optionsRipple); - stopLine.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext()))); - stopLine.showInfoWindow(); - UiThreadHandler.postDelayed(() -> { - stopLine.hideInfoWindow(); - }, showTime); - } - public void onCarLocationChanged2(Location latLng) { carLocation = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()); if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() && isSelfLineClear == false) { diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json index 6fe3edc623..eb56e7cb5d 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json @@ -16,6 +16,6 @@ "stopLineDistance": 60, "warningContent": "注意自行车", "heading": 0, - "showTime": 3, + "showTime": 6, "roadwidth": 4.0 } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json index 0a48613c3c..77ca4304dd 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json @@ -24,6 +24,6 @@ "stopLineDistance": 60, "warningContent": "小心行人", "heading": 0, - "showTime": 3, + "showTime": 6, "roadwidth": 4.0 } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json index 6bba8cf023..95f60d2eb8 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json @@ -15,6 +15,6 @@ "stopLineDistance": 60, "warningContent": "注意摩托车", "heading": 0, - "showTime": 3, + "showTime": 6, "roadwidth": 4.0 } From 1875fd6e34015782b4e8270909ec19e02ef0b673 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 16 Jul 2021 13:30:00 +0800 Subject: [PATCH 07/44] =?UTF-8?q?=E4=BA=91=E7=AB=AF=E6=84=9F=E7=9F=A5?= =?UTF-8?q?=E8=9E=8D=E5=90=88=20=E6=9A=82=E6=97=B6=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E4=BA=91=E7=AB=AF=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/service/marker/MapMarkerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 11a23d8898..3279798626 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -148,7 +148,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, @Override public void onMsgReceived(SocketDownData.LauncherSnapshotProto mogoSnapshotSetData) { DebugConfig.setStatus(DebugConfig.sDownloadSnapshot, true); - SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); +// SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); // Message msg = mSnapshotHandler.obtainMessage(); // msg.obj = mogoSnapshotSetData; // msg.what = MSG_SNAPSHOT; From e3b529a517530399f02999b2db7b39364beee8de Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 16 Jul 2021 17:29:48 +0800 Subject: [PATCH 08/44] fix bug of delete cloud data of recognized --- .idea/gradle.xml | 3 +-- .idea/runConfigurations.xml | 12 ------------ .../com/mogo/module/common/drawer/BaseDrawer.java | 11 ----------- .../module/common/drawer/SnapshotSetDataDrawer.java | 6 ++++-- 4 files changed, 5 insertions(+), 27 deletions(-) delete mode 100644 .idea/runConfigurations.xml diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 29a72d9dc7..36c8ffb009 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,7 +5,7 @@ diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460d8b..0000000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index 5612f5318e..5b57f23f17 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -482,15 +482,4 @@ class BaseDrawer { return new double[]{lon, lat}; } - - protected String getDataTypes(int fromType) { - switch (fromType) { - case FROM_MY_LOCATION: - return TYPE_MARKER_CLOUD_DATA; - case FROM_ADAS: - return TYPE_MARKER_ADAS; - default: - return TYPE_MARKER_CLOUD_DATA; - } - } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index d09f04049a..b0c87d8ec1 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -1,5 +1,7 @@ package com.mogo.module.common.drawer; +import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_DATA; + import android.os.Build; import android.os.Message; import android.text.TextUtils; @@ -411,7 +413,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic } MogoMarkerOptions options = new MogoMarkerOptions() - .owner(getDataTypes(data.getFromType())) + .owner(TYPE_MARKER_CLOUD_DATA) .anchor(0.5f, 0.5f) .rotate((float) data.getHeading()) .object(data) @@ -432,7 +434,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic options.icon(view); resIdVal = view.getId() + ""; } - IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(getDataTypes(data.getFromType()), options); + IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(mContext).addMarker(TYPE_MARKER_CLOUD_DATA, options); cacheMarkerIconResMd5Val(resIdVal, marker); if (!TextUtils.isEmpty(data.getSn())) { From ad1f8b842d3070822e77a4930ff439f2eeac9e11 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 16 Jul 2021 17:49:03 +0800 Subject: [PATCH 09/44] remove newMap when onStatusChanged --- .../com/mogo/module/common/drawer/SnapshotSetDataDrawer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index b0c87d8ec1..13308d54cf 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -101,7 +101,6 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic mChangeCarModeStatus = true; sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); removeUselessMarker(mMarkersCaches); - mMarkersCaches = new ConcurrentHashMap<>(); mLastPositions.clear(); AdasRecognizedResultDrawer.getInstance().notifyVrModeChanged(); //清除ADAS old marker data } From 5b789381399df03694e5b9889c1c9afee9835381 Mon Sep 17 00:00:00 2001 From: liujing Date: Sat, 17 Jul 2021 16:13:44 +0800 Subject: [PATCH 10/44] =?UTF-8?q?=E6=97=A5=E5=BF=97,=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E5=81=9C=E6=AD=A2=E7=BA=BF=E7=8A=B6=E6=80=81=E7=9A=84=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/warning/V2XWarningMarker.java | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index b4edb1fb66..107ed482c4 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 @@ -77,22 +77,21 @@ public class V2XWarningMarker implements IV2XMarker { public void drawLineWithEntity() { showTime = mCloundWarningInfo.getShowTime() > 0 ? mCloundWarningInfo.getShowTime() * 1000 : 6000; - Log.d(TAG, "显示时间为++" + String.valueOf(showTime) + "识别物类型:" + - String.valueOf(mCloundWarningInfo.getType())); + fillPointOnStopLine(); bearing = V2XLocationListener.getInstance().getLastCarLocation().getBearing(); isSelfLineClear = false; isFirstLocation = false; if (fillPoints.size() > 0) { //存在停止线的情况 自车与停止线之间绘制蓝色安全线 停止线向前50m绘制红色预警线 - //先获取自车与停止线之间的点 middleLocationInStopLine = getMiddleLocationInStopLine(); + //获取停止线前方50m坐标点 MogoLatLng warningLocation = Trigonometric.getNewLocation(middleLocationInStopLine, 50, mCloundWarningInfo.getAngle()); //停止线前方画线 WorkThreadHandler.getInstance().postDelayed(() -> { if (carLocation.lat != 0 && carLocation.lon != 0) { - //自车与停止线直线绘制蓝色预警线 + //在自车与停止线直线绘制蓝色预警线 drawSelfCarLine(carLocation.lon, carLocation.lat, bearing); } else { Log.d(TAG, "自车定位数据为空carLocation == null"); @@ -106,7 +105,8 @@ public class V2XWarningMarker implements IV2XMarker { //添加停止线marker handleStopLine(); }, 0); - + Log.d(TAG, "显示时间为++" + String.valueOf(showTime) + "识别物类型:" + + String.valueOf(mCloundWarningInfo.getType())); clearAllLine(); } else { //无停止线 @@ -132,6 +132,10 @@ public class V2XWarningMarker implements IV2XMarker { (mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); } + /*绘制停止线前方50m的红色预警线 + * startLatLng: 划线起点=停止线上的坐标点 + * mogoLatLng: 停止线前方50m坐标点 + * */ private void drawRedWarningLineFrontOfStopLine(V2XWarningEntity info, MogoLatLng startLatLng, MogoLatLng mogoLatLng) { if (info != null) { @@ -141,9 +145,6 @@ public class V2XWarningMarker implements IV2XMarker { endLatlng.lon, endLatlng.lat); MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatLng, distance / 2, mCloundWarningInfo.getAngle()); - Log.d(TAG, "停止线前方50m区域的三个坐标点是:" + 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)); @@ -161,6 +162,9 @@ public class V2XWarningMarker implements IV2XMarker { V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); } clearAllLine(); + Log.d(TAG, "停止线前方50m区域的三个坐标点是:" + startLatLng.lon + "," + startLatLng.lat + + "中间点坐标:" + addMiddleLoc.lon + "," + addMiddleLoc.lat + + "终点" + endLatlng.lon + "," + endLatlng.lat); } else { clearAllLine(); } @@ -168,7 +172,7 @@ public class V2XWarningMarker implements IV2XMarker { public void clearAllLine() { UiThreadHandler.postDelayed(() -> { - Log.d(TAG, "清除所有预警线的时间是:" + String.valueOf(System.currentTimeMillis())); + Log.d(TAG, "清除所有预警线的时间是:" + String.valueOf(showTime)); //清除识别物到碰撞点预警线 V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); //清除车到碰撞点预警线 @@ -241,16 +245,16 @@ public class V2XWarningMarker implements IV2XMarker { } /* - * 自车前方的点,在停止线上--通过自车位置与距离停止线之间的距离计算 + * 自车前方的点,落点在停止线上--通过自车位置与距离停止线之间的距离计算 * */ 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()); + Log.d(TAG, "计算停止线上的某个点" + String.valueOf(carLocation.lat + "," + + String.valueOf(carLocation.lon))); return newLocation; } @@ -282,15 +286,12 @@ public class V2XWarningMarker implements IV2XMarker { //扩展点为了渐变色添加 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); @@ -299,9 +300,12 @@ public class V2XWarningMarker implements IV2XMarker { info.setHeading(bearing); info.setWidth(mCloundWarningInfo.getRoadwidth() * 14 + 5); info.setDirection(mCloundWarningInfo.getDirection()); - Log.d(TAG, "绘制自车与碰撞点之间的预警线+time=" + String.valueOf(System.currentTimeMillis())); V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); + Log.d(TAG, "安全区域蓝色预警线" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); + Log.d(TAG, "绘制自车与碰撞点之间的预警线+time=" + String.valueOf(System.currentTimeMillis())); } + Log.d(TAG, "自车为起点绘制 自车;" + startLatlng.lon + "," + startLatlng.lat + + "中间扩展点" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点:" + endLatlng.lon + "," + endLatlng.lat); clearAllLine(); } else { clearAllLine(); @@ -328,16 +332,16 @@ public class V2XWarningMarker implements IV2XMarker { //识别物到预碰撞点之间的箭头 addArrows(startLatlng, endLatlng); 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); + Log.d(TAG, "道路宽度为" + info.getRoadwidth()); + Log.d(TAG, "目标物与预碰撞点画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); } } else { Log.e(V2XConst.LOG_NAME_WARN, "info == null"); @@ -356,17 +360,17 @@ public class V2XWarningMarker implements IV2XMarker { 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()); + Log.d(TAG, "小箭头位置" + newLo); } } } + //线随车动 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())); } From 30eaa6209d3f10e595be63a857964307e04a3bde Mon Sep 17 00:00:00 2001 From: liujing Date: Sat, 17 Jul 2021 17:57:54 +0800 Subject: [PATCH 11/44] =?UTF-8?q?=E5=A4=9A=E4=BD=99=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/v2x/scenario/scene/warning/V2XWarningMarker.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index 107ed482c4..a095289f43 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 @@ -161,7 +161,6 @@ public class V2XWarningMarker implements IV2XMarker { lineInfo.setWidth(info.getRoadwidth() * 14 + 5); V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); } - clearAllLine(); Log.d(TAG, "停止线前方50m区域的三个坐标点是:" + startLatLng.lon + "," + startLatLng.lat + "中间点坐标:" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点" + endLatlng.lon + "," + endLatlng.lat); @@ -231,7 +230,6 @@ public class V2XWarningMarker implements IV2XMarker { Log.d(TAG, "绘制停止线+time=" + String.valueOf(System.currentTimeMillis())); V2XWarnDataDrawer.getInstance().renderStopLineData(entity); } - clearAllLine(); } } catch (Exception e) { e.printStackTrace(); @@ -306,7 +304,6 @@ public class V2XWarningMarker implements IV2XMarker { } Log.d(TAG, "自车为起点绘制 自车;" + startLatlng.lon + "," + startLatlng.lat + "中间扩展点" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点:" + endLatlng.lon + "," + endLatlng.lat); - clearAllLine(); } else { clearAllLine(); } From 09c764a8fa74c9934d175361bcf362efd976340e Mon Sep 17 00:00:00 2001 From: liujing Date: Sat, 17 Jul 2021 20:12:32 +0800 Subject: [PATCH 12/44] =?UTF-8?q?=E6=AC=A0:=E6=9C=89=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E7=BA=BF=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B,=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E7=BA=BF=E5=89=8D=E6=96=B950m=E7=BB=98=E5=88=B6?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/v2x/entity/model/DrawLineInfo.java | 10 +-- .../manager/impl/MoGoWarnPolylineManager.java | 4 +- .../scene/warning/V2XWarningMarker.java | 72 +++++++++++-------- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java index 0033028dd1..c0272da780 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/entity/model/DrawLineInfo.java @@ -27,7 +27,7 @@ public class DrawLineInfo { private float width; - private int direction; + private boolean hasStopLines; public String getType() { return type; @@ -69,12 +69,12 @@ public class DrawLineInfo { this.width = width; } - public int getDirection() { - return direction; + public boolean isHasStopLines() { + return hasStopLines; } - public void setDirection(int direction) { - this.direction = direction; + public void setHasStopLines(boolean hasStopLines) { + this.hasStopLines = hasStopLines; } public List getLocations() { diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java index 11d7d63f79..ad315d9d67 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoWarnPolylineManager.java @@ -44,7 +44,7 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { .setGps(false); List colors = new ArrayList<>(); - if (info.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP) { + if (info.isHasStopLines() == true) { colors.add(0x0D3036FF); colors.add(0xD93036FF); colors.add(0x0D3036FF); @@ -75,6 +75,8 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager { if (mMogoPolyline != null) { mMogoPolyline.remove(); mMogoPolyline = null; + } else { + Log.d("V2XWarningMarker", "mMogoPolyline==null"); } } 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 a095289f43..9ae538dd9a 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 @@ -62,6 +62,7 @@ public class V2XWarningMarker implements IV2XMarker { private MogoLatLng middleLocationInStopLine = new MogoLatLng(0, 0); private static long showTime = 6000; private float bearing; + private boolean hasStopLines = false; @Override public void drawPOI(Object entity) { @@ -80,14 +81,12 @@ public class V2XWarningMarker implements IV2XMarker { fillPointOnStopLine(); bearing = V2XLocationListener.getInstance().getLastCarLocation().getBearing(); + hasStopLines = mCloundWarningInfo.getStopLines().size() > 0; isSelfLineClear = false; isFirstLocation = false; if (fillPoints.size() > 0) { //存在停止线的情况 自车与停止线之间绘制蓝色安全线 停止线向前50m绘制红色预警线 middleLocationInStopLine = getMiddleLocationInStopLine(); - //获取停止线前方50m坐标点 - MogoLatLng warningLocation = Trigonometric.getNewLocation(middleLocationInStopLine, - 50, mCloundWarningInfo.getAngle()); //停止线前方画线 WorkThreadHandler.getInstance().postDelayed(() -> { if (carLocation.lat != 0 && carLocation.lon != 0) { @@ -98,6 +97,9 @@ public class V2XWarningMarker implements IV2XMarker { } //二轮车和行人的渲染和移动 V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA); + //获取停止线前方50m坐标点 + MogoLatLng warningLocation = Trigonometric.getNewLocation(middleLocationInStopLine, + 50, angleForCarMoveDirection()); //停止线向前方50m绘制红色预警线 drawRedWarningLineFrontOfStopLine(mCloundWarningInfo, middleLocationInStopLine, warningLocation); @@ -115,7 +117,6 @@ public class V2XWarningMarker implements IV2XMarker { drawOtherObjectLine(mCloundWarningInfo); //二轮车和行人的渲染和移动 V2XServiceManager.getMarkerManager().removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA); - //车辆静止的时候 if (carLocation.lat != 0 && carLocation.lon != 0) { drawSelfCarLine(carLocation.lon, carLocation.lat, bearing); } else { @@ -132,6 +133,18 @@ public class V2XWarningMarker implements IV2XMarker { (mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); } + /* + * + * */ + public double angleForCarMoveDirection() { + MogoLatLng startLatLng = new MogoLatLng(carLocation.lat, carLocation.lon); + MogoLatLng endLatLng = new MogoLatLng(middleLocationInStopLine.lat, middleLocationInStopLine.lon); + double angle = Trigonometric.getAngle(startLatLng.lon, startLatLng.lat, endLatLng.lon, endLatLng.lat); + Log.d(TAG, "angle==" + String.valueOf(angle)); + return angle; + } + + /*绘制停止线前方50m的红色预警线 * startLatLng: 划线起点=停止线上的坐标点 * mogoLatLng: 停止线前方50m坐标点 @@ -139,14 +152,13 @@ public class V2XWarningMarker implements IV2XMarker { private void drawRedWarningLineFrontOfStopLine(V2XWarningEntity info, MogoLatLng startLatLng, MogoLatLng mogoLatLng) { if (info != null) { + double angle = Trigonometric.getAngle(startLatLng.lon, startLatLng.lat, mogoLatLng.lon, mogoLatLng.lat); + Log.d(TAG, "angle==drawRedWarningLineFrontOfStopLine:" + String.valueOf(angle)); 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()); + MogoLatLng addMiddleLoc = Trigonometric.getNewLocation(startLatLng, 25, angle); if (polyLine != null) { - Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null"); + Log.d(TAG, "drawStopLine polyLine != null"); polyLine.setPoints(Arrays.asList(startLatLng, addMiddleLoc, endLatlng)); polyLine.setTransparency(0.5f); } else { @@ -157,7 +169,7 @@ public class V2XWarningMarker implements IV2XMarker { locations.add(endLatlng); lineInfo.setLocations(locations); lineInfo.setHeading(info.heading); - Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine width = " + info.getRoadwidth()); + Log.d(TAG, "drawStopLine width = " + info.getRoadwidth()); lineInfo.setWidth(info.getRoadwidth() * 14 + 5); V2XServiceManager.getMoGoStopPolylineManager().drawStopPolyline(getContext(), lineInfo); } @@ -174,7 +186,7 @@ public class V2XWarningMarker implements IV2XMarker { Log.d(TAG, "清除所有预警线的时间是:" + String.valueOf(showTime)); //清除识别物到碰撞点预警线 V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine(); - //清除车到碰撞点预警线 + //清除车前方第一条预警线 V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); //清除停止线 V2XServiceManager.getMoGoStopPolylineManager().clearLine(); @@ -227,7 +239,6 @@ public class V2XWarningMarker implements IV2XMarker { entity.setLat(latLng.lat); entity.setLon(latLng.lon); entity.heading = mCloundWarningInfo.heading; - Log.d(TAG, "绘制停止线+time=" + String.valueOf(System.currentTimeMillis())); V2XWarnDataDrawer.getInstance().renderStopLineData(entity); } } @@ -249,22 +260,29 @@ public class V2XWarningMarker implements IV2XMarker { if (carLocation.lat == 0 || carLocation.lon == 0) { Log.d(TAG, "获取不到车的位置"); } - MogoLatLng newLocation = Trigonometric.getNewLocation(carLocation, mCloundWarningInfo.getStopLineDistance(), - mCloundWarningInfo.getAngle()); - Log.d(TAG, "计算停止线上的某个点" + String.valueOf(carLocation.lat + "," + - String.valueOf(carLocation.lon))); + MogoLatLng newLocation = new MogoLatLng(0, 0); + if (mCloundWarningInfo.getStopLines().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); + double angle = Trigonometric.getAngle(x.lon, x.lat, y.lon, y.lat); + newLocation = Trigonometric.getNewLocation(x, distance * 0.5, angle); + } else { + Log.d(TAG, "停止线返回坐标点数量不正确" + String.valueOf(mCloundWarningInfo.getStopLines().size())); + } return newLocation; } /** - * 自车与停止线之间为蓝色预警 + * 存在停止线时自车与停止线之间为蓝色预警 + * 不存在停止线,自车与预碰撞点之间为红色预警 * lon 自车经度 * lat 自车纬度 */ public void drawSelfCarLine(double lon, double lat, float bearing) { if (!isSelfLineClear) { - IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); if (mCloundWarningInfo != null) { + IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline(); MogoLatLng startLatlng = new MogoLatLng(0, 0); MogoLatLng endLatlng = new MogoLatLng(0, 0); MogoLatLng addMiddleLoc = new MogoLatLng(0, 0); @@ -274,17 +292,17 @@ public class V2XWarningMarker implements IV2XMarker { isFirstLocation = true; } //绘制线的终点(在停止线上或者预碰撞点上) - endLatlng = new MogoLatLng(mCloundWarningInfo.getStopLines().size() > 0 ? - middleLocationInStopLine.lat : mCloundWarningInfo.getCollisionLat(), - mCloundWarningInfo.getDirection() == ALERT_THE_FRONT_CRASH_WARNING_TOP ? - middleLocationInStopLine.lon : mCloundWarningInfo.getCollisionLon()); - //自车位置 + endLatlng = new MogoLatLng(hasStopLines ? + middleLocationInStopLine.lat : mCloundWarningInfo.getCollisionLat(), hasStopLines ? + 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, "angle==扩展点为了渐变色添加:" + + String.valueOf(Trigonometric.getAngle(startLatlng.lon, startLatlng.lat, endLatlng.lon, endLatlng.lat))); if (mogoPolyline != null) { mogoPolyline.setPoints(Arrays.asList(startLatlng, addMiddleLoc, endLatlng)); mogoPolyline.setTransparency(0.5f); @@ -297,10 +315,9 @@ public class V2XWarningMarker implements IV2XMarker { info.setLocations(locations); info.setHeading(bearing); info.setWidth(mCloundWarningInfo.getRoadwidth() * 14 + 5); - info.setDirection(mCloundWarningInfo.getDirection()); + info.setHasStopLines(mCloundWarningInfo.getStopLines().size() > 0); V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(getContext(), info); - Log.d(TAG, "安全区域蓝色预警线" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); - Log.d(TAG, "绘制自车与碰撞点之间的预警线+time=" + String.valueOf(System.currentTimeMillis())); + Log.d(TAG, "自车前方第一条线" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); } Log.d(TAG, "自车为起点绘制 自车;" + startLatlng.lon + "," + startLatlng.lat + "中间扩展点" + addMiddleLoc.lon + "," + addMiddleLoc.lat + "终点:" + endLatlng.lon + "," + endLatlng.lat); @@ -337,7 +354,6 @@ public class V2XWarningMarker implements IV2XMarker { lineInfo.setHeading(info.heading); lineInfo.setWidth(info.getRoadwidth() * 14 + 5); V2XServiceManager.getMoGoPersonWarnPolylineManager().drawPersonWarnPolyline(getContext(), lineInfo); - Log.d(TAG, "道路宽度为" + info.getRoadwidth()); Log.d(TAG, "目标物与预碰撞点画线点为" + "起点:" + startLatlng + "中间点:" + addMiddleLoc + "终点:" + endLatlng); } } else { From a5e076c2668f803467909181b573c235e6a55b7a Mon Sep 17 00:00:00 2001 From: lianglihui Date: Sat, 17 Jul 2021 21:38:36 +0800 Subject: [PATCH 13/44] =?UTF-8?q?taxi=20=E5=85=BC=E5=AE=B9=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index 12e2a6440a..debe96589a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -320,7 +320,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i public void onAutoPilotStatusChanged( int status, String reason ) { Logger.d( TAG, "status = %s, reason = %s", status, reason ); onAutopilotStatusChanged( status == IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING ); - if ( status == IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING ) { + if ( status == IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING && !MogoOCHTaxiModel.getInstance().isArriveAtEndStation()) { resetOCHTaxiOrderAutopilotStatus(); } else { updateOrderStatus(); From 42fe73734f77ca314c945bc30292c1799b21c794 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Sun, 18 Jul 2021 10:56:13 +0800 Subject: [PATCH 14/44] update map version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1bcfa24ae3..9996fc0ae4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -181,7 +181,7 @@ MOGO_AICLOUD_SERVICES_APK_VERSION=1.0.0-SNAPSHOT # mogoAiCloud sdk services MOGO_AICLOUD_SERVICES_SDK_VERSION=1.0.0-SNAPSHOT # 自研地图 -MAP_SDK_VERSION=1.0.0-vr-8.5.75 +MAP_SDK_VERSION=1.0.0-vr-8.5.77 ## 产品库必备配置,产品库自动对versionCode和versionName版本进行升级 From c7db1879283d1667b9bdb53149d77166fa6b4d44 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Sun, 18 Jul 2021 12:26:51 +0800 Subject: [PATCH 15/44] =?UTF-8?q?taxi=203=E7=A7=92=E8=BD=AE=E8=AF=A2?= =?UTF-8?q?=E6=96=B9=E6=A1=88=20=20=E7=BC=93=E8=A7=A3=E9=95=BF=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/taxi/MogoOCHTaxiModel.java | 25 +++++++++++++++++++ .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index d4d5e3e9fb..1ded643d76 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -28,8 +28,11 @@ import com.mogo.utils.storage.SharedPrefsMgr; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.TimeUnit; +import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; public @@ -149,6 +152,14 @@ class MogoOCHTaxiModel { Logger.e(TAG,"querryCarStatus:"+data.data.status); mOCHRHCarstatus = data.data.status == 1 ? 1:0; + + if (mOCHRHCarstatus == 1){ + timeLoop(); + }else { + if (mDisposable != null ){ + mDisposable.dispose(); + } + } //更新view OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1); //刷新数据 @@ -841,4 +852,18 @@ class MogoOCHTaxiModel { e.printStackTrace(); } } + + private static final int PERIOD = 3 * 1000; + private static final int DELAY = 100; + private Disposable mDisposable; + /** + * 定时循环任务 + */ + private void timeLoop() { + mDisposable = Observable.interval(DELAY, PERIOD, TimeUnit.MILLISECONDS) + .map((aLong -> aLong + 1)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(aLong -> query2RestoreOrderStatus(null)); + } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index debe96589a..428524960f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -67,7 +67,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i private TextView mDistance; private MogoPolylineOptions mogoPolylineOptions; - private int saveOrderState = -1; + private volatile int saveOrderState = -1; @Override public int getStationPanelViewId() { return R.layout.module_och_taxi_panel; From eee19baf2d94a658e5bcdc3bcc11b47e8be150a8 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Sun, 18 Jul 2021 15:16:28 +0800 Subject: [PATCH 16/44] =?UTF-8?q?taxi=203=E7=A7=92=E8=BD=AE=E8=AF=A2?= =?UTF-8?q?=E6=96=B9=E6=A1=88=20=20=E7=BC=93=E8=A7=A3=E9=95=BF=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=BC=82=E5=B8=B8=20=20=E8=B0=83=E6=95=B4=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?,=E5=AE=8C=E5=85=A8=E4=BB=8E=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java | 6 +++--- .../src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java | 6 +++--- OCH/mogo-och-taxi/src/main/res/values/strings.xml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 1ded643d76..cf451c134a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -489,8 +489,8 @@ class MogoOCHTaxiModel { updateOCHOrderStatus( OCHOrderStatus.ArriveAtStartStation, new OCHOrderStatusCallback() { @Override public void onSuccess( Object data ) { - OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.ArriveAtStartStation.getCode()); - Logger.d( TAG, "更新状态成功" ); +// OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.ArriveAtStartStation.getCode()); +// Logger.d( TAG, "更新状态成功" ); } @Override @@ -853,7 +853,7 @@ class MogoOCHTaxiModel { } } - private static final int PERIOD = 3 * 1000; + private static final int PERIOD = 3000; private static final int DELAY = 100; private Disposable mDisposable; /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index 428524960f..34dea5c9c6 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -232,7 +232,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); - onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); +// onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); } @Override @@ -296,7 +296,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态成功" ); MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); MogoOCHTaxiModel.getInstance().cancelAutopilot(); - OCHTaxiUiController.getInstance().onOrderStatusChanged(0); +// OCHTaxiUiController.getInstance().onOrderStatusChanged(0); } @Override @@ -336,7 +336,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); - onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); +// onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); } @Override diff --git a/OCH/mogo-och-taxi/src/main/res/values/strings.xml b/OCH/mogo-och-taxi/src/main/res/values/strings.xml index edb1423ef5..32d6040772 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/strings.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/strings.xml @@ -2,7 +2,7 @@ 确认上车,行程开始 到达站点,乘客已下车 - 已到达上车站点,等待乘客上车 + 已到达上车地点,等待乘客上车 预计里程 3.2 km 请携带好随身物品,注意侧后\n方来车,感谢体验蘑菇智行自\n动驾驶车! From 604dd938c112e498737e3fc06e59f818b725899c Mon Sep 17 00:00:00 2001 From: lianglihui Date: Sun, 18 Jul 2021 15:30:03 +0800 Subject: [PATCH 17/44] =?UTF-8?q?Revert=20"taxi=203=E7=A7=92=E8=BD=AE?= =?UTF-8?q?=E8=AF=A2=E6=96=B9=E6=A1=88=20=20=E7=BC=93=E8=A7=A3=E9=95=BF?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=BC=82=E5=B8=B8=20=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E5=88=87=E6=8D=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91,=E5=AE=8C=E5=85=A8=E4=BB=8E=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E8=8E=B7=E5=8F=96"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit eee19baf --- .../src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java | 6 +++--- .../src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java | 6 +++--- OCH/mogo-och-taxi/src/main/res/values/strings.xml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index cf451c134a..1ded643d76 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -489,8 +489,8 @@ class MogoOCHTaxiModel { updateOCHOrderStatus( OCHOrderStatus.ArriveAtStartStation, new OCHOrderStatusCallback() { @Override public void onSuccess( Object data ) { -// OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.ArriveAtStartStation.getCode()); -// Logger.d( TAG, "更新状态成功" ); + OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.ArriveAtStartStation.getCode()); + Logger.d( TAG, "更新状态成功" ); } @Override @@ -853,7 +853,7 @@ class MogoOCHTaxiModel { } } - private static final int PERIOD = 3000; + private static final int PERIOD = 3 * 1000; private static final int DELAY = 100; private Disposable mDisposable; /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index 34dea5c9c6..428524960f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -232,7 +232,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); -// onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); + onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); } @Override @@ -296,7 +296,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态成功" ); MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); MogoOCHTaxiModel.getInstance().cancelAutopilot(); -// OCHTaxiUiController.getInstance().onOrderStatusChanged(0); + OCHTaxiUiController.getInstance().onOrderStatusChanged(0); } @Override @@ -336,7 +336,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); -// onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); + onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); } @Override diff --git a/OCH/mogo-och-taxi/src/main/res/values/strings.xml b/OCH/mogo-och-taxi/src/main/res/values/strings.xml index 32d6040772..edb1423ef5 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/strings.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/strings.xml @@ -2,7 +2,7 @@ 确认上车,行程开始 到达站点,乘客已下车 - 已到达上车地点,等待乘客上车 + 已到达上车站点,等待乘客上车 预计里程 3.2 km 请携带好随身物品,注意侧后\n方来车,感谢体验蘑菇智行自\n动驾驶车! From c6f0afc94960e410cc3fb3e9dd39cdcec9e4df28 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 19 Jul 2021 10:58:39 +0800 Subject: [PATCH 18/44] =?UTF-8?q?taxi=20=E9=87=87=E7=94=A8=E8=BD=AE?= =?UTF-8?q?=E8=AF=A2=E6=96=B9=E6=A1=88,=E6=9A=82=E6=97=B6=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E9=95=BF=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/taxi/MogoOCHTaxiModel.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index cf451c134a..3873cbcea8 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -117,14 +117,14 @@ class MogoOCHTaxiModel { if (mOCHTaxiServiceApi == null){ mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create(OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN); } - MogoApisHandler.getInstance() - .getApis() - .getSocketManagerApi( context ) - .registerOnMessageListener( 401016, mOrderMsgListener = new OrderMsgListener() ); - MogoApisHandler.getInstance() - .getApis() - .getSocketManagerApi( context ) - .registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() ); +// MogoApisHandler.getInstance() +// .getApis() +// .getSocketManagerApi( context ) +// .registerOnMessageListener( 401016, mOrderMsgListener = new OrderMsgListener() ); +// MogoApisHandler.getInstance() +// .getApis() +// .getSocketManagerApi( context ) +// .registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() ); MogoApisHandler.getInstance() .getApis() .getAdasControllerApi() From 8c672ea02b08f63b59a9092a631d707fcc083084 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 19 Jul 2021 10:58:55 +0800 Subject: [PATCH 19/44] add log --- .../com/mogo/module/common/drawer/SnapshotSetDataDrawer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 13308d54cf..7f299d2f4f 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -294,6 +294,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic final MogoLatLng point = new MogoLatLng(cloudRoadData.getWgslat(), cloudRoadData.getWgslon()); long cost = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start); final long intervalRef = interval - cost; + Log.d("云端动画数据", "最终赋值 : " + intervalRef + " 两帧间隔 : " + interval + " uuid : " + cloudRoadData.getUuid()); marker.addDynamicAnchorPosition(point, (float) cloudRoadData.getHeading(), intervalRef); marker.setAnchorColor(getModelRenderColor(cloudRoadData.getType(), cloudRoadData.getFromType(), cloudRoadData.getSpeed(), cloudRoadData.getWgslon(), cloudRoadData.getWgslat(), cloudRoadData.getHeading())); @@ -336,6 +337,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { return; } + Log.d(TAG, "filterData before size : " + data.size()); List newList = new ArrayList<>(); for (SocketDownData.CloudRoadDataProto cloudRoadData : data) { if (cloudRoadData.getFromType() != SocketDownDataHelper.FROM_MY_LOCATION) { @@ -345,6 +347,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic } data.clear(); data.addAll(newList); + Log.d(TAG, "filterData after size : " + data.size()); } private final static String FORECAST = "snapshotForecast"; From 9e607935bc95cafcfd6f510369bc5ef12172db16 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 19 Jul 2021 11:23:44 +0800 Subject: [PATCH 20/44] remove filterdata of snapShotCloudData --- .../common/drawer/SnapshotSetDataDrawer.java | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 7f299d2f4f..4c219b8bf5 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -319,37 +319,10 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @param out 输出集合 */ private void prepareData(List in, List out) { - filterData(in); // foreCastPoint(in, out); out.addAll(in); } - /** - * vr 模式下显示合并数据,否则只显示 mogo 车辆上报的数据 - * 展示融合数据,不包括自车定位数据和adas识别数据 - * - * @param data 道路数据集合 - */ - private void filterData(List data) { - if (data == null || data.isEmpty()) { - return; - } - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - return; - } - Log.d(TAG, "filterData before size : " + data.size()); - List newList = new ArrayList<>(); - for (SocketDownData.CloudRoadDataProto cloudRoadData : data) { - if (cloudRoadData.getFromType() != SocketDownDataHelper.FROM_MY_LOCATION) { - continue; - } - newList.add(cloudRoadData); - } - data.clear(); - data.addAll(newList); - Log.d(TAG, "filterData after size : " + data.size()); - } - private final static String FORECAST = "snapshotForecast"; /** From 038891ba40c84a32a40c1ec0dd2132a3a693a3ac Mon Sep 17 00:00:00 2001 From: liujing Date: Tue, 20 Jul 2021 11:47:04 +0800 Subject: [PATCH 21/44] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/raw/scenario_warning_event_data_left.json | 2 +- .../main/res/raw/scenario_warning_event_data_pedestrians.json | 2 +- .../src/main/res/raw/scenario_warning_event_data_right.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json index eb56e7cb5d..6fe3edc623 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_left.json @@ -16,6 +16,6 @@ "stopLineDistance": 60, "warningContent": "注意自行车", "heading": 0, - "showTime": 6, + "showTime": 3, "roadwidth": 4.0 } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json index 77ca4304dd..0a48613c3c 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_pedestrians.json @@ -24,6 +24,6 @@ "stopLineDistance": 60, "warningContent": "小心行人", "heading": 0, - "showTime": 6, + "showTime": 3, "roadwidth": 4.0 } \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json index 95f60d2eb8..6bba8cf023 100644 --- a/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json +++ b/modules/mogo-module-v2x/src/main/res/raw/scenario_warning_event_data_right.json @@ -15,6 +15,6 @@ "stopLineDistance": 60, "warningContent": "注意摩托车", "heading": 0, - "showTime": 6, + "showTime": 3, "roadwidth": 4.0 } From 66046e7b65d54511873185dde3ff1c9450d72352 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 20 Jul 2021 12:02:49 +0800 Subject: [PATCH 22/44] add test data --- .../service/status/EnvStatusManager.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java index 75f0f85f6c..c826faf416 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java @@ -14,6 +14,9 @@ import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.wm.WindowManagerView; import com.mogo.module.service.R; +import com.mogo.utils.NetworkUtils; + +import static com.mogo.utils.CommonUtils.getVersionName; /* @@ -71,7 +74,10 @@ public class EnvStatusManager { "AUTO", "长链", "经度", - "纬度" + "纬度", + "网络状态", + "App版本", + "Map版本" }; StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < sStatusName.length; i++) { @@ -80,6 +86,12 @@ public class EnvStatusManager { stringBuilder.append(DebugConfig.getAutoPilotStatus()).append("\n"); } else if (i == 5 || i == 6) { stringBuilder.append(DebugConfig.getStatusData(i)).append("\n"); + } else if (i == 7) { + stringBuilder.append(NetworkUtils.isConnected(mContext)).append("\n"); + } else if (i == 8) { + stringBuilder.append(getVersionName(mContext, "com.mogo.launcher.f")).append("\n"); + } else if (i == 9) { //TODO + stringBuilder.append("").append("\n"); } else { stringBuilder.append("true".equals(DebugConfig.getStatus(i, true)) ? "正常" : "异常").append("\n"); } @@ -95,9 +107,16 @@ public class EnvStatusManager { mStatusTv.setTextColor(Color.WHITE); } } + + //添加网络状态 + + // } + private Context mContext; + public void showPanel(Context context) { + mContext = context; if (mPanelView == null) { mPanelView = new WindowManagerView.Builder(context) .contentView(R.layout.module_services_status_panel) From c475544d3ea71424fa7d0826b54156ae420293a6 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 20 Jul 2021 12:08:11 +0800 Subject: [PATCH 23/44] opt --- .../com/mogo/module/service/status/EnvStatusManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java index c826faf416..2f33265028 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java @@ -14,6 +14,7 @@ import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.wm.WindowManagerView; import com.mogo.module.service.R; +import com.mogo.utils.AppUtils; import com.mogo.utils.NetworkUtils; import static com.mogo.utils.CommonUtils.getVersionName; @@ -90,8 +91,8 @@ public class EnvStatusManager { stringBuilder.append(NetworkUtils.isConnected(mContext)).append("\n"); } else if (i == 8) { stringBuilder.append(getVersionName(mContext, "com.mogo.launcher.f")).append("\n"); - } else if (i == 9) { //TODO - stringBuilder.append("").append("\n"); + } else if (i == 9) { + stringBuilder.append(AppUtils.getCustomMapSDKVersion(mContext)).append("\n"); } else { stringBuilder.append("true".equals(DebugConfig.getStatus(i, true)) ? "正常" : "异常").append("\n"); } From 322228d906f38c9240cf4923c05850d7fed56dc8 Mon Sep 17 00:00:00 2001 From: liujing Date: Tue, 20 Jul 2021 13:21:30 +0800 Subject: [PATCH 24/44] add testpanel of mock --- .../com/mogo/map/impl/amap/AMapWrapper.java | 5 ++ .../com/mogo/map/impl/custom/AMapWrapper.java | 5 ++ .../src/main/java/com/mogo/map/IMogoMap.java | 6 ++ .../mogo/module/common/drawer/BaseDrawer.java | 5 +- .../common/drawer/SnapshotSetDataDrawer.java | 2 +- .../extensions/entrance/EntranceFragment.java | 86 +++++++++++-------- .../service/marker/MapMarkerManager.java | 2 +- .../service/status/EnvStatusManager.java | 9 +- .../com/mogo/service/map/IMogoMapService.java | 6 ++ .../service/impl/intent/IntentManager.java | 2 +- .../mogo/service/impl/map/MogoMapService.java | 6 ++ 11 files changed, 91 insertions(+), 43 deletions(-) diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java index a0bcb0467b..b85f792310 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java @@ -245,6 +245,11 @@ public class AMapWrapper implements IMogoMap { return null; } + @Override + public String getMapVersion() { + return null; + } + private boolean checkAMap() { if ( mAMap == null ) { Logger.e( TAG, "高德map实例为空,请检查" ); diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java index f1e03b51d2..60e5f87475 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapWrapper.java @@ -263,6 +263,11 @@ public class AMapWrapper implements IMogoMap { return null; } + @Override + public String getMapVersion() { + return MapAutoApi.INSTANCE.getSDKVersion(); + } + private boolean checkAMap() { mAMap = mMapView.getMapAutoViewHelper(); sAMap = mAMap; diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java index 0cf8a64ecc..d75cd7c672 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java @@ -142,4 +142,10 @@ public interface IMogoMap { * @return */ IMogoPolyline addPolyline( MogoPolylineOptions options ); + + /** + * 获取地图版本号 + * @return + */ + String getMapVersion(); } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index 5b57f23f17..6bfb2e1f62 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -194,8 +194,9 @@ class BaseDrawer { * @return showSpeed */ public boolean shouldShowSpeed(int type) { - AdasRecognizedType recognizedType = AdasRecognizedType.valueFrom(type); - return recognizedType != AdasRecognizedType.classIdPerson; + return true; //todo 验证行人预警,对行人和自行车不做infoWindow过滤 +// AdasRecognizedType recognizedType = AdasRecognizedType.valueFrom(type); +// return recognizedType != AdasRecognizedType.classIdPerson; // &&recognizedType != AdasRecognizedType.classIdBicycle //todo Bicycle显示 // && recognizedType != AdasRecognizedType.classIdMoto //todo moto显示 } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 4c219b8bf5..51a1030014 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -166,8 +166,8 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic Map newMarkersCaches = new ConcurrentHashMap<>(allDatumsList.size()); List newDiffSet = new ArrayList<>(); - for (SocketDownData.CloudRoadDataProto cloudRoadData : allDatumsList) { + if (isUselessValue(cloudRoadData)) { continue; } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index e9240cbd8a..4a0be1e3cb 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -69,6 +69,7 @@ import com.mogo.module.extensions.utils.NoMapTopViewShaderHelper; import com.mogo.module.extensions.utils.TopViewAnimHelper; import com.mogo.module.extensions.utils.TopViewNoLinkageAnimHelper; import com.mogo.module.extensions.view.ArcView; +import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.module.share.manager.ServiceApisManager; import com.mogo.service.IMogoServiceApis; import com.mogo.service.analytics.IMogoAnalytics; @@ -98,6 +99,7 @@ import java.util.Locale; import java.util.Map; import java.util.Random; +import static android.content.Intent.ACTION_VIEW; import static com.mogo.module.common.utils.SPConst.getSPGuideRecord; import static com.mogo.module.common.utils.SPConst.getSpGuide; import static com.mogo.module.extensions.ExtensionsModuleConst.TYPE_ENTRANCE; @@ -368,6 +370,16 @@ public class EntranceFragment extends MvpFragment { + Log.d(TAG,"长安显示状态工具栏"); + Intent intent = new Intent(); + intent.putExtra("oper", 52); + MogoApisHandler.getInstance().getApis().getIntentManagerApi().invoke(MogoReceiver.ACTION_MOCK, intent); + return true; + }); + } clTrafficLight = (ConstraintLayout) findViewById(R.id.cl_traffic_light); tvYellow = (TextView) findViewById(R.id.tv_yellow); tvRed = (TextView) findViewById(R.id.tv_red); @@ -392,53 +404,53 @@ public class EntranceFragment extends MvpFragment > mListeners = new ConcurrentHashMap<>(); + private final Map< String, CopyOnWriteArrayList< IMogoIntentListener > > mListeners = new ConcurrentHashMap<>(); @Override public void registerIntentListener( String intent, IMogoIntentListener listener ) { diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java b/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java index 6bf52684a8..b3aeb3065a 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/map/MogoMapService.java @@ -10,6 +10,7 @@ import com.mogo.map.MogoCoordinatesTransformer; import com.mogo.map.MogoGeoSearch; import com.mogo.map.MogoInputtipsSearch; import com.mogo.map.MogoLocationClient; +import com.mogo.map.MogoMap; import com.mogo.map.MogoMapUIController; import com.mogo.map.MogoMapViewInstanceHandler; import com.mogo.map.MogoMarkerManager; @@ -120,6 +121,11 @@ public class MogoMapService implements IMogoMapService { return MogoCoordinatesTransformer.getInstance(); } + @Override + public String getMapVersion() { + return MogoMap.getInstance().getMogoMap().getMapVersion(); + } + @Override public void init( Context context ) { } From 247a8f87b7d45733c1527b36045763603b815ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 20 Jul 2021 15:21:58 +0800 Subject: [PATCH 25/44] Change launch speech app package name to com.zhidao.speech --- app/src/main/java/com/mogo/launcher/MogoApplication.java | 2 +- .../src/main/java/com/mogo/commons/mvp/MvpActivity.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index c4847bc4ce..4be4262abc 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -322,7 +322,7 @@ public class MogoApplication extends AbsMogoApplication { try { if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { Intent intent = new Intent(); - intent.setComponent(new ComponentName("com.zhidao.speech.voice.pad", + intent.setComponent(new ComponentName("com.zhidao.speech", "com.zhidao.speech.MainActivity")); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index 1f4c7d2885..aa8d5fd980 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -58,7 +58,7 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > try { if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { Intent intent = new Intent(); - intent.setComponent(new ComponentName("com.zhidao.speech.voice.pad", + intent.setComponent(new ComponentName("com.zhidao.speech", "com.zhidao.speech.MainActivity")); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); From 29877bd2d4fe03652a5dee42a19450d01c30e4c7 Mon Sep 17 00:00:00 2001 From: liujing Date: Tue, 20 Jul 2021 17:06:58 +0800 Subject: [PATCH 26/44] fix bug of branch problem --- .../extensions/entrance/EntranceFragment.java | 2 +- .../service/status/EnvStatusManager.java | 31 ++++++------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 4a0be1e3cb..4b78c46ace 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -373,7 +373,7 @@ public class EntranceFragment extends MvpFragment { - Log.d(TAG,"长安显示状态工具栏"); + Log.d(TAG,"长按显示状态工具栏"); Intent intent = new Intent(); intent.putExtra("oper", 52); MogoApisHandler.getInstance().getApis().getIntentManagerApi().invoke(MogoReceiver.ACTION_MOCK, intent); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java index 69eba7b7f5..cbf9254143 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java @@ -15,7 +15,6 @@ import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.wm.WindowManagerView; import com.mogo.module.service.R; -import com.mogo.utils.AppUtils; import com.mogo.utils.NetworkUtils; import static com.mogo.utils.CommonUtils.getVersionName; @@ -70,20 +69,16 @@ public class EnvStatusManager { private void renderStatus() { String[] sStatusName = { - "定位", - "近景", - "下发", - "AUTO", - "长链", + "工控机定位", + "ADAS近景感知", + "云端远景感知", + "自动驾驶状态", + "socket长链", "经度", "纬度", -<<<<<<< HEAD - "MapVersion" -======= "网络状态", "App版本", "Map版本" ->>>>>>> c475544d3ea71424fa7d0826b54156ae420293a6 }; StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < sStatusName.length; i++) { @@ -93,18 +88,14 @@ public class EnvStatusManager { } else if (i == 5 || i == 6) { stringBuilder.append(DebugConfig.getStatusData(i)).append("\n"); } else if (i == 7) { -<<<<<<< HEAD - String mapVersion = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapVersion(); - if (!TextUtils.isEmpty(mapVersion)) { - stringBuilder.append(mapVersion).append("\n"); - } -======= stringBuilder.append(NetworkUtils.isConnected(mContext)).append("\n"); } else if (i == 8) { stringBuilder.append(getVersionName(mContext, "com.mogo.launcher.f")).append("\n"); } else if (i == 9) { - stringBuilder.append(AppUtils.getCustomMapSDKVersion(mContext)).append("\n"); ->>>>>>> c475544d3ea71424fa7d0826b54156ae420293a6 + String mapVersion = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapVersion(); + if (!TextUtils.isEmpty(mapVersion)) { + stringBuilder.append(mapVersion).append("\n"); + } } else { stringBuilder.append("true".equals(DebugConfig.getStatus(i, true)) ? "正常" : "异常").append("\n"); } @@ -120,10 +111,6 @@ public class EnvStatusManager { mStatusTv.setTextColor(Color.WHITE); } } - - //添加网络状态 - - // } private Context mContext; From 68caa7314921c3a49eec3cc0bf5efa2e7fb50fd0 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 20 Jul 2021 18:16:59 +0800 Subject: [PATCH 27/44] note startVoicePad in mvpActivity --- .../src/main/java/com/mogo/commons/mvp/MvpActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index aa8d5fd980..99c9592124 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -48,7 +48,7 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > protected void onResume() { super.onResume(); hideBottomUIMenu(); - startVoicePad(); +// startVoicePad(); } /** From 1445cd63be035632020dec48d1180edc8f556950 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Wed, 21 Jul 2021 13:05:27 +0800 Subject: [PATCH 28/44] =?UTF-8?q?och=5Ftaxi=20=E8=A7=A3=E5=86=B3npe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index dff05915ef..7f5b1c62b1 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -300,7 +300,7 @@ class MogoOCHTaxiModel { mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; // mIsUserArriveAtStartStation = false; - mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); +// mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); break; } } From b624c0b4b358b3795c4b8ca5e683ef25dac0ba57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Wed, 21 Jul 2021 15:08:29 +0800 Subject: [PATCH 29/44] =?UTF-8?q?=E5=AF=B9=E5=B0=8F=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=BC=A9=E5=87=8F=E5=AE=9A=E4=BD=8D=E7=B2=BE=E5=BA=A6=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E6=96=B9=E5=90=91=E5=8F=91=E7=94=9F=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/small/map/SmallMapDirectionView.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java index e30a9f5bb7..bf62c852c6 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -32,6 +32,8 @@ import com.mogo.module.small.map.utils.MapAssetStyleUtils; import com.mogo.module.small.map.view.ISmallMapDirectionView; import com.mogo.utils.logger.Logger; +import java.math.RoundingMode; +import java.text.NumberFormat; import java.util.List; /** @@ -147,7 +149,6 @@ public class SmallMapDirectionView mAMapNavi.setIsUseExtraGPSData(true); - new Thread(() -> { try { Thread.sleep(1000L); @@ -249,6 +250,19 @@ public class SmallMapDirectionView public void onCarLocationChanged2(Location latLng) { Logger.d(MODULE_NAME, "onCarLocationChanged2 latLng:" + latLng); if (mAMapNavi != null) { + NumberFormat nf = NumberFormat.getNumberInstance(); + // 保留两位小数 + nf.setMaximumFractionDigits(6); + // 如果不需要四舍五入,可以使用RoundingMode.DOWN + nf.setRoundingMode(RoundingMode.UP); + try { + latLng.setLatitude(Double.valueOf(nf.format(latLng.getLatitude()))); + latLng.setLongitude(Double.valueOf(nf.format(latLng.getLongitude()))); + } catch (NumberFormatException e) { + e.printStackTrace(); + latLng.setLatitude(latLng.getLatitude()); + latLng.setLongitude(latLng.getLongitude()); + } mAMapNavi.setExtraGPSData(2, latLng); } } From fddb808eadc97e44671f99485cf500fd9eb5c279 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 21 Jul 2021 17:52:14 +0800 Subject: [PATCH 30/44] test cloud data --- .../com/mogo/launcher/MogoApplication.java | 24 ++++++------- .../com/mogo/commons/mvp/MvpActivity.java | 2 +- .../common/drawer/SnapshotSetDataDrawer.java | 34 ++++++++++++++++--- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 4be4262abc..ce52cbb721 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -318,18 +318,18 @@ public class MogoApplication extends AbsMogoApplication { // } ARouter.getInstance().navigation(ITestCrashReportProvider.class); Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms"); - - try { - if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { - Intent intent = new Intent(); - intent.setComponent(new ComponentName("com.zhidao.speech", - "com.zhidao.speech.MainActivity")); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - } catch (Exception e) { - e.printStackTrace(); - } +// try { +// if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { +// Intent intent = new Intent(); +// intent.setComponent(new ComponentName("com.zhidao.speech", +// "com.zhidao.speech.MainActivity")); +// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); +// startActivity(intent); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } @Override diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index 99c9592124..aa8d5fd980 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -48,7 +48,7 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > protected void onResume() { super.onResume(); hideBottomUIMenu(); -// startVoicePad(); + startVoicePad(); } /** diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 51a1030014..eabe5b7281 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -180,7 +180,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic newDiffSet.add(cloudRoadData); } } - removeUselessMarker(mMarkersCaches); + delayRemoveUselessMarker(); removeUselessLastRecord(); // 需要新增的 marker 数量 int newDiffSetSize = newDiffSet.size(); @@ -198,9 +198,8 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic renderSnapshotOneFrame(marker, uniqueKey, cloudRoadData, newMarkersCaches); } } - sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); - mMarkersCaches.clear(); - mMarkersCaches = newMarkersCaches; +// sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); + mMarkersCaches.putAll(newMarkersCaches); } /** @@ -224,6 +223,31 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic } } + private void delayRemoveUselessMarker() { + if (mMarkersCaches.isEmpty()) { + return; + } + IMogoADASController adasControllerApi = MogoApisHandler.getInstance().getApis().getAdasControllerApi(); + if (TextUtils.isEmpty(adasControllerApi.getSatelliteTime())) { + return; + } + Iterator iterator = mMarkersCaches.values().iterator(); + while (iterator.hasNext()) { + IMogoMarker result = iterator.next(); + SocketDownData.CloudRoadDataProto proto = ((SocketDownData.CloudRoadDataProto) result.getObject()); + long internal = Long.parseLong(adasControllerApi.getSatelliteTime()) - proto.getSatelliteTime(); + Log.d("EmArrow", "delayRemoveUselessMarker uuid : " + proto.getUuid() + + " adasTime : " + adasControllerApi.getSatelliteTime() + + " protoTime : " + proto.getSatelliteTime() + + " internal : " + internal); + if (internal > 2000) { + iterator.remove(); + result.remove(); + result.destroy(); + } + } + } + private void removeUselessLastRecord() { // todo 最好重新设计一个数据结构,用于多线程数据过期失效的场景,参见redis数据过期 if (mLastPositions.isEmpty()) { return; @@ -236,7 +260,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic Log.d("EmArrow", "removeUselessLastRecord size : " + mLastPositions.size()); while (iterator.hasNext()) { SocketDownData.CloudRoadDataProto result = iterator.next(); - long internal = result.getSatelliteTime() - Long.parseLong(adasControllerApi.getSatelliteTime()); + long internal = Long.parseLong(adasControllerApi.getSatelliteTime()) - result.getSatelliteTime(); if (internal > 3000) { iterator.remove(); } From f45316ebcc834b828ee4b3940eafb02820b90db7 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Wed, 21 Jul 2021 18:33:36 +0800 Subject: [PATCH 31/44] =?UTF-8?q?och=5Ftaxi=20=E4=BF=AE=E5=A4=8D=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E6=BB=91=E5=8A=A8=E6=9D=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/taxi/MogoOCHTaxiModel.java | 18 +++++++++--------- .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 6 +++--- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 7f5b1c62b1..1ded643d76 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -117,14 +117,14 @@ class MogoOCHTaxiModel { if (mOCHTaxiServiceApi == null){ mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create(OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN); } -// MogoApisHandler.getInstance() -// .getApis() -// .getSocketManagerApi( context ) -// .registerOnMessageListener( 401016, mOrderMsgListener = new OrderMsgListener() ); -// MogoApisHandler.getInstance() -// .getApis() -// .getSocketManagerApi( context ) -// .registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() ); + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi( context ) + .registerOnMessageListener( 401016, mOrderMsgListener = new OrderMsgListener() ); + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi( context ) + .registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() ); MogoApisHandler.getInstance() .getApis() .getAdasControllerApi() @@ -300,7 +300,7 @@ class MogoOCHTaxiModel { mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; // mIsUserArriveAtStartStation = false; -// mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); + mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); break; } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index 428524960f..34dea5c9c6 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -232,7 +232,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); - onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); +// onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); } @Override @@ -296,7 +296,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态成功" ); MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); MogoOCHTaxiModel.getInstance().cancelAutopilot(); - OCHTaxiUiController.getInstance().onOrderStatusChanged(0); +// OCHTaxiUiController.getInstance().onOrderStatusChanged(0); } @Override @@ -336,7 +336,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); - onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); +// onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); } @Override From a1137e33520a4a9edee6e48f70b04f113b1896d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Wed, 21 Jul 2021 18:50:18 +0800 Subject: [PATCH 32/44] =?UTF-8?q?=E5=85=B3=E9=97=AD=E8=9E=8D=E5=90=88?= =?UTF-8?q?=E6=84=9F=E7=9F=A5=E6=95=B0=E6=8D=AE=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/service/marker/MapMarkerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 11a23d8898..cb46f5ad60 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -148,7 +148,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, @Override public void onMsgReceived(SocketDownData.LauncherSnapshotProto mogoSnapshotSetData) { DebugConfig.setStatus(DebugConfig.sDownloadSnapshot, true); - SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); + //SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); // Message msg = mSnapshotHandler.obtainMessage(); // msg.obj = mogoSnapshotSetData; // msg.what = MSG_SNAPSHOT; From 831e7ec43c1c0aa9b11606ad5f4c2d36c2f17041 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 22 Jul 2021 14:49:59 +0800 Subject: [PATCH 33/44] =?UTF-8?q?och=5Ftaxi=20=E5=8D=87=E7=BA=A7socket?= =?UTF-8?q?=E9=95=BF=E8=BF=9E=E6=8E=A5=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/taxi/MogoOCHTaxiModel.java | 152 ++++++++++++------ .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 7 +- build.gradle | 6 +- .../socket/MogoAiCloudSocketManager.java | 56 ++++++- gradle.properties | 16 +- .../connection/IMogoLifecycleListener.java | 9 ++ .../connection/IMogoSocketManager.java | 3 + 7 files changed, 181 insertions(+), 68 deletions(-) create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoLifecycleListener.java diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 1ded643d76..77d1f26193 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -17,6 +17,7 @@ import com.mogo.och.taxi.ui.OCHTaxiUiController; import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.adas.RemoteControlAutoPilotParameters; import com.mogo.service.adas.entity.AdasOCHData; +import com.mogo.service.connection.IMogoLifecycleListener; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.utils.NetworkUtils; @@ -78,6 +79,7 @@ class MogoOCHTaxiModel { private Context mContext; private OCHTaxiOrderResponse mCurrentOCHOrder; private OCHArriveNotifyCallback mNotifyCallback; + private OCHSocketLifeCycleLisnter mSocketLifeCycleLisnter; private IMogoCarLocationChangedListener2 mCarLocationChangedListener2; /** * 是否达到起始站点 @@ -125,6 +127,10 @@ class MogoOCHTaxiModel { .getApis() .getSocketManagerApi( context ) .registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() ); + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi(context) + .registerLifecycleListener(10010,mSocketLifeCycleLisnter = new OCHSocketLifeCycleLisnter()); MogoApisHandler.getInstance() .getApis() .getAdasControllerApi() @@ -153,13 +159,6 @@ class MogoOCHTaxiModel { mOCHRHCarstatus = data.data.status == 1 ? 1:0; - if (mOCHRHCarstatus == 1){ - timeLoop(); - }else { - if (mDisposable != null ){ - mDisposable.dispose(); - } - } //更新view OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1); //刷新数据 @@ -193,40 +192,9 @@ class MogoOCHTaxiModel { private void restoreOrderInfo() { Logger.d( TAG, "重新查询订单状态" ); mRetryCounter = 0; -// if ( mCurrentOCHOrder == null ) { -// // 订单恢复 -// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); -// Logger.d(TAG,"restoreOrderInfo:"+orderInfo); -// if ( !TextUtils.isEmpty( orderInfo ) ) { -// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); -// } -// } -// query2RestoreOrderStatus(mCurrentOCHOrder == null ? null : mCurrentOCHOrder.orderNo); query2RestoreOrderStatus(null); } -// private void restoreOrderInfo_() { -// Logger.d( TAG, "重新查询订单状态" ); -// mRetryCounter = 0; -// if ( mCurrentOCHOrder == null ) { -// // 订单恢复 -// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); -// if ( !TextUtils.isEmpty( orderInfo ) ) { -// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); -// if ( mCurrentOCHOrder == null ) { -// // 解决本地没有缓存订单号的问题 -// query2RestoreOrderStatus( null ); -// } else { -// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); -// } -// } else { -// // 解决本地没有缓存订单号的问题 -// query2RestoreOrderStatus( null ); -// } -// } else { -// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); -// } -// } /** * 查询订单状态,来恢复旧订单(因crash导致应用重启、断网没收到推送等)状态 *

@@ -320,6 +288,58 @@ class MogoOCHTaxiModel { } ); } + /** + * 用于长连接 + * @param orderNo + */ + private void querryOrderStatusForMakeUp( String orderNo ) { + Logger.e(TAG,"querryOrderStatusForMakeUp:"+orderNo); + queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() { + @Override + public void onSuccess( OCHTaxiOrderResponse2 data ) { + Logger.d( TAG, "querryOrderStatusForMakeUp:"+ data.toString()); + if ( data == null || data.data == null) { + Logger.d( TAG, "订单已取消或已完成" ); + clearCurrentOCHOrder(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.None.getCode()); + return; + } + convertCurrentOrder( data ); + OCHOrderStatus status = OCHOrderStatus.valueOf( data.data.orderDispatchType ); + switch ( status ) { + case JourneyCompleted: + TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_completed ) ); + OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType); + clearCurrentOCHOrder(); + break; + case Cancel: + TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_cancel ) ); + OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType); + clearCurrentOCHOrder(); + break; + case OnTheWayToStartStation: + default: + mIsArriveAtStartStation = false; + mIsArriveAtEndStation = false; + mIsOnTheWay2EndStation = false; + OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType); + mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); + break; + } + } + + @Override + public void onError() { + + } + + @Override + public void onFail() { + Logger.w( TAG, "查询订单失败" ); + } + } ); + } + /** * 将查询到的订单转换成推送的订单数据,目前两者数据结构不一样 * @@ -405,8 +425,6 @@ class MogoOCHTaxiModel { super.onSuccess(o); Logger.d(TAG,"OCHCarStatusResponse:"+o.data.status); mOCHRHCarstatus = o.data.status; -// mIsWork = mOCHRHCarstatus.status == 1; -// mOCHRHCarstatus.status = status; OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus == 1); updateData(mOCHRHCarstatus); Logger.d(TAG,"changeCarStatus:"+status); @@ -525,14 +543,6 @@ class MogoOCHTaxiModel { return mIsArriveAtEndStation; } -// /** -// * 用户是否达到上车站点 -// * -// * @return -// */ -// public boolean isUserArriveAtStartStation() { -// return mIsUserArriveAtStartStation; -// } /** * 设置去往终点状态 @@ -583,7 +593,6 @@ class MogoOCHTaxiModel { if ( !isArriveAtStartStation() ) { registerCarLocationListener(); } -// OCHTaxiUiController.getInstance().addFragment(); OCHTaxiUiController.getInstance().onOrderStatusChanged(mCurrentOCHOrder.orderDispatchType); } } @@ -624,6 +633,13 @@ class MogoOCHTaxiModel { .unregisterCarLocationChangedListener( TAG, mCarLocationChangedListener2 ); } + public void unregisterSocketListener(){ + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi(mContext) + .unregisterLifecycleListener(10010); + } + /** * 后端长链推送通知订单状态被改变 */ @@ -648,12 +664,10 @@ class MogoOCHTaxiModel { switch ( status ) { case Cancel: clearCurrentOCHOrder(); -// OCHTaxiUiController.getInstance().removeFragment(); OCHTaxiUiController.getInstance().onOrderStatusChanged(status.getCode()); break; case UserArriveAtStartStation: mIsArriveAtStartStation = true; -// mIsUserArriveAtStartStation = true; OCHTaxiUiController.getInstance().onUserArriveAtStartStation(); break; default: @@ -663,6 +677,38 @@ class MogoOCHTaxiModel { } } + private class OCHSocketLifeCycleLisnter implements IMogoLifecycleListener { + + @Override + public void onConnectFailure() { + Logger.e(TAG,"socket onConnectFailure"); + } + + @Override + public void onConnectSuccess() { + Logger.e(TAG,"socket onConnectSuccess"); + stopSocketMakeUp(); + } + + @Override + public void onConnectLost() { + Logger.e(TAG,"socket onConnectLost"); + startSocketMakeUp(); + } + } + + public void startSocketMakeUp(){ + if (mOCHRHCarstatus == 1){ + timeLoop(); + } + } + + public void stopSocketMakeUp(){ + if (mDisposable != null){ + mDisposable.dispose(); + } + } + /** * 自动驾驶本地通知订单到站 */ @@ -853,7 +899,7 @@ class MogoOCHTaxiModel { } } - private static final int PERIOD = 3 * 1000; + private static final int PERIOD = 1 * 1000; private static final int DELAY = 100; private Disposable mDisposable; /** @@ -864,6 +910,6 @@ class MogoOCHTaxiModel { .map((aLong -> aLong + 1)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(aLong -> query2RestoreOrderStatus(null)); + .subscribe(aLong -> querryOrderStatusForMakeUp(null)); } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index 34dea5c9c6..b7e177fb3f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -232,7 +232,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); -// onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); + onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode()); } @Override @@ -279,6 +279,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .getRegisterCenterApi() .unregisterCarLocationChangedListener( TAG, this ); MogoOCHTaxiModel.getInstance().unregisterCarLocationListener(); + MogoOCHTaxiModel.getInstance().unregisterSocketListener(); mLocation = null; } @@ -296,7 +297,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态成功" ); MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); MogoOCHTaxiModel.getInstance().cancelAutopilot(); -// OCHTaxiUiController.getInstance().onOrderStatusChanged(0); + OCHTaxiUiController.getInstance().onOrderStatusChanged(0); } @Override @@ -336,7 +337,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i @Override public void onSuccess( Object data ) { Logger.d( TAG, "更新状态成功" ); -// onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); + onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode()); } @Override diff --git a/build.gradle b/build.gradle index eae2a8b0ee..7f4a78dd55 100644 --- a/build.gradle +++ b/build.gradle @@ -4,13 +4,13 @@ apply from: "javadoc.gradle" buildscript { repositories { - maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } + maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/jcenter' } - maven { url 'http://nexus.zhidaoauto.com/repository/maven-releases/' } - maven { url 'http://nexus.zhidaoauto.com/repository/maven-public/' } + maven { url 'https://nexus.zhidaoauto.com/repository/maven-releases/' } + maven { url 'https://nexus.zhidaoauto.com/repository/maven-public/' } google() } dependencies { diff --git a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java index 8ed63e49e4..96c6d75427 100644 --- a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java +++ b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java @@ -8,11 +8,13 @@ import com.mogo.cloud.socket.IMogoCloudSocketMsgAckListener; import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener; import com.mogo.cloud.socket.SocketManager; import com.mogo.cloud.socket.entity.MsgBody; +import com.mogo.service.connection.IMogoLifecycleListener; import com.mogo.service.connection.IMogoMsgAckListener; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.utils.logger.Logger; import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon; +import com.zhidao.socket.ConnectionLifecycleListener; import java.util.ArrayList; import java.util.List; @@ -26,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap; * 长链实现:基于 netty */ @Keep -public class MogoAiCloudSocketManager implements IMogoSocketManager { +public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implements IMogoSocketManager { private static final String TAG = "MogoAiCloudSocketManager-apk"; @@ -54,6 +56,7 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager { * key - msgType */ private final Map> mListeners = new ConcurrentHashMap<>(); + private final Map mLifeCycleListeners = new ConcurrentHashMap<>(); /** * 管理消息回执 @@ -101,6 +104,24 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager { SocketManager.getInstance().unregisterOnMessageListener(msgType, mogoCloudSocketOnMessageListener); } + @Override + public void registerLifecycleListener(int msgType, IMogoLifecycleListener listener) { + if (mLifeCycleListeners.containsKey(msgType)) { + return; + } + if (!mLifeCycleListeners.containsKey(msgType)) { + mLifeCycleListeners.put(msgType, listener); + } + } + + @Override + public void unregisterLifecycleListener(int msgType) { + if (!mLifeCycleListeners.containsKey(msgType)) { + return; + } + mLifeCycleListeners.remove(msgType); + } + @Override public void sendMsg(MsgBody body, IMogoMsgAckListener listener) { Logger.d(TAG, "sendMsg."); @@ -150,4 +171,37 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager { } } }; + + @Override + public void onConnectSuccess() { + if (mLifeCycleListeners.size() > 0){ + for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){ + if (lifecycleListener != null){ + lifecycleListener.onConnectSuccess(); + } + } + } + } + + @Override + public void onConnectFailure() { + if (mLifeCycleListeners.size() > 0){ + for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){ + if (lifecycleListener != null){ + lifecycleListener.onConnectFailure(); + } + } + } + } + + @Override + public void onConnectLost(boolean reconnect) { + if (mLifeCycleListeners.size() > 0){ + for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){ + if (lifecycleListener != null){ + lifecycleListener.onConnectLost(); + } + } + } + } } diff --git a/gradle.properties b/gradle.properties index 9996fc0ae4..8b08b76621 100644 --- a/gradle.properties +++ b/gradle.properties @@ -158,21 +158,21 @@ LOGLIB_VERSION = 1.0.4 ######## MogoAiCloudSDK Version # 网络请求 -MOGO_NETWORK_VERSION=1.1.21 +MOGO_NETWORK_VERSION=1.1.24 # 鉴权 -MOGO_PASSPORT_VERSION=1.1.21 +MOGO_PASSPORT_VERSION=1.1.24 # 常链接 -MOGO_SOCKET_VERSION=1.1.21 +MOGO_SOCKET_VERSION=1.1.24 # 数据采集 -MOGO_REALTIME_VERSION=1.1.21 +MOGO_REALTIME_VERSION=1.1.24 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.1.21 +MOGO_TANLU_VERSION=1.1.24 # 直播推流 -MOGO_LIVE_VERSION=1.1.21 +MOGO_LIVE_VERSION=1.1.24 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.1.21 +MOGO_TRAFFICLIVE_VERSION=1.1.24 # 定位服务 -MOGO_LOCATION_VERSION=1.1.21 +MOGO_LOCATION_VERSION=1.1.24 ######## Foundation MogoAiCloud Module diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoLifecycleListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoLifecycleListener.java new file mode 100644 index 0000000000..a65ddee335 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoLifecycleListener.java @@ -0,0 +1,9 @@ +package com.mogo.service.connection; + +public interface IMogoLifecycleListener { + void onConnectFailure(); + + void onConnectSuccess(); + + void onConnectLost(); +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java index a07f749aff..bcb4ed51a9 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java @@ -45,6 +45,9 @@ public interface IMogoSocketManager extends IProvider { */ void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener ); + + void registerLifecycleListener(int msgType,IMogoLifecycleListener listener); + void unregisterLifecycleListener(int msgType); /** * 发送消息 * From d6d12611984e7d31ed85c204a9368ab0b97cead1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 22 Jul 2021 15:24:25 +0800 Subject: [PATCH 34/44] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dlocation=E5=BC=95?= =?UTF-8?q?=E8=B5=B7=E7=9A=84=E6=97=A0=E6=B3=95=E7=BC=96=E8=AF=91=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 2 +- .../socket/MogoAiCloudSocketManager.java | 11 +++++++++++ gradle.properties | 16 ++++++++-------- .../impl/connection/MogoSocketManager.java | 11 +++++++++++ 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 36c8ffb009..d9505f9259 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,7 +5,7 @@ From eb326bdc9691368a7833fd12304c05154b516bab Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 22 Jul 2021 16:58:06 +0800 Subject: [PATCH 36/44] =?UTF-8?q?och=5Ftaxi=20mogoaisocket-sdk=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../socket/MogoAiCloudSocketManager.java | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java index 9c44b23a20..ab495b4f3b 100644 --- a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java +++ b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java @@ -14,6 +14,7 @@ import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.utils.logger.Logger; import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon; +import com.zhidao.socket.ConnectionLifecycleListener; import java.util.ArrayList; import java.util.List; @@ -27,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap; * 长链实现:基于 netty */ @Keep -public class MogoAiCloudSocketManager implements IMogoSocketManager { +public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implements IMogoSocketManager { private static final String TAG = "MogoAiCloudSocketManager-sdk"; @@ -55,6 +56,7 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager { * key - msgType */ private final Map> mListeners = new ConcurrentHashMap<>(); + private final Map mLifeCycleListeners = new ConcurrentHashMap<>(); /** * 管理消息回执 @@ -104,12 +106,20 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager { @Override public void registerLifecycleListener(int msgType, IMogoLifecycleListener listener) { - + if (mLifeCycleListeners.containsKey(msgType)) { + return; + } + if (!mLifeCycleListeners.containsKey(msgType)) { + mLifeCycleListeners.put(msgType, listener); + } } @Override public void unregisterLifecycleListener(int msgType) { - + if (!mLifeCycleListeners.containsKey(msgType)) { + return; + } + mLifeCycleListeners.remove(msgType); } @Override @@ -161,4 +171,37 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager { } } }; + + @Override + public void onConnectSuccess() { + if (mLifeCycleListeners.size() > 0){ + for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){ + if (lifecycleListener != null){ + lifecycleListener.onConnectSuccess(); + } + } + } + } + + @Override + public void onConnectFailure() { + if (mLifeCycleListeners.size() > 0){ + for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){ + if (lifecycleListener != null){ + lifecycleListener.onConnectFailure(); + } + } + } + } + + @Override + public void onConnectLost(boolean reconnect) { + if (mLifeCycleListeners.size() > 0){ + for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){ + if (lifecycleListener != null){ + lifecycleListener.onConnectLost(); + } + } + } + } } From cc1d77ffbd1db014d0cc15280aec846d1b550d51 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 22 Jul 2021 17:17:00 +0800 Subject: [PATCH 37/44] merge --- .../drawer/AdasRecognizedResultDrawer.java | 5 +- .../mogo/module/common/drawer/BaseDrawer.java | 27 +++---- .../common/drawer/SnapshotSetDataDrawer.java | 70 ++++++++----------- .../service/marker/MapMarkerManager.java | 6 +- 4 files changed, 42 insertions(+), 66 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index a33f05b20c..5672ae3d61 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -76,7 +76,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { /** * 渲染 adas 识别的数据 * - * @param resultList + * @param resultList adas感知融合数据 */ public void renderAdasRecognizedResult(List resultList) { final long start = System.nanoTime(); @@ -114,7 +114,6 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } removeUselessMarker(mMarkersCaches); removeUselessLastRecord(); - Log.d("ADAS数据延时绘制", "查找缓存绘制 cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start))); int newDiffSetSize = newDiffSet.size(); // Log.d(TAG, "原数据量 : " + resultList.size() + " 新增marker数量 : " + newDiffSetSize); // 复用过期 marker @@ -232,7 +231,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if (recognizedListResult == null) { return true; } - if (!isRenderType(recognizedListResult.type)) { + if (nonRenderType(recognizedListResult.type)) { return true; } String uniqueKey = recognizedListResult.uuid; diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index 6bfb2e1f62..c22e80931d 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -1,5 +1,7 @@ package com.mogo.module.common.drawer; +import static java.lang.Math.PI; + import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; @@ -15,8 +17,8 @@ import com.mogo.map.marker.IMogoMarker; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.R; import com.mogo.module.common.constants.AdasRecognizedType; -import com.mogo.module.common.drawer.bean.SpeedData; import com.mogo.module.common.datacenter.SnapshotLocationDataCenter; +import com.mogo.module.common.drawer.bean.SpeedData; import com.mogo.utils.WorkThreadHandler; import java.util.Collection; @@ -26,12 +28,6 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import static com.mogo.cloud.socket.entity.SocketDownDataHelper.FROM_ADAS; -import static com.mogo.cloud.socket.entity.SocketDownDataHelper.FROM_MY_LOCATION; -import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_ADAS; -import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_DATA; -import static java.lang.Math.PI; - public /* * @author congtaowang @@ -176,15 +172,15 @@ class BaseDrawer { * @param type {@link AdasRecognizedType} * @return render */ - public boolean isRenderType(int type) { + public boolean nonRenderType(int type) { AdasRecognizedType recognizedType = AdasRecognizedType.valueFrom(type); - return recognizedType == AdasRecognizedType.classIdCar - || recognizedType == AdasRecognizedType.classIdMoto - || recognizedType == AdasRecognizedType.classIdBicycle - || recognizedType == AdasRecognizedType.classIdPerson - || recognizedType == AdasRecognizedType.classIdTrafficBus - || recognizedType == AdasRecognizedType.classIdTrafficTruck - || recognizedType == AdasRecognizedType.classIdUnKnow; + return recognizedType != AdasRecognizedType.classIdCar + && recognizedType != AdasRecognizedType.classIdMoto + && recognizedType != AdasRecognizedType.classIdBicycle + && recognizedType != AdasRecognizedType.classIdPerson + && recognizedType != AdasRecognizedType.classIdTrafficBus + && recognizedType != AdasRecognizedType.classIdTrafficTruck + && recognizedType != AdasRecognizedType.classIdUnKnow; } /** @@ -324,7 +320,6 @@ class BaseDrawer { * @param isVrMode 是否是vrMode */ public static void showSelfSpeed(IMogoMarker mogoMarker, double speed, String uuid, int type, double heading, boolean isVrMode) { - Log.d("EmArrow", "showSelf uuid : " + uuid + " speed : " + speed); if (mogoMarker == null || mogoMarker.isDestroyed()) { return; } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index eabe5b7281..c458afd639 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -3,7 +3,6 @@ package com.mogo.module.common.drawer; import static com.mogo.module.common.constants.DataTypes.TYPE_MARKER_CLOUD_DATA; import android.os.Build; -import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -22,7 +21,6 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.R; import com.mogo.module.common.api.CallChatApi; import com.mogo.module.common.constants.DataTypes; -import com.mogo.module.common.drawer.bean.SpeedData; import com.mogo.module.common.utils.Trigonometric; import com.mogo.service.adas.IMogoADASController; import com.mogo.service.statusmanager.IMogoStatusChangedListener; @@ -75,20 +73,13 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic sInstance = null; } - private Object readResolve() { - // 阻止反序列化,必须实现 Serializable 接口 - return sInstance; - } - /** * 上一帧数据的缓存 */ - private static Map mMarkersCaches = new ConcurrentHashMap<>(); + private static final Map mMarkersCaches = new ConcurrentHashMap<>(); private final Map mLastPositions = new ConcurrentHashMap<>(); - private boolean mIsVrMode = false; - /** * 注册StatusDescriptor.VR_MODE类型,VR_MODE状态改变回调 * @@ -105,10 +96,6 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic AdasRecognizedResultDrawer.getInstance().notifyVrModeChanged(); //清除ADAS old marker data } - public boolean isVrMode() { - return mIsVrMode; - } - public boolean isChangeCarModeStatus() { return mChangeCarModeStatus; } @@ -152,7 +139,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @param data 自车周边数据 */ public void renderSnapshotData(SocketDownData.LauncherSnapshotProto data) { - + final long start = System.nanoTime(); if (clear(data)) { return; } @@ -180,8 +167,6 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic newDiffSet.add(cloudRoadData); } } - delayRemoveUselessMarker(); - removeUselessLastRecord(); // 需要新增的 marker 数量 int newDiffSetSize = newDiffSet.size(); // 复用过期 marker @@ -194,12 +179,14 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic if (marker == null) { continue; } - Log.d("云端融合数据", "新增marker id : " + uniqueKey); renderSnapshotOneFrame(marker, uniqueKey, cloudRoadData, newMarkersCaches); } } -// sendMessage(MSG_REMOVE_DIRTY_MARKERS, mMarkersCaches); mMarkersCaches.putAll(newMarkersCaches); + // 移除超时 marker + delayRemoveUselessMarker(); + removeUselessLastRecord(); + Log.d("云端数据延时绘制", "render 接收数据 -> 处理结束 " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start)) + "ms"); } /** @@ -235,14 +222,16 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic while (iterator.hasNext()) { IMogoMarker result = iterator.next(); SocketDownData.CloudRoadDataProto proto = ((SocketDownData.CloudRoadDataProto) result.getObject()); + if(proto == null){ // 后续有业务数据在操作,更新数据,不做处理 + continue; + } long internal = Long.parseLong(adasControllerApi.getSatelliteTime()) - proto.getSatelliteTime(); - Log.d("EmArrow", "delayRemoveUselessMarker uuid : " + proto.getUuid() - + " adasTime : " + adasControllerApi.getSatelliteTime() - + " protoTime : " + proto.getSatelliteTime() + Log.d("MogoArrow", "delayRemoveUselessMarker uuid : " + proto.getUuid() + + " localTime : " + adasControllerApi.getSatelliteTime() + + " originTime : " + proto.getSatelliteTime() + " internal : " + internal); - if (internal > 2000) { + if (internal > 5000) { iterator.remove(); - result.remove(); result.destroy(); } } @@ -277,7 +266,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic if (cloudRoadData == null) { return true; } - if (!isRenderType(cloudRoadData.getType())) { + if (nonRenderType(cloudRoadData.getType())) { return true; } @@ -292,10 +281,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @param newSnapshotCaches 缓存数据 */ private void renderSnapshotOneFrame(IMogoMarker marker, String uniqueKey, SocketDownData.CloudRoadDataProto cloudRoadData, Map newSnapshotCaches) { - - Log.d("云端融合数据", " uuid : " + uniqueKey + " type : " + cloudRoadData.getType() + " fromType : " + cloudRoadData.getFromType()); final long start = System.nanoTime(); - SocketDownData.CloudRoadDataProto lastPosition = mLastPositions.remove(uniqueKey); // 道路吸附 // double lastLon = -1; @@ -318,22 +304,21 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic final MogoLatLng point = new MogoLatLng(cloudRoadData.getWgslat(), cloudRoadData.getWgslon()); long cost = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start); final long intervalRef = interval - cost; - Log.d("云端动画数据", "最终赋值 : " + intervalRef + " 两帧间隔 : " + interval + " uuid : " + cloudRoadData.getUuid()); marker.addDynamicAnchorPosition(point, (float) cloudRoadData.getHeading(), intervalRef); marker.setAnchorColor(getModelRenderColor(cloudRoadData.getType(), cloudRoadData.getFromType(), cloudRoadData.getSpeed(), cloudRoadData.getWgslon(), cloudRoadData.getWgslat(), cloudRoadData.getHeading())); - newSnapshotCaches.put(uniqueKey, marker); - if (shouldShowSpeed(cloudRoadData.getType())) { - Message msg = mRenderThreadHandler.obtainMessage(); - msg.obj = new SpeedData(marker - , cloudRoadData.getSpeed() - , cloudRoadData.getUuid() - , cloudRoadData.getType() - , cloudRoadData.getHeading() - , MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()); - msg.what = MSG_DISPLAY_SPEED; - msg.sendToTarget(); - } +// if (shouldShowSpeed(cloudRoadData.getType())) { +// Message msg = mRenderThreadHandler.obtainMessage(); +// msg.obj = new SpeedData(marker +// , cloudRoadData.getSpeed() +// , cloudRoadData.getUuid() +// , cloudRoadData.getType() +// , cloudRoadData.getHeading() +// , MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()); +// msg.what = MSG_DISPLAY_SPEED; +// msg.sendToTarget(); +// } + Log.d("云端数据延时", "render 刷新一台车 cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start))); } /** @@ -407,6 +392,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic * @return {@link IMogoMarker} */ public IMogoMarker drawSnapshotDataMarker(SocketDownData.CloudRoadDataProto data) { + long start = System.nanoTime(); if (data == null) { return null; } @@ -439,7 +425,7 @@ public class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClic if (!TextUtils.isEmpty(data.getSn())) { bindClickListener(marker); } - + Log.d("云端数据延时", "创建一个新 marker cost : " + TimeUnit.NANOSECONDS.toMillis((System.nanoTime() - start))); return marker; } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index cb46f5ad60..25cb32c45a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -2,8 +2,6 @@ package com.mogo.module.service.marker; import android.content.Context; import android.graphics.Rect; -import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import com.mogo.cloud.socket.entity.SocketDownData; @@ -38,13 +36,11 @@ import com.mogo.module.service.network.RefreshModel; import com.mogo.realtime.api.MoGoAiCloudRealTime; import com.mogo.realtime.socket.IMogoCloudOnMsgListener; import com.mogo.service.adas.IMogoADASControlStatusChangedListener; -import com.mogo.service.adas.entity.ADASRecognizedResult; import com.mogo.service.module.IMogoBizActionDoneListener; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.ViewUtils; -import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import com.zhidao.carchattingprovider.ICallChatResponse; @@ -148,7 +144,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, @Override public void onMsgReceived(SocketDownData.LauncherSnapshotProto mogoSnapshotSetData) { DebugConfig.setStatus(DebugConfig.sDownloadSnapshot, true); - //SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); +// SnapshotSetDataDrawer.getInstance().renderSnapshotData(mogoSnapshotSetData); // Message msg = mSnapshotHandler.obtainMessage(); // msg.obj = mogoSnapshotSetData; // msg.what = MSG_SNAPSHOT; From 3d3a1ff69b6a44e61aa77f02295e64ddeaec65ad Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 22 Jul 2021 17:20:49 +0800 Subject: [PATCH 38/44] add socket status register cod --- .../service/marker/MapMarkerManager.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 25cb32c45a..2eb40ccf05 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -13,6 +13,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.ModuleNames; +import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.api.CallChatApi; import com.mogo.module.common.drawer.AdasRecognizedResultDrawer; import com.mogo.module.common.drawer.MarkerDrawer; @@ -36,6 +37,7 @@ import com.mogo.module.service.network.RefreshModel; import com.mogo.realtime.api.MoGoAiCloudRealTime; import com.mogo.realtime.socket.IMogoCloudOnMsgListener; import com.mogo.service.adas.IMogoADASControlStatusChangedListener; +import com.mogo.service.connection.IMogoLifecycleListener; import com.mogo.service.module.IMogoBizActionDoneListener; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.ThreadPoolService; @@ -138,7 +140,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, MoGoAiCloudRealTime.registerOnMsgListener(new IMogoCloudOnMsgListener() { @Override public void onMsgSend(long id) { - DebugConfig.setStatus(DebugConfig.sDownloadLink, true); + } @Override @@ -151,6 +153,25 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // msg.sendToTarget(); } }); + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi(context) + .registerLifecycleListener(10020, new IMogoLifecycleListener() { + @Override + public void onConnectFailure() { + DebugConfig.setStatus(DebugConfig.sDownloadLink, false); + } + + @Override + public void onConnectSuccess() { + DebugConfig.setStatus(DebugConfig.sDownloadLink, true); + } + + @Override + public void onConnectLost() { + DebugConfig.setStatus(DebugConfig.sDownloadLink, false); + } + }); // adas 每隔一定频率传递过来的数据 MarkerServiceHandler.getApis().getAdasControllerApi().addAdasRecognizedDataCallback(resultList -> { From c26dd645a5a93232399ff0a677caebea2ff4ba56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 22 Jul 2021 21:47:59 +0800 Subject: [PATCH 39/44] =?UTF-8?q?=E6=9B=B4=E6=96=B0SDK=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6aacc205c2..8d9f658c4a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -158,21 +158,21 @@ LOGLIB_VERSION = 1.0.4 ######## MogoAiCloudSDK Version # 网络请求 -MOGO_NETWORK_VERSION=1.1.26 +MOGO_NETWORK_VERSION=1.1.27 # 鉴权 -MOGO_PASSPORT_VERSION=1.1.26 +MOGO_PASSPORT_VERSION=1.1.27 # 常链接 -MOGO_SOCKET_VERSION=1.1.26 +MOGO_SOCKET_VERSION=1.1.27 # 数据采集 -MOGO_REALTIME_VERSION=1.1.26 +MOGO_REALTIME_VERSION=1.1.27 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.1.26 +MOGO_TANLU_VERSION=1.1.27 # 直播推流 -MOGO_LIVE_VERSION=1.1.26 +MOGO_LIVE_VERSION=1.1.27 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.1.26 +MOGO_TRAFFICLIVE_VERSION=1.1.27 # 定位服务 -MOGO_LOCATION_VERSION=1.1.26 +MOGO_LOCATION_VERSION=1.1.27 ######## Foundation MogoAiCloud Module From 7bb4b1bdfde5bf91d4c8fbacdce59e1441239337 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 23 Jul 2021 10:28:29 +0800 Subject: [PATCH 40/44] =?UTF-8?q?och=5Ftaxi=20mogoaisocket-sdk=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/service/impl/connection/MogoSocketManager.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/connection/MogoSocketManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/connection/MogoSocketManager.java index e1fd1ecbf3..c2b8d60763 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/connection/MogoSocketManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/connection/MogoSocketManager.java @@ -55,12 +55,16 @@ public class MogoSocketManager implements IMogoSocketManager { @Override public void registerLifecycleListener(int msgType, IMogoLifecycleListener listener) { - + if ( mDelegate != null ) { + mDelegate.registerLifecycleListener( msgType, listener ); + } } @Override public void unregisterLifecycleListener(int msgType) { - + if ( mDelegate != null ) { + mDelegate.unregisterLifecycleListener( msgType); + } } @Override From c561d7b5cae56e88a316ef15c553a482da7470c6 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 23 Jul 2021 10:46:52 +0800 Subject: [PATCH 41/44] =?UTF-8?q?och=5Ftaxi=20ui=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E4=B8=8D=E5=A4=84=E7=90=86=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/module_och_taxi_panel.xml | 115 +----------------- 1 file changed, 1 insertion(+), 114 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml index 7546b93bf8..a9ccf96c3e 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml @@ -5,7 +5,6 @@ android:id="@+id/module_och_taxi_layoutview" android:layout_width="@dimen/module_mogo_och_autopilot_order_bg_width" android:layout_height="@dimen/module_mogo_och_autopilot_order_bg_height" - android:minHeight="@dimen/module_mogo_och_autopilot_order_bg_height" android:orientation="vertical"> + tools:text="后路站" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Date: Fri, 23 Jul 2021 12:37:05 +0800 Subject: [PATCH 42/44] och_taxi socket --- .../mogo/aicloud/services/socket/MogoAiCloudSocketManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java index 96c6d75427..8ed132eeca 100644 --- a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java +++ b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java @@ -69,6 +69,7 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem public void init(Context context, String appId) { this.mAppId = appId; SocketManager.getInstance().init(context); + SocketManager.getInstance().registerSocketConnCallback(this); } @Override From 1c30165466f76494a07a0dfb70a5ba3be83be38a Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 23 Jul 2021 14:09:10 +0800 Subject: [PATCH 43/44] =?UTF-8?q?och=5Ftaxi=20socket=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/aicloud/services/socket/MogoAiCloudSocketManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java index ab495b4f3b..a8a12e59ae 100644 --- a/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java +++ b/foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java @@ -69,6 +69,7 @@ public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implem public void init(Context context, String appId) { this.mAppId = appId; SocketManager.getInstance().init(context); + SocketManager.getInstance().registerSocketConnCallback(this); } @Override From 6e3d93ee2ca7dbb35d037c8b62ce79c2866583b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Sat, 24 Jul 2021 00:50:44 +0800 Subject: [PATCH 44/44] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E8=81=94=E6=83=B3PAD?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=B0=8F=E6=99=BA=E8=AF=AD=E9=9F=B3=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/launcher/MogoApplication.java | 12 ---- app2/build/jrebel/project-cleaned.marker | 0 .../com/mogo/commons/mvp/MvpActivity.java | 18 +++++- .../permissions/PermissionsDialogUtils.java | 59 +++++++++++++++++++ .../com/mogo/module/main/MainActivity.java | 51 +++++----------- .../main/java/com/mogo/tts/pad/PadTTS.java | 32 ++++++++-- 6 files changed, 117 insertions(+), 55 deletions(-) delete mode 100644 app2/build/jrebel/project-cleaned.marker create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/permissions/PermissionsDialogUtils.java diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index ce52cbb721..543b2224d9 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -318,18 +318,6 @@ public class MogoApplication extends AbsMogoApplication { // } ARouter.getInstance().navigation(ITestCrashReportProvider.class); Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms"); -// try { -// if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { -// Intent intent = new Intent(); -// intent.setComponent(new ComponentName("com.zhidao.speech", -// "com.zhidao.speech.MainActivity")); -// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); -// startActivity(intent); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } @Override diff --git a/app2/build/jrebel/project-cleaned.marker b/app2/build/jrebel/project-cleaned.marker deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index aa8d5fd980..b780448869 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; +import android.provider.Settings; import android.view.MotionEvent; import android.view.View; import android.view.Window; @@ -18,6 +19,8 @@ import androidx.appcompat.app.AppCompatDelegate; import com.mogo.commons.debug.DebugConfig; import com.mogo.skin.support.MogoSkinManager; import com.mogo.utils.SoftKeyBoardJobber; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.permissions.PermissionsDialogUtils; /** * @author congtaowang @@ -28,6 +31,8 @@ import com.mogo.utils.SoftKeyBoardJobber; public abstract class MvpActivity< V extends IView, P extends Presenter< V > > extends AppCompatActivity implements IView { + protected static final String TAG = "MvpActivity"; + protected P mPresenter; @Override @@ -42,21 +47,30 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > initViews(); mPresenter = createPresenter(); getLifecycle().addObserver( mPresenter ); + //申请悬浮窗权限 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + // 检查是否有悬浮窗权限 + if (Settings.canDrawOverlays(this)) { + startVoicePad(); + } + } else { + startVoicePad(); + } } @Override protected void onResume() { super.onResume(); hideBottomUIMenu(); - startVoicePad(); } /** * 在Pad上拉起语音 */ - private void startVoicePad() { + public void startVoicePad() { try { if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) { + Logger.d(TAG, "启动小智语音"); Intent intent = new Intent(); intent.setComponent(new ComponentName("com.zhidao.speech", "com.zhidao.speech.MainActivity")); diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/permissions/PermissionsDialogUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/permissions/PermissionsDialogUtils.java new file mode 100644 index 0000000000..fecc8e5309 --- /dev/null +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/permissions/PermissionsDialogUtils.java @@ -0,0 +1,59 @@ +package com.mogo.utils.permissions; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.provider.Settings; +import android.text.TextUtils; + +/** + * @author xiaoyuzhou + * @date 2021/7/22 4:57 下午 + */ +public class PermissionsDialogUtils { + + public static AlertDialog mAlertDialog; + + + /** + * 打开APP的详情设置 + */ + public static void openAppDetails(Activity activity, String msg, int CODE_WINDOW) { + if (mAlertDialog == null || !mAlertDialog.isShowing()) { + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + if (TextUtils.isEmpty(msg)) { + builder.setMessage("请在 “应用信息 -> 权限” 中授予权限"); + } else { + builder.setMessage("请在 “应用信息 -> 权限” 中授予【" + msg + "】权限"); + } + builder.setPositiveButton("手动授权", (dialog, which) -> { + Intent intent = new Intent(); + intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.setData(Uri.parse("package:" + activity.getPackageName())); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + activity.startActivityForResult(intent, CODE_WINDOW); + }); + builder.setCancelable(false); + mAlertDialog = builder.show(); + } + } + + /** + * 跳转浮层权限获取页面 + * + * @param activity + * @param CODE_WINDOW + */ + public static void openOverlayPermission(Activity activity, int CODE_WINDOW) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + activity.startActivityForResult(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, + Uri.parse("package:" + activity.getPackageName())), CODE_WINDOW); + } + } + +} diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index bdac502fa0..e0ec16d265 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -1,14 +1,10 @@ package com.mogo.module.main; -import android.app.AlertDialog; -import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; -import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.Settings; -import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.FrameLayout; @@ -43,6 +39,7 @@ import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.skin.support.SkinMode; import com.mogo.utils.NetworkUtils; import com.mogo.utils.logger.Logger; +import com.mogo.utils.permissions.PermissionsDialogUtils; import com.zhidao.adasconfig.api.AdasConfigApiController; import com.zhidao.adasconfig.common.log.LoggerController; import com.zhidao.autopilot.support.api.AutopilotServiceManage; @@ -148,9 +145,7 @@ public class MainActivity extends MvpActivity implement if (Settings.canDrawOverlays(this)) { return; } -// Intent intent=new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); -// startActivityForResult(intent, REQUEST_CODE_DIALOG); - openAppDetails("显示悬浮窗"); + PermissionsDialogUtils.openAppDetails(this, "显示悬浮窗", REQUEST_CODE_DIALOG); } } @@ -468,43 +463,27 @@ public class MainActivity extends MvpActivity implement } else { // 弹出对话框告诉用户需要权限的原因, 并引导用户去应用权限管理中手动打开权限按钮 if (!isFirst) { - openAppDetails(null); + PermissionsDialogUtils.openAppDetails(this, null, REQUEST_CODE_DIALOG); isFirst = true; } } } } - /** - * 打开APP的详情设置 - */ - private void openAppDetails(String msg) { - AlertDialog.Builder builder = new AlertDialog.Builder(this); - if (TextUtils.isEmpty(msg)) { - builder.setMessage("请在 “应用信息 -> 权限” 中授予权限"); - } else { - builder.setMessage("请在 “应用信息 -> 权限” 中授予【" + msg + "】权限"); - } - builder.setPositiveButton("手动授权", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = new Intent(); - intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); - intent.addCategory(Intent.CATEGORY_DEFAULT); - intent.setData(Uri.parse("package:" + getPackageName())); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - startActivity(intent); - } - }); - builder.setNegativeButton("取消", null); - builder.show(); - } - @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); - + Logger.d(TAG, "requestCode: " + requestCode + " resultCode: " + resultCode); + if (requestCode == REQUEST_CODE_DIALOG) { + //申请悬浮窗权限 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + // 检查是否有悬浮窗权限 + if (Settings.canDrawOverlays(this)) { + startVoicePad(); + } + } else { + startVoicePad(); + } + } } } diff --git a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java index 3598d85479..acec3188fe 100644 --- a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java +++ b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java @@ -2,6 +2,8 @@ package com.mogo.tts.pad; import android.content.Context; import android.content.Intent; +import android.os.Build; +import android.provider.Settings; import android.text.TextUtils; import com.alibaba.android.arouter.facade.annotation.Route; @@ -11,6 +13,7 @@ import com.mogo.tts.base.MogoTTSConstants; import com.mogo.tts.base.PreemptType; import com.mogo.utils.AppUtils; import com.mogo.utils.logger.Logger; +import com.mogo.utils.permissions.PermissionsDialogUtils; import com.zhidao.auto.platform.voice.VoiceClient; import com.zhidao.voicesdk.MogoVoiceManager; import com.zhidao.voicesdk.MogoVoiceManagerImpl; @@ -34,7 +37,7 @@ public @Route( path = MogoTTSConstants.API_PATH ) class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { - private static final String TAG = "ZhiTTS"; + private static final String TAG = "PadTTS"; private String mLastQAndASpeakText; private boolean mHasFlush = false; @@ -48,6 +51,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { try { mVoiceClient.unRegisterCustomWakeupCmd( cmd ); } catch ( Exception e ) { + e.printStackTrace(); } } } @@ -79,6 +83,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { * 初始化 */ private void initSpeech( Context context ) { + Logger.d(TAG, "initSpeech"); mogoVoiceManager = MogoVoiceManagerImpl.getInstance(); mogoVoiceManager.init( context, new OnConnStatusListener() { @Override @@ -115,7 +120,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { List< IMogoTTSCallback > cmdCallBacks = mCmdMap.get( cmd ); iterator = new ArrayList<>( cmdCallBacks ).iterator(); } catch ( Exception e ) { - + e.printStackTrace(); } while ( iterator != null && iterator.hasNext() ) { IMogoTTSCallback callBack = iterator.next(); @@ -192,6 +197,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { mVoiceClient.speakDefault( text ); } } catch ( Exception e ) { + e.printStackTrace(); } } @@ -207,6 +213,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { mVoiceClient.speakDefault( text ); } } catch ( Exception e ) { + e.printStackTrace(); } } @@ -241,6 +248,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { mVoiceClient.speakTypeText( text, preemptType ); } } catch ( Exception e ) { + e.printStackTrace(); } } @@ -320,6 +328,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { try { mVoiceClient.unRegisterCustomWakeupCmd( cmd ); } catch ( Exception e ) { + e.printStackTrace(); } mCacheUnWakeupCommands.remove( cmd ); } @@ -340,6 +349,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { try { mVoiceClient.unRegisterCustomWakeupCmd( cmd ); } catch ( Exception e ) { + e.printStackTrace(); } mCacheUnWakeupCommands.remove( cmd ); } @@ -355,6 +365,8 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { * @param status window_start_cancel 0 - 结束, 1 - 显示, 2 - 未激活调试进入 */ public static void startAssistant( Context context, int status ) { + Logger.w(TAG, "startAssistant status = %d", status); + final Intent intent = new Intent(); intent.setFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES ); intent.setAction( "pvetec.intent.action.txz.switch" ); @@ -378,6 +390,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { private boolean isVoiceServiceReady( Context context ) { if ( AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.zhidao.speech" ) )) { + Logger.d( TAG, "pad txz is voiceServiceReady" ); return true; } else if ( AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.txznet.txz" ) ) && AppUtils.isProcessRunning( context, AppUtils.getPackageUid( context, "com.txznet.adapter" ) ) ) { @@ -398,6 +411,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { mogoVoiceManager.toSpeak( text, -3, this ); } } catch ( Exception e ) { + e.printStackTrace(); } } @@ -406,7 +420,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { mSpeakVoiceMap.remove( text ); mogoVoiceManager.shutUp( ttsId ); } catch ( Exception e ) { - + e.printStackTrace(); } } @@ -457,8 +471,15 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { mVoiceClient = new VoiceClient( mContext ); mVoiceClient.setCallBack( this ); initFlushStatus(); - initSpeech( context ); - Logger.w( TAG, "voice is ready = %s", mHasFlush ); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + // 检查是否有悬浮窗权限 + if (Settings.canDrawOverlays(context)) { + initSpeech(context); + } + } else { + initSpeech(context); + } + Logger.w(TAG, "voice is mHasFlush = %s mInitReady= %s", mHasFlush, mInitReady); } } @@ -469,6 +490,7 @@ class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsListener { @Override public void startAIAssist( Context context, int status ) { + Logger.w(TAG, "startAIAssist status = %d", status); final Intent intent = new Intent(); intent.setFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES ); intent.setAction( "pvetec.intent.action.txz.switch" );