fix bug and add ack listener
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
package com.mogo.realtime.socket;
|
||||
|
||||
public interface IMogoCloudOnAckListener {
|
||||
|
||||
void onAck(long resetTime);
|
||||
}
|
||||
@@ -4,5 +4,7 @@ import com.mogo.realtime.entity.MogoSnapshotSetData;
|
||||
|
||||
public interface IMogoCloudOnMsgListener {
|
||||
|
||||
void onAck(int msgId);
|
||||
|
||||
void onMsgReceived(MogoSnapshotSetData mogoSnapshotSetData);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
|
||||
import com.mogo.cloud.socket.MsgBody;
|
||||
import com.mogo.cloud.socket.SocketManager;
|
||||
import com.mogo.cloud.socket.WebSocketData;
|
||||
import com.mogo.realtime.Imp.RealTimeProviderImp;
|
||||
import com.mogo.realtime.constant.SimpleLocationCorrectStrategy;
|
||||
import com.mogo.realtime.entity.ADASRecognizedResult;
|
||||
import com.mogo.realtime.entity.CloudLocationInfo;
|
||||
@@ -36,7 +37,8 @@ public class SocketHandler {
|
||||
private long serverTime = 0;
|
||||
private long receiveMsgTime = 0;
|
||||
private CloudLocationInfo mLastInfo;
|
||||
private final List<IMogoCloudOnMsgListener> listenerList = new ArrayList<>();
|
||||
private final List<IMogoCloudOnMsgListener> onMsgListenerList = new ArrayList<>();
|
||||
private final List<IMogoCloudOnAckListener> onAckListenerList = new ArrayList<>();
|
||||
|
||||
public static SocketHandler getInstance() {
|
||||
if (mInstance == null) {
|
||||
@@ -52,12 +54,18 @@ public class SocketHandler {
|
||||
/*
|
||||
* useInner: 是否注册自己内部的监听
|
||||
* */
|
||||
public void initSocket(Context context, boolean useInner, String appId, IMogoCloudOnMsgListener listener) {
|
||||
public void initSocket(Context context, String appId, IMogoCloudOnMsgListener listener) {
|
||||
SocketManager.getInstance().init(context, appId);
|
||||
SocketManager.getInstance().registerOnMessageListener(0x040002, onMessageListener);
|
||||
SocketManager.getInstance().registerOnMessageListener(0x040003, onMessageListener);
|
||||
if (listener != null && !listenerList.contains(listener)) {
|
||||
listenerList.add(listener);
|
||||
if (listener != null && !onMsgListenerList.contains(listener)) {
|
||||
onMsgListenerList.add(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void resetUploadDelayListener(IMogoCloudOnAckListener onAckListener) {
|
||||
if(onAckListener != null){
|
||||
onAckListenerList.add(onAckListener);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,8 +84,11 @@ public class SocketHandler {
|
||||
receiveMsgTime = SystemClock.elapsedRealtime();
|
||||
if (webSocketData.getUpUtcTime() > 0) {
|
||||
long nextDelay = webSocketData.getUpUtcTime() - serverTime;
|
||||
//todo
|
||||
// MogoRTKLocation.getInstance().resetUploadDelay(nextDelay);
|
||||
if (!MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getIsUseExternalLocation()) {
|
||||
for (IMogoCloudOnAckListener ackListener:onAckListenerList) {
|
||||
ackListener.onAck(nextDelay);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -87,7 +98,7 @@ public class SocketHandler {
|
||||
Log.e(TAG, "onMsgReceived MogoSnapshotSetData == null ");
|
||||
return;
|
||||
}
|
||||
for (IMogoCloudOnMsgListener listener : listenerList) {
|
||||
for (IMogoCloudOnMsgListener listener : onMsgListenerList) {
|
||||
listener.onMsgReceived(data);
|
||||
}
|
||||
}
|
||||
@@ -117,11 +128,10 @@ public class SocketHandler {
|
||||
locationResult.sn = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn();
|
||||
locationResult.coordinates.addAll(cloudLocationInfo);
|
||||
}
|
||||
//todo 改造
|
||||
// List<ADASRecognizedResult> recognizedResults = RealTimeApisHandler.getInstance().getApis().getRecognizedResultManager().getLastADASRecognizedResult();//外显接口返回
|
||||
List<ADASRecognizedResult> recognizedResults = RealTimeProviderImp.getInstance().getLastADASRecognizedResult();//SPI接口返回
|
||||
OnePerSecondSendContent content = new OnePerSecondSendContent();
|
||||
content.self = locationResult;
|
||||
// content.adas = recognizedResults;
|
||||
content.adas = recognizedResults;
|
||||
|
||||
if (content.self == null &&
|
||||
(content.adas == null || content.adas.isEmpty())) {
|
||||
@@ -150,7 +160,8 @@ public class SocketHandler {
|
||||
public void stop() {
|
||||
SocketManager.getInstance().unregisterOnMessageListener(0x040002, onMessageListener);
|
||||
SocketManager.getInstance().unregisterOnMessageListener(0x040003, onMessageListener);
|
||||
listenerList.clear();
|
||||
onMsgListenerList.clear();
|
||||
onAckListenerList.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user