From ed6936545d20cc490145d2936cee4387be2afd53 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期一, 22 十二月 2025 19:04:34 +0800
Subject: [PATCH] 优化了导航预览模式
---
src/gecaoji/Device.java | 99 +++++++++++++++++++++++++++++++++----------------
1 files changed, 66 insertions(+), 33 deletions(-)
diff --git a/src/gecaoji/Device.java b/src/gecaoji/Device.java
index 97a3333..9e26eff 100644
--- a/src/gecaoji/Device.java
+++ b/src/gecaoji/Device.java
@@ -417,25 +417,38 @@
mowerNumber = incomingDeviceId;
}
+ // 妫�鏌ユ槸鍚︽鍦ㄥ鑸瑙堟ā寮�
+ boolean isNavigating = checkIfNavigating();
+
String latitudeValue = sanitizeField(fields, 2);
String latitudeHemisphere = sanitizeField(fields, 3);
String longitudeValue = sanitizeField(fields, 4);
String longitudeHemisphere = sanitizeField(fields, 5);
- String combinedLatitude = combineCoordinate(latitudeValue, latitudeHemisphere);
- if (hasMeaningfulValue(combinedLatitude)) {
- realtimeLatitude = combinedLatitude;
- }
- String combinedLongitude = combineCoordinate(longitudeValue, longitudeHemisphere);
- if (hasMeaningfulValue(combinedLongitude)) {
- realtimeLongitude = combinedLongitude;
+ // 鍙湁鍦ㄩ潪瀵艰埅棰勮妯″紡涓嬫墠鏇存柊浣嶇疆鐩稿叧鏁版嵁
+ if (!isNavigating) {
+ String combinedLatitude = combineCoordinate(latitudeValue, latitudeHemisphere);
+ if (hasMeaningfulValue(combinedLatitude)) {
+ realtimeLatitude = combinedLatitude;
+ }
+ String combinedLongitude = combineCoordinate(longitudeValue, longitudeHemisphere);
+ if (hasMeaningfulValue(combinedLongitude)) {
+ realtimeLongitude = combinedLongitude;
+ }
+
+ String altitudeValue = sanitizeField(fields, 9);
+ if (hasMeaningfulValue(altitudeValue)) {
+ realtimeAltitude = altitudeValue;
+ }
+
+ // 鏇存柊浣嶇疆鍧愭爣
+ updateRelativeCoordinates(latitudeValue, latitudeHemisphere, longitudeValue, longitudeHemisphere);
+
+ // 鏇存柊鑸悜瑙掞紙浣嶇疆鐩稿叧锛�
+ heading = defaultIfEmpty(sanitizeField(fields, 19));
}
- String altitudeValue = sanitizeField(fields, 9);
- if (hasMeaningfulValue(altitudeValue)) {
- realtimeAltitude = altitudeValue;
- }
-
+ // 鍏朵粬鏁版嵁锛堢數閲忋�佸崼鏄熸暟绛夛級濮嬬粓鏇存柊
positioningStatus = defaultIfEmpty(sanitizeField(fields, 6));
// 鍚屾鍒扮粯鍒舵ā鍧楃殑鏁版嵁婧愶紝淇濊瘉寰�杩旂粯鍒跺畾鏃跺櫒鑳借瘑鍒畾浣嶈川閲�
try {
@@ -448,10 +461,7 @@
battery = defaultIfEmpty(sanitizeField(fields, 16));
pitch = defaultIfEmpty(sanitizeField(fields, 17));
realtimeSpeed = defaultIfEmpty(sanitizeField(fields, 18));
- heading = defaultIfEmpty(sanitizeField(fields, 19));
GupdateTime = String.valueOf(System.currentTimeMillis());
-
- updateRelativeCoordinates(latitudeValue, latitudeHemisphere, longitudeValue, longitudeHemisphere);
}
/**涓插彛鏇存柊GNGGA鏁版嵁*/
@@ -471,26 +481,38 @@
return;
}
-
+ // 妫�鏌ユ槸鍚︽鍦ㄥ鑸瑙堟ā寮�
+ boolean isNavigating = checkIfNavigating();
+
String latitudeValue = sanitizeField(fields, 2);
String latitudeHemisphere = sanitizeField(fields, 3);
String longitudeValue = sanitizeField(fields, 4);
String longitudeHemisphere = sanitizeField(fields, 5);
- String combinedLatitude = combineCoordinate(latitudeValue, latitudeHemisphere);
- if (hasMeaningfulValue(combinedLatitude)) {
- realtimeLatitude = combinedLatitude;
- }
- String combinedLongitude = combineCoordinate(longitudeValue, longitudeHemisphere);
- if (hasMeaningfulValue(combinedLongitude)) {
- realtimeLongitude = combinedLongitude;
+ // 鍙湁鍦ㄩ潪瀵艰埅棰勮妯″紡涓嬫墠鏇存柊浣嶇疆鐩稿叧鏁版嵁
+ if (!isNavigating) {
+ String combinedLatitude = combineCoordinate(latitudeValue, latitudeHemisphere);
+ if (hasMeaningfulValue(combinedLatitude)) {
+ realtimeLatitude = combinedLatitude;
+ }
+ String combinedLongitude = combineCoordinate(longitudeValue, longitudeHemisphere);
+ if (hasMeaningfulValue(combinedLongitude)) {
+ realtimeLongitude = combinedLongitude;
+ }
+
+ String altitudeValue = sanitizeField(fields, 9);
+ if (hasMeaningfulValue(altitudeValue)) {
+ realtimeAltitude = altitudeValue;
+ }
+
+ // 鏇存柊浣嶇疆鍧愭爣
+ updateRelativeCoordinates(latitudeValue, latitudeHemisphere, longitudeValue, longitudeHemisphere);
+
+ // 涓插彛鏀跺埌GNGGA鏁版嵁鍚庯紝瑙﹀彂鎷栧熬鏇存柊
+ notifyMowerTrailUpdate();
}
- String altitudeValue = sanitizeField(fields, 9);
- if (hasMeaningfulValue(altitudeValue)) {
- realtimeAltitude = altitudeValue;
- }
-
+ // 鍏朵粬鏁版嵁锛堢數閲忋�佸崼鏄熸暟绛夛級濮嬬粓鏇存柊
positioningStatus = defaultIfEmpty(sanitizeField(fields, 6));
// 鍚屾鍒扮粯鍒舵ā鍧楃殑鏁版嵁婧愶紝淇濊瘉寰�杩旂粯鍒跺畾鏃跺櫒鑳借瘑鍒畾浣嶈川閲�
try {
@@ -502,17 +524,28 @@
differentialAge = defaultIfEmpty(sanitizeField(fields, 13));
realtimeSpeed ="0";
GupdateTime = String.valueOf(System.currentTimeMillis());
-
- updateRelativeCoordinates(latitudeValue, latitudeHemisphere, longitudeValue, longitudeHemisphere);
-
- // 涓插彛鏀跺埌GNGGA鏁版嵁鍚庯紝瑙﹀彂鎷栧熬鏇存柊
- notifyMowerTrailUpdate();
}
/**
* 閫氱煡鍦板浘娓叉煋鍣ㄦ洿鏂板壊鑽夋満鎷栧熬
* 褰撲覆鍙f敹鍒癎NGGA鏁版嵁骞舵洿鏂颁綅缃悗璋冪敤
*/
+ /**
+ * 妫�鏌ユ槸鍚︽鍦ㄥ鑸瑙堟ā寮�
+ * @return 濡傛灉姝e湪瀵艰埅棰勮杩斿洖true锛屽惁鍒欒繑鍥瀎alse
+ */
+ private boolean checkIfNavigating() {
+ try {
+ dikuai.daohangyulan nav = dikuai.daohangyulan.getInstance();
+ if (nav != null) {
+ return nav.isNavigating();
+ }
+ } catch (Exception e) {
+ // 濡傛灉鑾峰彇瀵艰埅瀹炰緥澶辫触锛岃繑鍥瀎alse锛堜笉褰卞搷涓昏鍔熻兘锛�
+ }
+ return false;
+ }
+
private void notifyMowerTrailUpdate() {
try {
// 閫氳繃Shouye.getInstance()鑾峰彇瀹炰緥锛岄伩鍏嶅惊鐜緷璧�
--
Gitblit v1.10.0