From dcd7b7fcefcaae9c3ea8225711608a6eb1f015d5 Mon Sep 17 00:00:00 2001
From: xuxinchao <13522809046@163.com>
Date: Mon, 21 Mar 2022 11:57:35 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E8=B0=83=E8=AF=95=E7=AA=97UI=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
修改域控制器和OBUIP输入框样式
---
.../main/res/layout/view_debug_setting.xml | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
index a4c86690d9..087e5fdbda 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml
@@ -581,12 +581,11 @@
Date: Mon, 21 Mar 2022 11:47:51 +0800
Subject: [PATCH 2/4] =?UTF-8?q?[FeedBack]=E4=BF=AE=E6=AD=A3=E7=BC=96?=
=?UTF-8?q?=E8=BE=91=E6=A1=86imeOption=3D'actionDone'=E4=B8=8D=E7=94=9F?=
=?UTF-8?q?=E6=95=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../feedback/biz/adapter/vh/BadCaseFBViewHolder.kt | 3 +++
.../src/main/res/layout/layout_fb_badcase.xml | 2 +-
.../com/mogo/eagle/core/utilcode/kotlin/Extensions.kt | 9 ---------
3 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt
index 5a7acc13f0..8a995d6011 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt
@@ -26,6 +26,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.B
import com.zhjt.mogo_core_function_devatools.feedback.biz.adapter.vh.base.FeedbackViewHolder
import com.zhjt.mogo_core_function_devatools.feedback.biz.bean.Feedback.BadCase
import com.zhjt.mogo_core_function_devatools.feedback.callback.IFeedbackCallback
+import kotlin.Int.Companion
@SuppressLint("SetTextI18n")
@@ -78,6 +79,8 @@ internal class BadCaseFBViewHolder(cb: IFeedbackCallback?, parent: ViewGroup): F
}
return@setOnEditorActionListener false
}
+ et.maxLines = Int.MAX_VALUE
+ et.setHorizontallyScrolling(false)
et.watch(
200,
onCountChanged = {
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb_badcase.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb_badcase.xml
index c6d08768e7..f455ace3e0 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb_badcase.xml
+++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb_badcase.xml
@@ -83,7 +83,7 @@
android:focusable="false"
android:gravity="start"
android:focusableInTouchMode="true"
- android:inputType="textMultiLine"
+ android:inputType="text"
android:textSize="36px"
android:textColorHint="#4CFFFFFF"
android:imeOptions="actionDone"
diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt
index 61dd0c7aeb..e88d988279 100644
--- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt
+++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt
@@ -8,34 +8,25 @@ import android.graphics.drawable.GradientDrawable
import android.text.*
import android.text.style.ForegroundColorSpan
import android.util.TypedValue
-import android.view.Gravity
import android.view.MotionEvent
import android.view.View
-import android.view.WindowManager
import android.widget.EditText
-import android.widget.PopupWindow
import android.widget.TextView
import androidx.annotation.ColorInt
import androidx.annotation.IntRange
import androidx.core.view.ViewCompat
import androidx.core.widget.doAfterTextChanged
import androidx.core.widget.doBeforeTextChanged
-import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.*
import androidx.lifecycle.Lifecycle.Event
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.recyclerview.widget.RecyclerView
-import com.mogo.eagle.core.utilcode.reminder.Reminder
-import com.mogo.eagle.core.utilcode.reminder.api.impl.PopupWindowReminder
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.R
import com.mogo.eagle.core.utilcode.util.Utils
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
-import java.lang.IllegalStateException
import java.util.*
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.TimeUnit.SECONDS
import kotlin.math.abs
val T.lifecycleOwner: LifecycleOwner
From bf5aa0a72549f3cdc9f21bcde4e30df5722c46e0 Mon Sep 17 00:00:00 2001
From: renwj
Date: Mon, 21 Mar 2022 11:57:43 +0800
Subject: [PATCH 3/4] =?UTF-8?q?[VisualAngle]=E5=AE=9E=E7=8E=B0=E5=9C=B0?=
=?UTF-8?q?=E5=9B=BEsdk=E8=B7=AF=E5=8F=A3=E7=9B=B8=E5=85=B3=E5=9B=9E?=
=?UTF-8?q?=E8=B0=83;=E5=A4=84=E7=90=86=E5=8D=81=E5=AD=97=E8=B7=AF?=
=?UTF-8?q?=E5=8F=A3=E8=A7=86=E8=A7=92=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mogo/eagle/core/data/map/MapRoadInfo.kt | 36 +++++++++
.../mogo/eagle/core/data/map/MogoLatLng.java | 10 +++
.../call/map/CallerMapRoadListenerManager.kt | 45 ++++++++++++
.../call/map/CallerVisualAngleManager.kt | 43 +++++++++--
.../mogo/map/impl/custom/AMapViewWrapper.java | 0
.../java/com/mogo/map/AMapViewWrapper.java | 73 +++++++++++++++++--
6 files changed, 194 insertions(+), 13 deletions(-)
create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MapRoadInfo.kt
create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRoadListenerManager.kt
create mode 100644 libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MapRoadInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MapRoadInfo.kt
new file mode 100644
index 0000000000..4e200c18a7
--- /dev/null
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MapRoadInfo.kt
@@ -0,0 +1,36 @@
+package com.mogo.eagle.core.data.map
+
+class MapRoadInfo {
+
+ class StopLine {
+ /**
+ * 停止线的长度
+ */
+ var distance: Double = 0.0
+
+ /**
+ * 车道ID
+ */
+ var laneId: String = ""
+
+ /**
+ * 停止线上的点
+ */
+ var points: List = emptyList()
+
+ /**
+ * 道路ID
+ */
+ var roadId: String = ""
+
+ /**
+ * 瓦片ID
+ */
+ var tieId: String = ""
+
+ /**
+ * 自车到停止线的距离
+ */
+ var distanceOfCarToStopLine: Double = 0.0
+ }
+}
\ No newline at end of file
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MogoLatLng.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MogoLatLng.java
index 951c21a907..ae61f4523a 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MogoLatLng.java
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/MogoLatLng.java
@@ -16,6 +16,16 @@ public class MogoLatLng implements Parcelable {
public final double lat;
public final double lon;
+ public double angle;
+
+ public int duration;
+
+ public double speed;
+
+ public double altitude;
+
+ public String provider;
+
public MogoLatLng( double lat, double lon ) {
this.lat = lat;
this.lon = lon;
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRoadListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRoadListenerManager.kt
new file mode 100644
index 0000000000..7a9f15ebe1
--- /dev/null
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapRoadListenerManager.kt
@@ -0,0 +1,45 @@
+package com.mogo.eagle.core.function.call.map
+
+import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
+import java.util.concurrent.ConcurrentHashMap
+
+object CallerMapRoadListenerManager {
+
+ interface OnRoadListener {
+
+ fun onRoadIdInfo(roadId: String)
+
+ fun onStopLineInfo(info: StopLine)
+ }
+
+ private val listeners by lazy {
+ ConcurrentHashMap()
+ }
+
+ fun registerRoadListener(tag: String, listener: OnRoadListener) {
+ if (listeners.contains(tag)) {
+ return
+ }
+ listeners[tag] = listener
+ }
+
+ fun unRegisterRoadListener(tag: String) {
+ if (!listeners.contains(tag)) {
+ return
+ }
+ listeners.remove(tag)
+ }
+
+
+ fun invokeListenersOnRoadIdGet(roadId: String) {
+ listeners.forEach { entry ->
+ entry.value.onRoadIdInfo(roadId)
+ }
+ }
+
+ fun invokeListenersOnStopLineGet(stopLine: StopLine) {
+ listeners.forEach { entry ->
+ entry.value.onStopLineInfo(stopLine)
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt
index e179dd7966..4a2141b850 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt
@@ -4,7 +4,10 @@ import android.os.Handler
import android.os.Looper
import android.os.SystemClock
import android.util.Log
+import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
import com.mogo.eagle.core.data.map.MogoLatLng
+import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener
+import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.CrossRoad
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Default
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.LowSpeed
import com.mogo.eagle.core.utilcode.kotlin.safeCancel
@@ -23,7 +26,11 @@ object CallerVisualAngleManager {
private const val TAG = "VisualAngle"
- private const val MaxDisplayThreshold = 20_000 //最大展示阈值
+ private const val MaxDisplayThreshold = 30_000 //最大展示阈值
+
+ @Volatile
+ private var hasCrossRoad = false
+
private var scope: CoroutineScope = acquireScope()
@Synchronized
@@ -47,6 +54,30 @@ object CallerVisualAngleManager {
val priority: Int
}
+ init {
+ CallerMapRoadListenerManager.registerRoadListener("VisualAngleChange", object : OnRoadListener {
+
+ private var roadId = ""
+
+ override fun onRoadIdInfo(roadId: String) {}
+
+ override fun onStopLineInfo(info: StopLine) {
+ if (!hasCrossRoad && info.distanceOfCarToStopLine <= 30.0) {
+ hasCrossRoad = true
+ changeVisualAngle(CrossRoad)
+ }
+ val oldRoadId = this.roadId
+ if (oldRoadId != roadId) {
+ if (hasCrossRoad) {
+ hasCrossRoad = false
+ changeVisualAngle(Default())
+ }
+ }
+ this.roadId = info.roadId
+ }
+ })
+ }
+
sealed class Scene private constructor(): IAttach {
/**
@@ -146,16 +177,14 @@ object CallerVisualAngleManager {
@OptIn(InternalCoroutinesApi::class)
fun changeVisualAngle(scene: Scene) {
- val triggerTime = SystemClock.elapsedRealtime()
+ val triggerTime = TimeUnit.MILLISECONDS.toSeconds(SystemClock.elapsedRealtime())
scope.launch {
val displayed = getDisplayed()
if (displayed == null) {
val top = getTop() //堆顶
if (top != null && top.target.priority > scene.priority) {
doChangeAngle(top)
- synchronized(heap) {
- heap += Record(scene, triggerTime = triggerTime)
- }
+ heap += Record(scene, triggerTime = triggerTime)
} else {
doChangeAngle(Record(scene, triggerTime = triggerTime))
}
@@ -167,9 +196,7 @@ object CallerVisualAngleManager {
}
if (scene is Default) {
Log.d(TAG, "恢复到默认视图,之前展示的视图:$displayed")
- synchronized(heap) {
- heap -= displayed
- }
+ heap -= displayed
launch {
val delay = scene.unit.toMillis(scene.delay)
Log.d(TAG, "默认视图开启延时倒计时, 倒计时时间:${delay} ms.")
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
index eaf250131e..cb1a1c7727 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
@@ -21,10 +21,12 @@ import android.view.View;
import com.mogo.commons.constants.SharedPrefsConstants;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
+import com.mogo.eagle.core.data.map.MapRoadInfo;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
+import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapStyleListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager;
@@ -75,6 +77,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.json.JSONObject;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -173,18 +176,78 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void onRoadIdInfo(@androidx.annotation.Nullable String s) {
Log.d(TAG, "-- onRoadIdInfo --RoadId:" + s);
- mRoadId = s;
+ if (s != null) {
+ CallerMapRoadListenerManager.INSTANCE.invokeListenersOnRoadIdGet(s);
+ }
}
@Override
public void onStopLineInfo(@androidx.annotation.Nullable StopLine stopLine) {
- Log.d(TAG, "-- onStopLineInfo:" + (stopLine != null ? stopLine.toString() : null) + "-> road_id:" + mRoadId);
- if (stopLine != null && mRoadId != null && TextUtils.equals(mRoadId, stopLine.road_id)) {
- MogoLocation location = CallerMapLocationListenerManager.INSTANCE.getCurrentLocation();
- //MapAutoApi.INSTANCE.
+ Log.d(TAG, "-- onStopLineInfo -- 1 --:" + (stopLine != null ? stopLine.toString() : null) + "-> road_id:" + mRoadId);
+ MogoLocation carLoc = CallerMapLocationListenerManager.INSTANCE.getCurrentLocation();
+ if (stopLine != null) {
+ ArrayList points = stopLine.points;
+ if (points != null && carLoc != null) {
+ MapRoadInfo.StopLine stopInfo = convert(stopLine);
+ LonLatPoint match = new LonLatPoint();
+ double ret = MapDataApi.INSTANCE.GetDisFromPointToLine(convert(carLoc), points, match, 1);
+ Log.d(TAG, "-- onStopLineInfo --- ret: "+ ret);
+ double distanceOfCarToStopLine = 0.0;
+ if (Double.compare(ret, -1.0) != 0) {
+ distanceOfCarToStopLine = MapTools.INSTANCE.distance(carLoc.getLatitude(), carLoc.getLongitude(), match.getLatitude(), match.getLongitude());
+ } else {
+ LonLatPoint p1 = points.isEmpty() ? null : points.get(0);
+ LonLatPoint p2 = points.isEmpty() ? null : points.get(points.size() - 1);
+ LonLatPoint aim = p1 != null && p2 != null ? new LonLatPoint((p1.longitude + p2.longitude) / 2, (p1.altitude + p2.altitude) / 2, (p1.angle + p2.angle) / 2) : (p1 != null ? p1 : p2);
+ if (aim != null) {
+ distanceOfCarToStopLine = MapTools.INSTANCE.distance(carLoc.getAltitude(), carLoc.getLongitude(), aim.getLatitude(), aim.getLongitude());
+ }
+ }
+ Log.d(TAG, "-- onStopLineInfo --- distance: "+ distanceOfCarToStopLine);
+ stopInfo.setDistanceOfCarToStopLine(distanceOfCarToStopLine);
+ Log.d(TAG, "-- :");
+ CallerMapRoadListenerManager.INSTANCE.invokeListenersOnStopLineGet(stopInfo);
+ }
}
}
+ private @NotNull LonLatPoint convert(MogoLocation location) {
+ LonLatPoint point = new LonLatPoint();
+ point.latitude = location.getLatitude();
+ point.longitude = location.getLongitude();
+ point.altitude = location.getAltitude();
+ point.angle = location.getBearing();
+ point.speed = location.getSpeed();
+ point.angle = location.getBearing();
+ point.provider = location.getProvider();
+ return point;
+ }
+
+ private MapRoadInfo.StopLine convert(StopLine line) {
+ MapRoadInfo.StopLine ret = new MapRoadInfo.StopLine();
+ ret.setDistance(line.distance);
+ ret.setLaneId(line.lane_id);
+ ret.setRoadId(line.road_id);
+ ret.setTieId(line.tile_id);
+ ArrayList points = line.points;
+ if (points != null && points.size() > 0) {
+ List newPoints = new ArrayList<>();
+ for (int i = 0; i < points.size(); i++) {
+ LonLatPoint lonLatPoint = points.get(i);
+ MogoLatLng latLng = new MogoLatLng(lonLatPoint.latitude, lonLatPoint.longitude);
+ latLng.duration = lonLatPoint.duration;
+ latLng.angle = lonLatPoint.angle;
+ latLng.speed = lonLatPoint.speed;
+ latLng.altitude = lonLatPoint.altitude;
+ latLng.provider = lonLatPoint.provider;
+ newPoints.add(latLng);
+ }
+ ret.setPoints(newPoints);
+ }
+ return ret;
+ }
+
+
private Context getContext() {
return mMapView.getContext();
}
From a31e3085c3504b453abf2e076c20a0bb00befa1c Mon Sep 17 00:00:00 2001
From: renwj
Date: Mon, 21 Mar 2022 11:59:45 +0800
Subject: [PATCH 4/4] =?UTF-8?q?[Delete]=E7=A7=BB=E9=99=A4=E6=97=A0?=
=?UTF-8?q?=E7=94=A8=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java | 0
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
deleted file mode 100644
index e69de29bb2..0000000000