target();
+
+ void onMsgReceived(T obj);
+}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java
similarity index 61%
rename from modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java
rename to foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java
index e9f895d..d23d032 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java
+++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java
@@ -1,9 +1,6 @@
-package com.mogo.realtime.connect;
+package com.mogo.cloud.socket;
/**
- * @author congtaowang
- * @since 2019-12-31
- *
* 描述
*/
public class MsgBody {
@@ -13,16 +10,6 @@ public class MsgBody {
*/
private int mMsgType;
-// /**
-// * 服务端分发,业务线
-// */
-// private int mProductLine = MogoCommon.Product.mogoBussiness_VALUE;
-//
-// /**
-// *
-// */
-// private int mHeaderType = MogoConnsvr.MsgType.mogoMsgTypeDispatchSvrNoRspReq_VALUE;
-
/**
* 是否回执
*/
@@ -38,17 +25,17 @@ public class MsgBody {
*/
private Object mContent;
- public MsgBody msgType( int msgType ) {
+ public MsgBody msgType(int msgType) {
this.mMsgType = msgType;
return this;
}
- public MsgBody ack( boolean ack ) {
+ public MsgBody ack(boolean ack) {
this.mAck = ack;
return this;
}
- public MsgBody content( Object object ) {
+ public MsgBody content(Object object) {
this.mContent = object;
return this;
}
diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketManager.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketManager.java
new file mode 100644
index 0000000..a854ce2
--- /dev/null
+++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketManager.java
@@ -0,0 +1,209 @@
+package com.mogo.cloud.socket;
+
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.google.protobuf.ByteString;
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.utils.GsonUtil;
+import com.zhidao.locupload.Platform;
+import com.zhidao.ptech.connsvr.protocol.MogoConnsvr;
+import com.zhidao.socket.Callback;
+import com.zhidao.socket.CallbackManager;
+import com.zhidao.socket.Environment;
+import com.zhidao.socket.SocketClient;
+import com.zhidao.socket.SocketConfig;
+import com.zhidao.socket.utils.RequestUtil;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class SocketManager implements IMogoCloudSocketManager, Callback {
+
+ private static final String TAG = "SocketManager";
+ private static volatile SocketManager mInstance;
+ private MoGoAiCloudClientConfig cloudClientConfig;
+ private String mAppId;
+
+ private SocketManager() {
+ CallbackManager.getInstance().register(this);
+ cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ }
+
+ public static SocketManager getInstance() {
+ if (mInstance == null) {
+ synchronized (SocketManager.class) {
+ if (mInstance == null) {
+ mInstance = new SocketManager();
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ /**
+ * 管理消息分发
+ *
+ * key - msgType
+ */
+ private Map> mListeners = new ConcurrentHashMap<>();
+
+ /**
+ * 管理消息回执
+ *
+ * key - msgId
+ */
+ private Map mAckListeners = new ConcurrentHashMap<>();
+
+
+ public static final int MAX_CAP = 64; //保证充足的容量应对非常延时的推送
+ private final ArrayList mReceivedMsgId = new ArrayList<>(MAX_CAP);
+ private int mCurrentIndex = 0;
+
+ @Override
+ public void init(Context context, String appId) {
+ mAppId = appId;
+ SocketConfig.instance()
+ .setAppContext(context.getApplicationContext())
+ .setEnvironment(getEnvironment())
+ .setClient(Platform.getClient(Platform.car))
+ .setChannelId(SocketServicesConstants.SOCKET_CHANNEL_ID)
+ .setOpenAnalytics(true)
+ .setSn(cloudClientConfig.getSn())
+ .setDebug(cloudClientConfig.isShowDebugLog());
+ SocketClient.getInstance().start(context);
+ }
+
+ @Override
+ public void registerOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener) {
+ if (mListeners.containsKey(msgType)) {
+ Logger.w(TAG, "msgType %d is exist.", msgType);
+ }
+ if (!mListeners.containsKey(msgType)) {
+ mListeners.put(msgType, new ArrayList<>());
+ }
+ mListeners.get(msgType).add(listener);
+ }
+
+ @Override
+ public void unregisterOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener) {
+ if (listener == null) {
+ return;
+ }
+ if (!mListeners.containsKey(msgType)) {
+ return;
+ }
+ List listeners = mListeners.get(msgType);
+ if (listeners != null) {
+ listeners.remove(listener);
+ }
+ }
+
+ @Override
+ public void sendMsg(MsgBody body, IMogoCloudSocketMsgAckListener listener) {
+ Logger.d(TAG, "sendMsg.");
+ final byte[] pb = convertToPBBytes(body.getMsgType(), objectToBytes(body.getContent()));
+ RequestUtil.sendPayloadData(mAppId, 2, pb, 1, true, System.currentTimeMillis());
+ }
+
+ @Override
+ public void update(@NonNull CallbackManager manager, @NonNull byte[] message, String appId, long msgId) {
+ try {
+ MogoConnsvr.Payload payload = MogoConnsvr.Payload.parseFrom(message);
+ int msgType = payload.getMsgType();
+ Logger.d(TAG, "received msg type = %d", msgType);
+ List listeners = mListeners.get(msgType);
+ if (listeners != null && !listeners.isEmpty()) {
+ Iterator iterator = listeners.iterator();
+ if (msgId != 0) { //兼容老版本
+ if (mReceivedMsgId.contains(msgId)) { // 避免消息重发
+ return;
+ }
+ cacheLastReceivedMsgId(msgId);
+ }
+ Object object = null;
+ while (iterator.hasNext()) {
+ IMogoCloudSocketOnMessageListener listener = iterator.next();
+ if (object == null) {
+ object = GsonUtil.objectFromJson(payload.getPayload().toStringUtf8(), listener.target());
+ }
+ if (listener != null) {
+ Logger.d(TAG, "received msgId = %s, content = %s", msgId, payload.getPayload().toStringUtf8());
+ listener.onMsgReceived(object);
+ }
+ }
+ }
+ } catch (InvalidProtocolBufferException e) {
+ Logger.e(TAG, e, "parse msg error.");
+ }
+ }
+
+ private void cacheLastReceivedMsgId(long msgId) {
+ if (msgId == 0) {
+ return;
+ }
+ synchronized (this) {
+ mReceivedMsgId.add(mCurrentIndex % MAX_CAP, msgId);
+ mCurrentIndex++;
+ }
+ }
+
+ @Override
+ public void onAck(@NonNull CallbackManager manager, @NonNull byte[] headerBytes, byte[] content) {
+ try {
+ MogoConnsvr.Header header = MogoConnsvr.Header.parseFrom(headerBytes);
+ int msgType = header.getMsgType();
+ String appId = header.getAppId();
+ int productLine = header.getProductLine();
+ long msgId = header.getMsgId();
+ IMogoCloudSocketMsgAckListener listener = mAckListeners.remove(msgId);
+ if (listener != null) {
+ listener.onAck(msgId);
+ }
+ Logger.d(TAG, "send message success: msgType = %d, appId = %s, productLine = %d", msgType, appId, productLine);
+ } catch (InvalidProtocolBufferException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private Environment getEnvironment() {
+ switch (cloudClientConfig.getNetMode()) {
+ case 1:
+ return Environment.dev;
+ case 2:
+ case 4:
+ return Environment.qa;
+ case 3:
+ default:
+ return Environment.release;
+ }
+ }
+
+ public byte[] objectToBytes(Object obj) {
+ String jsonStr = GsonUtil.jsonFromObject(obj);
+ return jsonStr.getBytes();
+ }
+
+ private byte[] convertToPBBytes(int msgType, byte[] payloadBytes) {
+ MogoConnsvr.Payload payloadData = MogoConnsvr.Payload.newBuilder()
+ .setMsgType(msgType)
+ .setPayload(ByteString.copyFrom(payloadBytes)).build();
+ return payloadData.toByteArray();
+ }
+
+ public synchronized void release() {
+ mListeners.clear();
+ mListeners = null;
+ cloudClientConfig = null;
+ mInstance = null;
+ }
+
+}
diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketServicesConstants.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketServicesConstants.java
new file mode 100644
index 0000000..cfb4a91
--- /dev/null
+++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketServicesConstants.java
@@ -0,0 +1,12 @@
+package com.mogo.cloud.socket;
+
+import androidx.annotation.Keep;
+
+public class SocketServicesConstants {
+
+ /**
+ * 建立长链的通道ID
+ */
+ @Keep
+ public static final String SOCKET_CHANNEL_ID = "dataCrawler";
+}
diff --git a/modules/mogo-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java b/foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java
similarity index 91%
rename from modules/mogo-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java
rename to foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java
index d8e6d0a..e889224 100644
--- a/modules/mogo-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java
+++ b/foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java
@@ -1,4 +1,4 @@
-package com.mogo.realtime;
+package com.mogo.cloud.socket;
import org.junit.Test;
diff --git a/gradle.properties b/gradle.properties
index 3234342..5d0e279 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -17,9 +17,14 @@ org.gradle.jvmargs=-Xmx2048m
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
-
## maven 配置
RELEASE_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-releases/
SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/
USERNAME=xintai
-PASSWORD=xintai2018
\ No newline at end of file
+PASSWORD=xintai2018
+# AI CLOUD 云平台
+MOGO_CLOUD_COMMONS_VERSION= 1.0.0
+MOGO_CLOUD_HTTPDNS_VERSION= 1.0.0
+MOGO_CLOUD_PASSPORT_VERSION=1.0.0
+MOGO_CLOUD_TANLU_VERSION= 1.0.0
+MOGO_CLOUD_REALTIME_VERSION=1.0.0
\ No newline at end of file
diff --git a/modules/mogo-realtime/build.gradle b/modules/mogo-realtime/build.gradle
index 5c42fa5..e4d20e9 100644
--- a/modules/mogo-realtime/build.gradle
+++ b/modules/mogo-realtime/build.gradle
@@ -10,7 +10,6 @@ android {
versionCode 1
versionName "1.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
@@ -28,10 +27,7 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
- implementation 'androidx.appcompat:appcompat:1.1.0'
implementation project(path: ':foudations:mogo-passport')
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation project(":foudations:mogo-commons")
+ implementation project(":foudations:mogo-socket")
}
\ No newline at end of file
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/Imp/RealTimeProviderImp.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/Imp/RealTimeProviderImp.java
index 823d493..5f7ea6b 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/Imp/RealTimeProviderImp.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/Imp/RealTimeProviderImp.java
@@ -2,16 +2,11 @@ package com.mogo.realtime.Imp;
import android.content.Context;
-import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
import com.mogo.realtime.Interface.RealTimeProvider;
-import com.mogo.realtime.connect.IMogoOnMessageListener;
-import com.mogo.realtime.connect.MsgBody;
-import com.mogo.realtime.constant.SnapshotUploadInTime;
import com.mogo.realtime.entity.ADASRecognizedResult;
-import com.mogo.realtime.location.MogoRTKLocation;
import java.util.List;
-import java.util.Map;
/**
* @author liujing
@@ -23,11 +18,17 @@ public class RealTimeProviderImp implements RealTimeProvider {
@Override
public List getLastADASRecognizedResult() {
+ if (mDelegate != null) {
+ return mDelegate.getLastADASRecognizedResult();
+ }
return null;
}
@Override
public float getDistanceBetweenTwoPoints() {
+ if (mDelegate != null) {
+ return mDelegate.getDistanceBetweenTwoPoints();
+ }
return 0;
}
@@ -39,16 +40,17 @@ public class RealTimeProviderImp implements RealTimeProvider {
}
@Override
- public void registerOnMessageListener(int msgType, IMogoOnMessageListener listener) {
+ public void registerOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener) {
if (mDelegate != null) {
mDelegate.registerOnMessageListener(msgType, listener);
}
}
@Override
- public void sendMsg(MsgBody body, IMogoOnMessageListener listener) {
+ public void sendMsg(Object body, IMogoCloudSocketOnMessageListener listener) {
if (mDelegate != null) {
mDelegate.sendMsg(body, listener);
}
}
+
}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeApisHandler.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeApisHandler.java
index 46acb72..726744e 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeApisHandler.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeApisHandler.java
@@ -18,9 +18,13 @@ public final class RealTimeApisHandler {
return sInstance;
}
- public RealTimeServiceApis getApis(){
- if (sApis == null){
- synchronized (this){
+ public void initRealTimeEnvironment() {
+ //socketeinit locationinit rtkinit
+ }
+
+ public RealTimeServiceApis getApis() {
+ if (sApis == null) {
+ synchronized (this) {
// sApis = new RealTimeServiceApis();
}
}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeProvider.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeProvider.java
index e94f957..00bf758 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeProvider.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/Interface/RealTimeProvider.java
@@ -2,19 +2,17 @@ package com.mogo.realtime.Interface;
import android.content.Context;
-import com.mogo.realtime.connect.IMogoOnMessageListener;
-import com.mogo.realtime.connect.MsgBody;
+import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
import com.mogo.realtime.entity.ADASRecognizedResult;
import java.util.List;
-import java.util.Map;
/**
* @author liujing
* @description 描述
* @since: 2021/1/21
*/
-public interface RealTimeProvider {
+public interface RealTimeProvider {
/**
* 获取 adas 识别列表
*
@@ -28,7 +26,7 @@ public interface RealTimeProvider {
float getDistanceBetweenTwoPoints();
/**
- * 初始化,各模块不用关心
+ * 初始化
*
* @param context 上下文
* @param appId 一般为包名,不参与通道的建立,一般用于发消息
@@ -41,7 +39,7 @@ public interface RealTimeProvider {
* @param msgType 消息类型
* @param listener 回调
*/
- void registerOnMessageListener(int msgType, IMogoOnMessageListener listener);
+ void registerOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener);
/**
* 发送消息
@@ -49,5 +47,5 @@ public interface RealTimeProvider {
* @param body 消息体
* @param listener 回执监听
*/
- void sendMsg(MsgBody body, IMogoOnMessageListener listener );
+ void sendMsg(T body, IMogoCloudSocketOnMessageListener listener );
}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnMessageListener.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnMessageListener.java
deleted file mode 100644
index 136f8da..0000000
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnMessageListener.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.mogo.realtime.connect;
-
-/**
- * @author congtaowang
- * @since 2019-12-31
- *
- * 消息回调
- */
-public interface IMogoOnMessageListener< T > {
-
- Class< T > target();
-
- void onMsgReceived(T obj);
-}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/WebSocketMsgType.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/WebSocketMsgType.java
new file mode 100644
index 0000000..ec1f9a1
--- /dev/null
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/WebSocketMsgType.java
@@ -0,0 +1,24 @@
+package com.mogo.realtime.connect;
+
+public enum WebSocketMsgType {
+
+ MSG_TYPE_UPLINK_CAR_DATA(0,"自车与ADAS数据"),
+ MSG_TYPE_DOWNLINK_CAR_DATA(1,"服务端下发车辆信息"),
+ MSG_TYPE_ACK(3, "ACK");
+
+ private int msgType;
+ private String msg;
+
+ WebSocketMsgType(int msgType, String msg) {
+ this.msgType = msgType;
+ this.msg = msg;
+ }
+
+ public int getMsgType() {
+ return msgType;
+ }
+
+ public void setMsgType(int msgType) {
+ this.msgType = msgType;
+ }
+}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/constant/SnapshotUploadInTime.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/constant/SnapshotUploadInTime.java
index 9eeaa58..fda2750 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/constant/SnapshotUploadInTime.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/constant/SnapshotUploadInTime.java
@@ -9,9 +9,10 @@ import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudLocationInfo;
import com.mogo.realtime.location.LocationResult;
import com.mogo.realtime.location.MogoRTKLocation;
+import com.mogo.realtime.entity.OnePerSecondSendContent;
import com.mogo.realtime.util.MortonCode;
-import com.mogo.realtime.websocket.OnePerSecondSendContent;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -70,7 +71,7 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener
private void startSendCarLocationAndAdasRecognizedResult2Server(List cloudLocationInfo) {
CloudLocationInfo lastInfo = null;
// 如果数组内容不为空,就用数组最后一个值
- if (cloudLocationInfo != null && !cloudLocationInfo.isEmpty()) {
+ if (!cloudLocationInfo.isEmpty()) {
lastInfo = cloudLocationInfo.get(cloudLocationInfo.size() - 1);
mLastInfo = lastInfo;
}
@@ -86,13 +87,9 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener
locationResult.lastCoordinate = lastInfo;
locationResult.mortonCode = MortonCode.wrapEncodeMorton(lastInfo.getLon(), lastInfo.getLat());
}
-// locationResult.coordinates = new ArrayList<>();
+ locationResult.coordinates = new ArrayList<>();
locationResult.sn = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn();
-// if ( cloudLocationInfo == null ) {
-// locationResult.coordinates.addAll( new ArrayList<>() );
-// } else {
-// locationResult.coordinates.addAll( cloudLocationInfo );
-// }
+ locationResult.coordinates.addAll(cloudLocationInfo);
}
List recognizedResults = RealTimeApisHandler.getInstance().getApis().getRecognizedResultManager().getLastADASRecognizedResult();//外显接口返回
OnePerSecondSendContent content = new OnePerSecondSendContent();
@@ -104,23 +101,7 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener
Log.d(TAG, "no information 2 sent");
return;
}
+ //todo 发送socket msg
- //备注
- /*
- 等钟超SocketManagerSDK
- *
- MarkerServiceHandler.getApis().getWebSocketManagerApi( mContext ).sendMsg( content, new IMogoOnWebSocketMessageListener() {
- @Override
- public WebSocketMsgType getDownLinkType() {
- return null;
- }
-
- @Override
- public WebSocketMsgType getUpLinkType() {
- return WebSocketMsgType.MSG_TYPE_UPLINK_CAR_DATA;
- }
- } );
-
- */
}
}
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/websocket/LocationResult.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/LocationResult.java
similarity index 83%
rename from modules/mogo-realtime/src/main/java/com/mogo/realtime/websocket/LocationResult.java
rename to modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/LocationResult.java
index 25ed4f2..f2fc85e 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/websocket/LocationResult.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/LocationResult.java
@@ -1,8 +1,6 @@
-package com.mogo.realtime.websocket;
+package com.mogo.realtime.entity;
-import com.mogo.realtime.entity.CloudLocationInfo;
-
import java.util.List;
public
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/websocket/OnePerSecondSendContent.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/OnePerSecondSendContent.java
similarity index 81%
rename from modules/mogo-realtime/src/main/java/com/mogo/realtime/websocket/OnePerSecondSendContent.java
rename to modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/OnePerSecondSendContent.java
index 5ec0a3a..671cec0 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/websocket/OnePerSecondSendContent.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/OnePerSecondSendContent.java
@@ -1,7 +1,6 @@
-package com.mogo.realtime.websocket;
+package com.mogo.realtime.entity;
-import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.location.LocationResult;
import java.util.List;
diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/location/MogoRTKLocation.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/location/MogoRTKLocation.java
index d515844..38c57fe 100644
--- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/location/MogoRTKLocation.java
+++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/location/MogoRTKLocation.java
@@ -3,7 +3,6 @@ package com.mogo.realtime.location;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
diff --git a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java
index d76d728..f274ef7 100644
--- a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java
+++ b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/UploadManager.java
@@ -5,19 +5,30 @@ import android.util.Log;
import com.google.gson.Gson;
import com.mogo.cloud.commons.network.RetrofitFactory;
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback;
import com.mogo.cloud.tanlu.api.ITanluUploadCallback;
import com.mogo.cloud.tanlu.bean.InformationBody;
+import com.mogo.cloud.tanlu.bean.RoadInfoRequest;
+import com.mogo.cloud.tanlu.bean.RoadInfos;
import com.mogo.cloud.tanlu.bean.UploadResult;
+import com.mogo.cloud.tanlu.bean.location.Location;
+import com.mogo.cloud.tanlu.bean.location.MogoLocation;
import com.mogo.cloud.tanlu.net.TanluApiService;
-import com.mogo.cloud.passport.MoGoAiCloudClient;
-
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
+import com.mogo.utils.network.utils.GsonUtil;
import java.util.HashMap;
import java.util.Map;
-
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
+import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
/**
@@ -94,8 +105,153 @@ public class UploadManager {
}
+ /**
+ * 通过经纬度信息查询 TanluModelData
+ * @param roadInfoRequest
+ * @param callback
+ */
+ public void queryRoadInfoByLocationInfo(RoadInfoRequest roadInfoRequest, IRoadInfoSearchCallback callback) {
+
+ Map map = new HashMap<>();
+ map.put("sn", "F803EB2046PZD00228");
+ map.put("data", GsonUtil.jsonFromObject(roadInfoRequest));
+
+ apiService.queryRoadInfos(map)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.d(TAG, "queryRoadInfos onSubscribe ----");
+ }
+
+ @Override
+ public void onNext(@NonNull RoadInfos roadInfos) {
+ Log.d(TAG, "queryRoadInfos onNext roadInfos----" + roadInfos.getData());
+ callback.onSuccess(roadInfos);
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.d(TAG, "queryRoadInfos onError ----");
+ callback.onError(e);
+ }
+
+ @Override
+ public void onComplete() {
+ Log.d(TAG, "queryRoadInfos onComplete ----");
+ }
+ });
+ }
+// public void queryRoadInfoByCity(InformationBody informationBody, ITanluUploadCallback callback) {
+//
+// if (voiceCmdData.isHere()) { //TanluModelData
+// // 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端
+// MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
+// Location location = new Location(l.getLatitude(), l.getLongitude());
+// RoadInfoRequest request;
+// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
+// // 拥堵和路况同时查
+// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
+// }else{
+// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
+// }
+//
+// Map map = new HashMap<>();
+// map.put("sn", "F803EB2046PZD00228");
+// map.put("data", "GsonUtil.jsonFromObject(request)");
+//
+// apiService.queryRoadInfos(map)
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new Observer() {
+// @Override
+// public void onSubscribe(@NonNull Disposable d) {
+// Log.d(TAG, "queryRoadInfos onSubscribe ----");
+// }
+//
+// @Override
+// public void onNext(@NonNull RoadInfos roadInfos) {
+// Log.d(TAG, "queryRoadInfos onNext roadInfos----" + roadInfos.getData());
+// }
+//
+// @Override
+// public void onError(@NonNull Throwable e) {
+// Log.d(TAG, "queryRoadInfos onError ----");
+// }
+//
+// @Override
+// public void onComplete() {
+// Log.d(TAG, "queryRoadInfos onComplete ----");
+// }
+// });
+// } else {
+// // 查询的不是附近的信息,所以需要查询一下目标地址的经纬度,然后再请求服务端
+// Observable.create(new ObservableOnSubscribe() {
+// @Override
+// public void subscribe(ObservableEmitter emitter) throws Exception {
+// // 根据传入的地址,转成经纬度
+// IMogoMapService mapService = TanluServiceManager.getServiceApis().getMapServiceApi();
+// String cityCode = mapService.getSingletonLocationClient(mContext).getLastKnowLocation().getCityCode();
+// MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(voiceCmdData.getLocation(), "", cityCode);
+// IMogoPoiSearch poiSearch = mapService.getPoiSearch(mContext, poiSearchQuery);
+// MogoPoiResult result = poiSearch.searchPOI();
+// if (result != null && result.getPois() != null && result.getPois().size() > 0) {
+// emitter.onNext(result);
+// } else {
+// emitter.onError(new IllegalArgumentException("没有根据地址查询到对应的经纬度"));
+// }
+// }
+// }).subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
+// .flatMap(new Function>>() {
+// @Override
+// public Observable> apply(MogoPoiResult mogoPoiResult) throws Exception {
+// // 转成经纬度后,整理参数,进行接口请求
+// Logger.d(TAG, "查询目标地址经纬度成功===" + Thread.currentThread().getName());
+// MogoPoiItem poiItem = mogoPoiResult.getPois().get(0);
+// Location location = new Location(poiItem.getPoint().lat, poiItem.getPoint().lon);
+// callback.onLocatSuccess(location.getLat(), location.getLon());
+// RoadInfoRequest request;
+// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
+// // 拥堵和路况同时查
+// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
+// }else{
+// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
+// }
+//
+// Map params = new ParamsProvider.Builder(mContext)
+// .append("sn", Utils.getSn())
+// .append("data", GsonUtil.jsonFromObject(request))
+// .build();
+// return mShareApiService.queryRoadInfos(params);
+// }
+// }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new SubscribeImpl>(RequestOptions.create(mContext)) {
+// @Override
+// public void onError(Throwable e) {
+// super.onError(e);
+// callback.onQueryRoadInfoFail(e.getMessage(), -1);
+// }
+//
+// @Override
+// public void onSuccess(BaseDataCompat o) {
+// super.onSuccess(o);
+// Logger.d(TAG, "当前线程为"+Thread.currentThread().getName()+" 搜索目标地址路况信息成功: " + o);
+// callback.onQueryRoadInfoSuccess(o.getResult().getData());
+// }
+//
+// @Override
+// public void onError(String message, int code) {
+// super.onError(message, code);
+// callback.onQueryRoadInfoFail(message, code);
+// }
+// });
+// }
+// }
+
+
}
diff --git a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java
index 6f0955f..2800b62 100644
--- a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java
+++ b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfoRequest.java
@@ -55,4 +55,13 @@ public class RoadInfoRequest {
this.onlySameCity = onlySameCity;
}
+ @Override
+ public String toString() {
+ return "RoadInfoRequest{" +
+ "location=" + location +
+ ", poiTypes=" + poiTypes +
+ ", onlyFocus=" + onlyFocus +
+ ", onlySameCity=" + onlySameCity +
+ '}';
+ }
}
diff --git a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java
index 9a5fe69..d94f4b7 100644
--- a/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java
+++ b/modules/mogo-tanlu/src/main/java/com/mogo/cloud/tanlu/bean/RoadInfos.java
@@ -7,7 +7,7 @@ import java.util.List;
* @description
* @since 2021/1/20
*/
-public class RoadInfos {
+public class RoadInfos{
private List data;
diff --git a/settings.gradle b/settings.gradle
index 53c04a8..364e7ed 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,4 +1,6 @@
-include ':modules:mogo-realtime'
+include ':foudations:mogo-socket'
+include ':modules:mogo-cloud.realtime'
+include ':modules:cloud.realtime'
include ':modules:mogo-tanlu'
include ':foudations:mogo-commons'
include ':foudations:mogo-httpdns'