增加 根据服务端下发的上报时间,重置本地轮询上报时间间隔

This commit is contained in:
tongchenfei
2020-12-03 15:04:04 +08:00
parent 44d1aff8cf
commit c9b919b9b2
6 changed files with 42 additions and 2 deletions

1
.idea/gradle.xml generated
View File

@@ -88,7 +88,6 @@
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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 ) {

View File

@@ -21,4 +21,10 @@ public interface IMogoRefreshStrategyController extends IProvider {
* 清除所有数据
*/
void clearAllData();
/**
* 重新设置定位点上报时间间隔
* @param delay 新的时间间隔
*/
void resetLocationUpDelay(long delay);
}