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 5466c5b479..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;
@@ -132,6 +133,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
@Override
public void sendMsg(Object body, IMogoOnWebSocketMessageListener listener) {
+ Logger.d(TAG, "websocket sendMsg body = " + body);
if (handlerThread != null) {
WebSocketData webSocketData = new WebSocketData();
webSocketData.setSeq(computeSendMsgTime());
@@ -180,6 +182,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
Logger.d(TAG, "websocket received msg = " + message);
WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class);
int msgType = webSocketData.getMsgType();
+ Logger.d(TAG, "websocket received msg type = " + msgType);
//服务端下发数据返回,上传数据回执默认不返回
if (msgType == MSG_TYPE_DOWNLINK_CAR_DATA.getMsgType()) {
@@ -189,6 +192,7 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
while (iterator.hasNext()) {
IMogoOnWebSocketMessageListener listener = iterator.next();
if (listener != null) {
+ Logger.d(TAG, "received msgId = " + webSocketData.getSeq() + ", content = " + webSocketData.getData());
Object receiveObj = GsonUtil.objectFromJson(webSocketData.getData(),listener.target());
listener.onMsgReceived(receiveObj);
}
@@ -198,12 +202,21 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin
if (webSocketData.getUtcTime() > 0) {
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);
+ }
}
+
+
}
}
@Override
public void onConnectClose() {
+ Logger.d(TAG, "websocket ready to reconnect");
SocketClient.getInstance().getClientProxy().stop();
SocketClient.getInstance().getClientProxy().reConnect();
}
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 4e0241b8c3..5b2d5f0f76 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();
}
}
};
@@ -157,4 +157,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