Merge branch 'kj'

This commit is contained in:
liujing
2021-01-22 18:09:45 +08:00
6 changed files with 100 additions and 42 deletions

View File

@@ -0,0 +1,83 @@
package com.mogo.cloud.socket;
import android.content.Context;
import android.os.SystemClock;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.List;
import static com.mogo.cloud.socket.WebSocketMsgType.MSG_TYPE_ACK;
/**
* @author liujing
* @description 描述
* @since: 2021/1/22
*/
public class SocketHandler {
private static volatile SocketHandler mInstance;
private long serverTime = 0;
private long receiveMsgTime = 0;
private List<IMogoCloudSocketOnMessageListener> listenerList;
public static SocketHandler getInstance() {
if (mInstance == null) {
synchronized (SocketManager.class) {
if (mInstance == null) {
mInstance = new SocketHandler();
}
}
}
return mInstance;
}
/*
* useInner: 是否注册自己内部的监听
* */
public void initSocket(Context context, boolean useInner, String appId, IMogoCloudSocketOnMessageListener listener) {
SocketManager.getInstance().init(context, appId);
if (useInner) {
SocketManager.getInstance().registerOnMessageListener(0x040002, onMessageListener);
SocketManager.getInstance().registerOnMessageListener(0x040003, onMessageListener);
} else {
SocketManager.getInstance().registerOnMessageListener(0x040002, listener);
SocketManager.getInstance().registerOnMessageListener(0x040003, listener);
listenerList.add(listener);
}
}
private final IMogoCloudSocketOnMessageListener<String> onMessageListener = new IMogoCloudSocketOnMessageListener<String>() {
@Override
public Class<String> target() {
return String.class;
}
@Override
public void onMsgReceived(String message) {
WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class);
int msgType = webSocketData.getMsgType();
if (msgType == MSG_TYPE_ACK.getMsgType()) {
if (webSocketData.getUtcTime() > 0) {
serverTime = webSocketData.getUtcTime();
receiveMsgTime = SystemClock.elapsedRealtime();
if (webSocketData.getUpUtcTime() > 0) {
long nextDelay = webSocketData.getUpUtcTime() - serverTime;
//todo
// MogoRTKLocation.getInstance().resetUploadDelay(nextDelay);
}
}
}
}
};
public void stop() {
//todo
// MogoRTKLocation.getInstance().unregisterRTKLocationListener();
// MogoRTKLocation.getInstance().stop();
for (int i = 0; i < listenerList.size(); i++) {
SocketManager.getInstance().unregisterOnMessageListener(0x040002, listenerList.get(i));
SocketManager.getInstance().unregisterOnMessageListener(0x040003, listenerList.get(i));
}
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.realtime.entity;
package com.mogo.cloud.socket;
import java.io.Serializable;

View File

@@ -1,4 +1,4 @@
package com.mogo.realtime.connect;
package com.mogo.cloud.socket;
public enum WebSocketMsgType {

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
import com.mogo.realtime.Interface.RealTimeProvider;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import java.util.List;
@@ -47,9 +48,9 @@ public class RealTimeProviderImp implements RealTimeProvider {
}
@Override
public void sendMsg(Object body, IMogoCloudSocketOnMessageListener listener) {
if (mDelegate != null) {
mDelegate.sendMsg(body, listener);
public void sendMsg(List list, IMogoCloudSocketOnMessageListener listener) {
if (mDelegate != null){
mDelegate.sendMsg(list,listener);
}
}

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import java.util.List;
@@ -44,8 +45,8 @@ public interface RealTimeProvider<T> {
/**
* 发送消息
*
* @param body 消息体
* @param list 消息体
* @param listener 回执监听
*/
void sendMsg(T body, IMogoCloudSocketOnMessageListener listener );
public void sendMsg(List <CloudLocationInfo> list, IMogoCloudSocketOnMessageListener listener);
}

View File

@@ -7,11 +7,12 @@ import android.util.Log;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
import com.mogo.cloud.socket.MsgBody;
import com.mogo.cloud.socket.SocketHandler;
import com.mogo.cloud.socket.SocketManager;
import com.mogo.realtime.Interface.RealTimeApisHandler;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.realtime.entity.WebSocketData;
import com.mogo.cloud.socket.WebSocketData;
import com.mogo.realtime.location.LocationResult;
import com.mogo.realtime.location.MogoRTKLocation;
import com.mogo.realtime.entity.OnePerSecondSendContent;
@@ -21,7 +22,7 @@ import com.mogo.utils.network.utils.GsonUtil;
import java.util.ArrayList;
import java.util.List;
import static com.mogo.realtime.connect.WebSocketMsgType.MSG_TYPE_ACK;
import static com.mogo.cloud.socket.WebSocketMsgType.MSG_TYPE_ACK;
/**
* @author congtaowang
@@ -61,43 +62,15 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener
return sInstance;
}
public void start(Context context) {
public void start(Context context, boolean useInner, String appId, IMogoCloudSocketOnMessageListener listener) {
mContext = context.getApplicationContext();
MogoRTKLocation.getInstance().registerRTKLocationListener(this);
//todo
SocketManager.getInstance().init(context,"com.mogo.launcher");
SocketManager.getInstance().registerOnMessageListener(0x040002,onMessageListener);
SocketManager.getInstance().registerOnMessageListener(0x040003,onMessageListener);
SocketHandler.getInstance().initSocket(context, useInner, appId, listener);
}
private final IMogoCloudSocketOnMessageListener<String> onMessageListener = new IMogoCloudSocketOnMessageListener<String>() {
@Override
public Class<String> target() {
return String.class;
}
@Override
public void onMsgReceived(String message) {
WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class);
int msgType = webSocketData.getMsgType();
if (msgType == MSG_TYPE_ACK.getMsgType()) {
if (webSocketData.getUtcTime() > 0) {
serverTime = webSocketData.getUtcTime();
receiveMsgTime = SystemClock.elapsedRealtime();
if (webSocketData.getUpUtcTime() > 0) {
long nextDelay = webSocketData.getUpUtcTime() - serverTime;
MogoRTKLocation.getInstance().resetUploadDelay(nextDelay);
}
}
}
}
};
public void stop() {
MogoRTKLocation.getInstance().unregisterRTKLocationListener();
MogoRTKLocation.getInstance().stop();
SocketManager.getInstance().unregisterOnMessageListener(0x040002,onMessageListener);
SocketManager.getInstance().unregisterOnMessageListener(0x040003,onMessageListener);
SocketHandler.getInstance().stop();
}
@Override
@@ -162,7 +135,7 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener
MsgBody msgBody = new MsgBody();
msgBody.msgType(msgType);
msgBody.content(msg);
SocketManager.getInstance().sendMsg(msgBody,msgId -> {
SocketManager.getInstance().sendMsg(msgBody, msgId -> {
});