diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 08a4035b99..a973a8c831 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -88,7 +88,6 @@
-
diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java
index 3a213991ea..1b6ba190f9 100644
--- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java
+++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketData.java
@@ -14,6 +14,8 @@ public class WebSocketData implements Serializable {
private long utcTime;
+ private long upUtcTime;
+
public long getSeq() {
return seq;
}
@@ -53,4 +55,12 @@ public class WebSocketData implements Serializable {
public void setUtcTime(long utcTime) {
this.utcTime = utcTime;
}
+
+ public long getUpUtcTime() {
+ return upUtcTime;
+ }
+
+ public void setUpUtcTime(long upUtcTime) {
+ this.upUtcTime = upUtcTime;
+ }
}
diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java
index d0c73c3d4a..81cacb5570 100644
--- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java
+++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java
@@ -8,6 +8,7 @@ import androidx.annotation.Keep;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.mogo.commons.network.Utils;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.connection.IMogoMsgAckListener;
import com.mogo.service.connection.IMogoOnWebSocketMessageListener;
import com.mogo.service.connection.IMogoWebSocketManager;
@@ -202,7 +203,14 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
serverTime = webSocketData.getUtcTime();
receiveMsgTime = SystemClock.elapsedRealtime();
Logger.d(TAG, "设置serverTime");
+ if (webSocketData.getUpUtcTime() > 0) {
+ long nextDelay = webSocketData.getUpUtcTime() - serverTime;
+ MogoApisHandler.getInstance().getApis().getRefreshStrategyControllerApi().resetLocationUpDelay(nextDelay);
+ Logger.d(TAG, "重置下次上报时机: " + nextDelay);
+ }
}
+
+
}
}
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 bf97d9629c..e580947b78 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
@@ -45,8 +45,8 @@ public class MogoRTKLocation {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_DATA_CHANGED) {
- sendLocationData();
mHandler.sendEmptyMessageDelayed(MSG_DATA_CHANGED, uploadDelay);
+ sendLocationData();
}
}
};
@@ -159,4 +159,15 @@ public class MogoRTKLocation {
uploadDelay = intent.getIntExtra("fixTime", 0);
}
}
+
+ /**
+ * 默认保持{@link #uploadDelay}间隔进行位置上报,如遇服务端控制,进行上报间隔修改
+ * @param delay 上报间隔
+ */
+ public void resetUploadDelay(long delay) {
+ if (mHandler != null && mHandler.hasMessages(MSG_DATA_CHANGED)) {
+ mHandler.removeMessages(MSG_DATA_CHANGED);
+ mHandler.sendEmptyMessageDelayed(MSG_DATA_CHANGED, delay);
+ }
+ }
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java
index 6669e87641..a07f033793 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java
@@ -4,6 +4,7 @@ import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.module.service.MogoServices;
+import com.mogo.module.service.location.MogoRTKLocation;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
import com.mogo.utils.logger.Logger;
@@ -33,6 +34,11 @@ public class MogoRefreshStrategyController implements IMogoRefreshStrategyContro
MogoServices.getInstance().clearAllData();
}
+ @Override
+ public void resetLocationUpDelay(long delay) {
+ MogoRTKLocation.getInstance().resetUploadDelay(delay);
+ }
+
@Override
public void init( Context context ) {
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java b/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java
index fe0ef29d05..878d92a079 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java
@@ -21,4 +21,10 @@ public interface IMogoRefreshStrategyController extends IProvider {
* 清除所有数据
*/
void clearAllData();
+
+ /**
+ * 重新设置定位点上报时间间隔
+ * @param delay 新的时间间隔
+ */
+ void resetLocationUpDelay(long delay);
}
\ No newline at end of file