This commit is contained in:
zhongchao
2021-01-26 18:58:37 +08:00
parent dfe87f2fc9
commit 3d1a2d70fc
8 changed files with 51 additions and 82 deletions

View File

@@ -17,30 +17,9 @@ public interface RealTimeProvider {
*/
List<ADASRecognizedResult> getLastADASRecognizedResult();
/**
* 云平台数据下发 消息监听
*
* @param listener 回调
*/
void registerOnMessageListener(IMogoCloudOnMsgListener listener);
/**
* 云平台数据下发 取消消息监听
*
* @param listener 回调
*/
void unRegisterOnMessageListener(IMogoCloudOnMsgListener listener);
/**
* 发送消息,由外部传入
*/
List<CloudLocationInfo> getLocationMsg();
/**
* 计算两点之间的距离
*
* @param p1
* @param p2
* @return
*/
float calculateLineDistance( MogoLatLng p1, MogoLatLng p2 ) throws Exception;
}

View File

@@ -2,7 +2,7 @@ package com.mogo.realtime.core;
import android.os.SystemClock;
import com.mogo.realtime.Imp.RealTimeProviderImp;
import com.mogo.realtime.spi.RealTimeProviderImp;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.realtime.util.LocationParseUtil;
import com.mogo.realtime.util.MogoLatLng;

View File

