From c9b919b9b22c124f4f294d179829406dfddd9c9d Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 3 Dec 2020 15:04:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AB=AF=E4=B8=8B=E5=8F=91=E7=9A=84=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=E6=97=B6=E9=97=B4=EF=BC=8C=E9=87=8D=E7=BD=AE=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E8=BD=AE=E8=AF=A2=E4=B8=8A=E6=8A=A5=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E9=97=B4=E9=9A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - .../java/com/mogo/base/websocket/WebSocketData.java | 10 ++++++++++ .../com/mogo/base/websocket/WebSocketManager.java | 8 ++++++++ .../module/service/location/MogoRTKLocation.java | 13 ++++++++++++- .../strategy/MogoRefreshStrategyController.java | 6 ++++++ .../strategy/IMogoRefreshStrategyController.java | 6 ++++++ 6 files changed, 42 insertions(+), 2 deletions(-) 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