@@ -3,7 +3,7 @@ package com.mogo.realtime.core;
import android.content.Context;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.realtime.Imp.RealTimeProviderImp;
import com.mogo.realtime.spi.RealTimeProviderImp;
import com.mogo.realtime.location.MogoRTKLocation;
import com.mogo.realtime.socket.IMogoCloudOnMsgListener;
import com.mogo.realtime.socket.SocketHandler;
@@ -37,13 +37,13 @@ public class SnapshotUploadInTime implements UploadInTimeHandler.IUploadInTimeLi
sInstance = null;
}
public void start(Context context, String appId, IMogoCloudOnMsgListener listener) {
public void start(Context context, String appId) {
//开启内部定位
if (!isUseExternalLocation) {
MogoRTKLocation.getInstance().init();
}
//开启长链服务
SocketHandler.getInstance().initSocket(context, appId, listener);
SocketHandler.getInstance().initSocket(context, appId);
SocketHandler.getInstance().resetUploadDelayListener(resetTime ->
UploadInTimeHandler.getInstance().resetUploadDelay(resetTime)
);

View File

@@ -9,13 +9,13 @@ 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.core.SimpleLocationCorrectStrategy;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.realtime.entity.LocationResult;
import com.mogo.realtime.entity.MogoSnapshotSetData;
import com.mogo.realtime.entity.OnePerSecondSendContent;
import com.mogo.realtime.spi.RealTimeProviderImp;
import com.mogo.realtime.util.MortonCode;
import com.mogo.utils.network.utils.GsonUtil;
@@ -51,20 +51,32 @@ public class SocketHandler {
return mInstance;
}
/*
* useInner: 是否注册自己内部的监听
* */
public void initSocket(Context context, String appId, IMogoCloudOnMsgListener listener) {
/**
* 初始化长连接服务
*
* @param context 上下文
* @param appId 外部传入
*/
public void initSocket(Context context, String appId) {
SocketManager.getInstance().init(context, appId);
SocketManager.getInstance().registerOnMessageListener(0x040002, onMessageListener);
SocketManager.getInstance().registerOnMessageListener(0x040003, onMessageListener);
if (listener != null && !onMsgListenerList.contains(listener)) {
onMsgListenerList.add(listener);
}
public void registerOnMsgListener(IMogoCloudOnMsgListener onMsgListener) {
if (onMsgListener != null && !onMsgListenerList.contains(onMsgListener)) {
onMsgListenerList.add(onMsgListener);
}
}
public void unRegisterOnMsgListener(IMogoCloudOnMsgListener onMsgListener) {
if (onMsgListener != null) {
onMsgListenerList.remove(onMsgListener);
}
}
public void resetUploadDelayListener(IMogoCloudOnAckListener onAckListener) {
if(onAckListener != null){
if (onAckListener != null) {
onAckListenerList.add(onAckListener);
}
}
@@ -85,8 +97,10 @@ public class SocketHandler {
if (webSocketData.getUpUtcTime() > 0) {
long nextDelay = webSocketData.getUpUtcTime() - serverTime;
if (!MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getIsUseExternalLocation()) {
for (IMogoCloudOnAckListener ackListener:onAckListenerList) {
ackListener.onAck(nextDelay);
for (IMogoCloudOnAckListener ackListener : onAckListenerList) {
if (ackListener != null) {
ackListener.onAck(nextDelay);
}
}
}
}
@@ -99,15 +113,17 @@ public class SocketHandler {
return;
}
for (IMogoCloudOnMsgListener listener : onMsgListenerList) {
listener.onMsgReceived(data);
if (listener != null) {
listener.onMsgReceived(data);
}
}
}
}
};
public void sendMsg(List<CloudLocationInfo> cloudLocationInfo) {
if(cloudLocationInfo == null){
Log.e(TAG,"请检查传入数组对象为Null");
if (cloudLocationInfo == null) {
Log.e(TAG, "请检查传入数组对象为Null");
return;
}
CloudLocationInfo lastInfo = null;

View File

@@ -1,4 +1,4 @@
package com.mogo.realtime.Imp;
package com.mogo.realtime.spi;
import com.elegant.spi.AbstractDelegateManager;
@@ -8,22 +8,22 @@ import com.mogo.realtime.Interface.RealTimeProvider;
/**
* 提供RealTime SPI接口实例对象管理类
*/
class RealTimeDelegateManager extends AbstractDelegateManager<RealTimeProvider> {
private static RealTimeDelegateManager sInstance = null;
class RealTimeProviderDelegateManager extends AbstractDelegateManager<RealTimeProvider> {
private static RealTimeProviderDelegateManager sInstance = null;
private RealTimeProvider mRealTimeProvider = null;
public static RealTimeDelegateManager getInstance() {
public static RealTimeProviderDelegateManager getInstance() {
if (sInstance == null) {
synchronized (RealTimeDelegateManager.class) {
synchronized (RealTimeProviderDelegateManager.class) {
if (sInstance == null) {
sInstance = new RealTimeDelegateManager();
sInstance = new RealTimeProviderDelegateManager();
}
}
}
return sInstance;
}
public RealTimeDelegateManager() {
public RealTimeProviderDelegateManager() {
loadDelegates(MoGoAiCloudClient.getInstance().getContext(), RealTimeProvider.class, new DelegateListener<RealTimeProvider>() {
@Override
public void onDelegate(String unit, RealTimeProvider p) {

View File

@@ -1,10 +1,8 @@
package com.mogo.realtime.Imp;
package com.mogo.realtime.spi;
import com.mogo.realtime.Interface.RealTimeProvider;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.realtime.socket.IMogoCloudOnMsgListener;
import com.mogo.realtime.util.MogoLatLng;
import java.util.List;
@@ -28,7 +26,7 @@ public class RealTimeProviderImp implements RealTimeProvider {
}
public RealTimeProviderImp() {
mDelegate = (RealTimeProvider) RealTimeDelegateManager.getInstance();
mDelegate = (RealTimeProvider) RealTimeProviderDelegateManager.getInstance();
}
@Override
@@ -39,23 +37,6 @@ public class RealTimeProviderImp implements RealTimeProvider {
return null;
}
@Override
public void registerOnMessageListener(IMogoCloudOnMsgListener listener) {
if (mDelegate != null) {
mDelegate.registerOnMessageListener(listener);
}
}
@Override
public void unRegisterOnMessageListener(IMogoCloudOnMsgListener listener) {
if (listener == null) {
return;
}
if (mDelegate != null) {
mDelegate.unRegisterOnMessageListener(listener);
}
}
@Override
public List<CloudLocationInfo> getLocationMsg() {
if (mDelegate != null) {
@@ -64,12 +45,4 @@ public class RealTimeProviderImp implements RealTimeProvider {
return null;
}
@Override
public float calculateLineDistance(MogoLatLng p1, MogoLatLng p2) throws Exception {
if (mDelegate != null) {
mDelegate.calculateLineDistance(p1, p2);
}
return 0;
}
}