From 2cc278a48d7bde230bdf2954947c7f148e493cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 21 Jan 2021 20:37:37 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=20isNeedUploadC?= =?UTF-8?q?oordinatesDurationInTime=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/cloud/MoGoApplication.java | 1 + .../cloud/passport/MoGoAiCloudClientConfig.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/app/src/main/java/com/mogo/cloud/MoGoApplication.java b/app/src/main/java/com/mogo/cloud/MoGoApplication.java index d9dc6ca..56f6ed5 100644 --- a/app/src/main/java/com/mogo/cloud/MoGoApplication.java +++ b/app/src/main/java/com/mogo/cloud/MoGoApplication.java @@ -28,6 +28,7 @@ public class MoGoApplication extends Application { clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_QA); clientConfig.setThirdLogin(true); clientConfig.setShowDebugLog(true); + clientConfig.setNeedUploadCoordinatesDurationInTime(true); clientConfig.setThirdPartyAppKey("bydauto"); clientConfig.setThirdPartyDeviceId("bydauto"); clientConfig.setLoopCheckDelay(15 * 1000); diff --git a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClientConfig.java b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClientConfig.java index cf67ca3..7a11241 100644 --- a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClientConfig.java +++ b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClientConfig.java @@ -56,6 +56,11 @@ public class MoGoAiCloudClientConfig { */ private long mLoopCheckDelay; + /** + * 是否上传当前位置信息 + */ + private boolean isNeedUploadCoordinatesDurationInTime; + /** * 设置HttpDns的位置监听 */ @@ -237,6 +242,14 @@ public class MoGoAiCloudClientConfig { mIHttpDnsCurrentLocation = IHttpDnsCurrentLocation; } + public boolean isNeedUploadCoordinatesDurationInTime() { + return isNeedUploadCoordinatesDurationInTime; + } + + public void setNeedUploadCoordinatesDurationInTime(boolean needUploadCoordinatesDurationInTime) { + isNeedUploadCoordinatesDurationInTime = needUploadCoordinatesDurationInTime; + } + @Override public String toString() { return "MoGoAiCloudClientConfig{" + @@ -249,6 +262,7 @@ public class MoGoAiCloudClientConfig { ", token='" + token + '\'' + ", sn='" + sn + '\'' + ", mLoopCheckDelay=" + mLoopCheckDelay + + ", isNeedUploadCoordinatesDurationInTime=" + isNeedUploadCoordinatesDurationInTime + ", mIHttpDnsCurrentLocation=" + mIHttpDnsCurrentLocation + '}'; } From df8aba0a4a970e55c6e7ab9cf2082f44e94b23f0 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 21 Jan 2021 21:01:04 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[add]=20socket+rtk+location=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - .../realtime/Imp/RealTimeProviderImp.java | 10 ++++++- .../Interface/RealTimeApisHandler.java | 10 ++++--- .../realtime/Interface/RealTimeProvider.java | 7 ++--- .../IMogoOnWebSocketMessageListener.java | 27 +++++++++++++++++++ .../realtime/connect/WebSocketMsgType.java | 24 +++++++++++++++++ .../constant/SnapshotUploadInTime.java | 14 +++++----- 7 files changed, 77 insertions(+), 16 deletions(-) create mode 100644 modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java create mode 100644 modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/WebSocketMsgType.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 79d11f0..978f4dc 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -22,7 +22,6 @@ 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..a20be10 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 @@ -5,6 +5,7 @@ import android.content.Context; import com.mogo.cloud.passport.MoGoAiCloudClient; import com.mogo.realtime.Interface.RealTimeProvider; import com.mogo.realtime.connect.IMogoOnMessageListener; +import com.mogo.realtime.connect.IMogoOnWebSocketMessageListener; import com.mogo.realtime.connect.MsgBody; import com.mogo.realtime.constant.SnapshotUploadInTime; import com.mogo.realtime.entity.ADASRecognizedResult; @@ -23,11 +24,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; } @@ -46,9 +53,10 @@ public class RealTimeProviderImp implements RealTimeProvider { } @Override - public void sendMsg(MsgBody body, IMogoOnMessageListener listener) { + public void sendMsg(Object body, IMogoOnWebSocketMessageListener 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..b05bba9 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 @@ -3,6 +3,7 @@ package com.mogo.realtime.Interface; import android.content.Context; import com.mogo.realtime.connect.IMogoOnMessageListener; +import com.mogo.realtime.connect.IMogoOnWebSocketMessageListener; import com.mogo.realtime.connect.MsgBody; import com.mogo.realtime.entity.ADASRecognizedResult; @@ -14,7 +15,7 @@ import java.util.Map; * @description 描述 * @since: 2021/1/21 */ -public interface RealTimeProvider { +public interface RealTimeProvider { /** * 获取 adas 识别列表 * @@ -28,7 +29,7 @@ public interface RealTimeProvider { float getDistanceBetweenTwoPoints(); /** - * 初始化,各模块不用关心 + * 初始化 * * @param context 上下文 * @param appId 一般为包名,不参与通道的建立,一般用于发消息 @@ -49,5 +50,5 @@ public interface RealTimeProvider { * @param body 消息体 * @param listener 回执监听 */ - void sendMsg(MsgBody body, IMogoOnMessageListener listener ); + void sendMsg(T body, IMogoOnWebSocketMessageListener listener ); } diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java new file mode 100644 index 0000000..4ef247e --- /dev/null +++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java @@ -0,0 +1,27 @@ +package com.mogo.realtime.connect; + +/** + * 消息回调 + */ +public interface IMogoOnWebSocketMessageListener { + + default WebSocketMsgType getDownLinkType() { + return null; + } + + default WebSocketMsgType getUpLinkType() { + return null; + } + + default Class target() { + return null; + } + + default void onMsgReceived(T obj) { + + } + + default void onError(String errorMsg) { + + } +} 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..b4aa7d2 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 @@ -5,6 +5,9 @@ import android.util.Log; import com.mogo.cloud.passport.MoGoAiCloudClient; import com.mogo.realtime.Interface.RealTimeApisHandler; +import com.mogo.realtime.connect.IMogoOnMessageListener; +import com.mogo.realtime.connect.IMogoOnWebSocketMessageListener; +import com.mogo.realtime.connect.WebSocketMsgType; import com.mogo.realtime.entity.ADASRecognizedResult; import com.mogo.realtime.entity.CloudLocationInfo; import com.mogo.realtime.location.LocationResult; @@ -105,11 +108,7 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener return; } - //备注 - /* - 等钟超SocketManagerSDK - * - MarkerServiceHandler.getApis().getWebSocketManagerApi( mContext ).sendMsg( content, new IMogoOnWebSocketMessageListener() { + RealTimeApisHandler.getInstance().getApis().getRecognizedResultManager().sendMsg(content, new IMogoOnWebSocketMessageListener() { @Override public WebSocketMsgType getDownLinkType() { return null; @@ -117,10 +116,9 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener @Override public WebSocketMsgType getUpLinkType() { - return WebSocketMsgType.MSG_TYPE_UPLINK_CAR_DATA; + return null; } - } ); + }); - */ } } From fe48e2371b31dbc7bba9e396febf25aec84e027d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 21 Jan 2021 21:12:10 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86maven=E5=BE=97?= =?UTF-8?q?=E5=88=B0=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - foudations/mogo-commons/gradle.properties | 2 +- foudations/mogo-passport/gradle.properties | 2 +- gradle.properties | 9 +++++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 79d11f0..978f4dc 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -22,7 +22,6 @@ diff --git a/foudations/mogo-commons/gradle.properties b/foudations/mogo-commons/gradle.properties index 5ced2da..ac8dffd 100644 --- a/foudations/mogo-commons/gradle.properties +++ b/foudations/mogo-commons/gradle.properties @@ -1,4 +1,4 @@ GROUP=com.mogo.cloud POM_ARTIFACT_ID=commons VERSION_CODE=1 -VERSION_NAME=1.0.1-snapshots \ No newline at end of file +VERSION_NAME=1.0.1-SNAPSHOT \ No newline at end of file diff --git a/foudations/mogo-passport/gradle.properties b/foudations/mogo-passport/gradle.properties index b35e34d..81fbcd5 100644 --- a/foudations/mogo-passport/gradle.properties +++ b/foudations/mogo-passport/gradle.properties @@ -1,4 +1,4 @@ GROUP=com.mogo.cloud POM_ARTIFACT_ID=passport VERSION_CODE=1 -VERSION_NAME=1.0.0 \ No newline at end of file +VERSION_NAME=1.0.0-SNAPSHOT \ No newline at end of file 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 From cc54a55f9c3c8c75db942f5bcf5d971bf97dee33 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Fri, 22 Jan 2021 10:22:13 +0800 Subject: [PATCH 4/7] opt --- .../com/mogo/cloud/tanlu/UploadManager.java | 162 +++++++++++++++++- .../cloud/tanlu/bean/RoadInfoRequest.java | 9 + .../com/mogo/cloud/tanlu/bean/RoadInfos.java | 2 +- 3 files changed, 169 insertions(+), 4 deletions(-) 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; From eb64ce17df660e306fca135890c4b41c01ba54bb Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 22 Jan 2021 10:47:20 +0800 Subject: [PATCH 5/7] add socketModule --- .idea/gradle.xml | 2 + foudations/mogo-socket/.gitignore | 1 + foudations/mogo-socket/build.gradle | 38 ++++ foudations/mogo-socket/consumer-rules.pro | 0 foudations/mogo-socket/gradle.properties | 4 + foudations/mogo-socket/proguard-rules.pro | 21 ++ .../cloud/socket/ExampleInstrumentedTest.java | 26 +++ .../mogo-socket/src/main/AndroidManifest.xml | 5 + .../cloud/socket/IMogoCloudSocketManager.java | 42 ++++ .../IMogoCloudSocketMsgAckListener.java | 13 ++ .../IMogoCloudSocketOnMessageListener.java | 11 + .../java/com/mogo/cloud/socket/MsgBody.java | 58 +++++ .../com/mogo/cloud/socket/SocketManager.java | 209 ++++++++++++++++++ .../cloud/socket/SocketServicesConstants.java | 12 + .../mogo/cloud/socket/ExampleUnitTest.java | 17 ++ settings.gradle | 2 +- 16 files changed, 460 insertions(+), 1 deletion(-) create mode 100644 foudations/mogo-socket/.gitignore create mode 100644 foudations/mogo-socket/build.gradle create mode 100644 foudations/mogo-socket/consumer-rules.pro create mode 100644 foudations/mogo-socket/gradle.properties create mode 100644 foudations/mogo-socket/proguard-rules.pro create mode 100644 foudations/mogo-socket/src/androidTest/java/com/mogo/cloud/socket/ExampleInstrumentedTest.java create mode 100644 foudations/mogo-socket/src/main/AndroidManifest.xml create mode 100644 foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketManager.java create mode 100644 foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketMsgAckListener.java create mode 100644 foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketOnMessageListener.java create mode 100644 foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java create mode 100644 foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketManager.java create mode 100644 foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/SocketServicesConstants.java create mode 100644 foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2c52dd3..ec8f062 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -16,6 +16,7 @@ diff --git a/foudations/mogo-socket/.gitignore b/foudations/mogo-socket/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/foudations/mogo-socket/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/foudations/mogo-socket/build.gradle b/foudations/mogo-socket/build.gradle new file mode 100644 index 0000000..70812dc --- /dev/null +++ b/foudations/mogo-socket/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + // 长链 + implementation 'com.zhidao.socket:built-in-socket:1.0.17' + // 上报位置 + implementation 'com.zhidao.locupload:loc-upload-sdk:1.1.7' + implementation project(path: ':foudations:mogo-passport') + api rootProject.ext.dependencies.mogoutils +} + +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() \ No newline at end of file diff --git a/foudations/mogo-socket/consumer-rules.pro b/foudations/mogo-socket/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/foudations/mogo-socket/gradle.properties b/foudations/mogo-socket/gradle.properties new file mode 100644 index 0000000..59ae673 --- /dev/null +++ b/foudations/mogo-socket/gradle.properties @@ -0,0 +1,4 @@ +GROUP=com.mogo.cloud +POM_ARTIFACT_ID=socket +VERSION_CODE=1 +VERSION_NAME=1.0.0 \ No newline at end of file diff --git a/foudations/mogo-socket/proguard-rules.pro b/foudations/mogo-socket/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/foudations/mogo-socket/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/foudations/mogo-socket/src/androidTest/java/com/mogo/cloud/socket/ExampleInstrumentedTest.java b/foudations/mogo-socket/src/androidTest/java/com/mogo/cloud/socket/ExampleInstrumentedTest.java new file mode 100644 index 0000000..8d55435 --- /dev/null +++ b/foudations/mogo-socket/src/androidTest/java/com/mogo/cloud/socket/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.mogo.cloud.socket; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.mogo.cloud.socket.test", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/foudations/mogo-socket/src/main/AndroidManifest.xml b/foudations/mogo-socket/src/main/AndroidManifest.xml new file mode 100644 index 0000000..04bb196 --- /dev/null +++ b/foudations/mogo-socket/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketManager.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketManager.java new file mode 100644 index 0000000..d8b4c7f --- /dev/null +++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketManager.java @@ -0,0 +1,42 @@ +package com.mogo.cloud.socket; + +import android.content.Context; + + +/** + * socket 长链 + */ +public interface IMogoCloudSocketManager { + + /** + * 初始化,各模块不用关心 + * + * @param context 上下文 + * @param appId 一般为包名,不参与通道的建立,一般用于发消息 + */ + void init(Context context, String appId); + + /** + * 注册消息监听 + * + * @param msgType 消息类型 + * @param listener 回调 + */ + void registerOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener); + + /** + * 注销消息监听 + * + * @param msgType 消息类型 + * @param listener 回调 + */ + void unregisterOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener); + + /** + * 发送消息 + * + * @param body 消息体 + * @param listener 回执监听 + */ + void sendMsg(MsgBody body, IMogoCloudSocketMsgAckListener listener); +} diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketMsgAckListener.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketMsgAckListener.java new file mode 100644 index 0000000..af0dfff --- /dev/null +++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketMsgAckListener.java @@ -0,0 +1,13 @@ +package com.mogo.cloud.socket; + +/** + * 消息回执监听 + */ +public interface IMogoCloudSocketMsgAckListener { + + /** + * 长连接消息回执 + * msgId: 消息id + */ + void onAck(long msgId); +} diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketOnMessageListener.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketOnMessageListener.java new file mode 100644 index 0000000..720b18e --- /dev/null +++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/IMogoCloudSocketOnMessageListener.java @@ -0,0 +1,11 @@ +package com.mogo.cloud.socket; + +/** + * 消息回调 + */ +public interface IMogoCloudSocketOnMessageListener { + + Class target(); + + void onMsgReceived(T obj); +} diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java new file mode 100644 index 0000000..d23d032 --- /dev/null +++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/MsgBody.java @@ -0,0 +1,58 @@ +package com.mogo.cloud.socket; + +/** + * 描述 + */ +public class MsgBody { + + /** + * 消息类型 + */ + private int mMsgType; + + /** + * 是否回执 + */ + private boolean mAck = false; + + /** + * 消息ID + */ + private final long mMsgId = System.currentTimeMillis(); + + /** + * 消息内容 + */ + private Object mContent; + + public MsgBody msgType(int msgType) { + this.mMsgType = msgType; + return this; + } + + public MsgBody ack(boolean ack) { + this.mAck = ack; + return this; + } + + public MsgBody content(Object object) { + this.mContent = object; + return this; + } + + public int getMsgType() { + return mMsgType; + } + + public boolean isAck() { + return mAck; + } + + public long getMsgId() { + return mMsgId; + } + + public Object getContent() { + return mContent; + } +} 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/foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java b/foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java new file mode 100644 index 0000000..e889224 --- /dev/null +++ b/foudations/mogo-socket/src/test/java/com/mogo/cloud/socket/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.mogo.cloud.socket; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index d4cc957..5156a21 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ -include ':modules:mogo-realtime' +include ':foudations:mogo-socket' include ':modules:mogo-realtime' include ':modules:realtime' include ':modules:mogo-tanlu' From a49a1227e0f6337f5dc341ffe14786b4fac23a3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 22 Jan 2021 11:09:03 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.gradle | 140 +++++++++++++++++++++++++------------------------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/config.gradle b/config.gradle index 9c5ae19..28a1aaf 100644 --- a/config.gradle +++ b/config.gradle @@ -2,122 +2,122 @@ ext { time = "" kotlin_version = "1.4.10" android = [ - compileSdkVersion : 28, - buildToolsVersion : "29.0.2", - minSdkVersion : 19, - targetSdkVersion : 22, + compileSdkVersion: 28, + buildToolsVersion: "29.0.2", + minSdkVersion : 19, + targetSdkVersion : 22, ] dependencies = [ // androidx - androidxappcompat : "androidx.appcompat:appcompat:1.1.0", - androidxccorektx : "androidx.core:core-ktx:1.3.2", - androidxconstraintlayout : "androidx.constraintlayout:constraintlayout:1.1.3", - boostmultidex : "com.bytedance.boost_multidex:boost_multidex:1.0.1", - androidxviewpager2 : "androidx.viewpager2:viewpager2:1.0.0", - androidxrecyclerview : "androidx.recyclerview:recyclerview:1.1.0", - androidxcardview : "androidx.cardview:cardview:1.0.0", - localbroadcastmanager : "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0", + androidxappcompat : "androidx.appcompat:appcompat:1.1.0", + androidxccorektx : "androidx.core:core-ktx:1.3.2", + androidxconstraintlayout : "androidx.constraintlayout:constraintlayout:1.1.3", + boostmultidex : "com.bytedance.boost_multidex:boost_multidex:1.0.1", + androidxviewpager2 : "androidx.viewpager2:viewpager2:1.0.0", + androidxrecyclerview : "androidx.recyclerview:recyclerview:1.1.0", + androidxcardview : "androidx.cardview:cardview:1.0.0", + localbroadcastmanager : "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0", // flexbox - flexbox : 'com.google.android:flexbox:2.0.1', + flexbox : 'com.google.android:flexbox:2.0.1', // 测试 - junit : "junit:junit:4.12", - androidxjunit : "androidx.test.ext:junit:1.1.0", - androidxespressocore : "androidx.test.espresso:espresso-core:3.1.1", + junit : "junit:junit:4.12", + androidxjunit : "androidx.test.ext:junit:1.1.0", + androidxespressocore : "androidx.test.espresso:espresso-core:3.1.1", // 地图 - amapnavi3dmap : "com.amap.api:navi-3dmap:7.2.0_3dmap7.2.0", - amapsearch : "com.amap.api:search:7.1.0", - amaplocation : "com.amap.api:location:5.2.0", + amapnavi3dmap : "com.amap.api:navi-3dmap:7.2.0_3dmap7.2.0", + amapsearch : "com.amap.api:search:7.1.0", + amaplocation : "com.amap.api:location:5.2.0", // json 转换 - gson : "com.google.code.gson:gson:2.8.4", + gson : "com.google.code.gson:gson:2.8.4", // 内存泄漏检测 - debugleakcanary : "com.squareup.leakcanary:leakcanary-android:1.6.1", - releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", - testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", + debugleakcanary : "com.squareup.leakcanary:leakcanary-android:1.6.1", + releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", + testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", //rxJava - rxjava : "io.reactivex.rxjava2:rxjava:2.2.2", - rxandroid : "io.reactivex.rxjava2:rxandroid:2.1.0", + rxjava : "io.reactivex.rxjava2:rxjava:2.2.2", + rxandroid : "io.reactivex.rxjava2:rxandroid:2.1.0", // arouter - arouter : "com.alibaba:arouter-api:1.5.0", - aroutercompiler : "com.alibaba:arouter-compiler:1.2.2", + arouter : "com.alibaba:arouter-api:1.5.0", + aroutercompiler : "com.alibaba:arouter-compiler:1.2.2", // glide - glide : 'com.github.bumptech.glide:glide:4.8.0', - glideokhttp3 : 'com.github.bumptech.glide:okhttp3-integration:4.8.0', - glideanno : 'com.github.bumptech.glide:annotations:4.8.0', - glidecompiler : 'com.github.bumptech.glide:compiler:4.8.0', - supportannos : "com.android.support:support-annotations:28.0.0", - okhttpinterceptor : "com.squareup.okhttp3:logging-interceptor:3.12.0", + glide : 'com.github.bumptech.glide:glide:4.8.0', + glideokhttp3 : 'com.github.bumptech.glide:okhttp3-integration:4.8.0', + glideanno : 'com.github.bumptech.glide:annotations:4.8.0', + glidecompiler : 'com.github.bumptech.glide:compiler:4.8.0', + supportannos : "com.android.support:support-annotations:28.0.0", + okhttpinterceptor : "com.squareup.okhttp3:logging-interceptor:3.12.0", // fresco - fresco : 'com.facebook.fresco:fresco:1.9.0', + fresco : 'com.facebook.fresco:fresco:1.9.0', // 公司服务 - 语音 - aiassist : "com.zhidaoauto.common:service:1.0.8.4", + aiassist : "com.zhidaoauto.common:service:1.0.8.4", // 语音替换方案 暂时只用TTS 解决焦点问题 - aiassistReplace : "com.zhidao.mogoVoicesdk:voice:1.0.5", + aiassistReplace : "com.zhidao.mogoVoicesdk:voice:1.0.5", // 公司服务 - 埋点 - analytics : "com.elegant.analytics:analytics:1.1.28", + analytics : "com.elegant.analytics:analytics:1.1.28", - retrofit : "com.squareup.retrofit2:retrofit:2.6.0", - retrofitadapter : "com.squareup.retrofit2:adapter-rxjava2:2.6.0", - retrofitconvertergson : "com.squareup.retrofit2:converter-gson:2.6.0", - retrofitconverterscalars : "com.squareup.retrofit2:converter-scalars:2.1.0", + retrofit : "com.squareup.retrofit2:retrofit:2.6.0", + retrofitadapter : "com.squareup.retrofit2:adapter-rxjava2:2.6.0", + retrofitconvertergson : "com.squareup.retrofit2:converter-gson:2.6.0", + retrofitconverterscalars : "com.squareup.retrofit2:converter-scalars:2.1.0", // leakcanary - leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4', - leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', + leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4', + leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', // add for room - room : "android.arch.persistence.room:runtime:1.1.1", - roomAnnotationProcessor : 'android.arch.persistence.room:compiler:1.1.1', + room : "android.arch.persistence.room:runtime:1.1.1", + roomAnnotationProcessor : 'android.arch.persistence.room:compiler:1.1.1', // rxjava2 with room - roomRxjava : "android.arch.persistence.room:rxjava2:1.1.1", + roomRxjava : "android.arch.persistence.room:rxjava2:1.1.1", // material - material : 'com.google.android.material:material:1.1.0', + material : 'com.google.android.material:material:1.1.0', - indicator : 'com.github.zhpanvip:viewpagerindicator:1.0.4', + indicator : 'com.github.zhpanvip:viewpagerindicator:1.0.4', // - jetbrainsannotationsjava5 : "org.jetbrains:annotations-java5:15.0", + jetbrainsannotationsjava5: "org.jetbrains:annotations-java5:15.0", // 统一登录 - accountsdk : "com.zhidao.accountservice:account-sdk:1.0.18", + accountsdk : "com.zhidao.accountservice:account-sdk:1.0.18", // crash - crashSdk : "com.zhidaoauto.crash.log:library:1.0.5", + crashSdk : "com.zhidaoauto.crash.log:library:1.0.5", //探路 - videoarmv7 : "com.shuyu:gsyVideoPlayer-armv7a:7.1.2", - videoarm64 : "com.shuyu:gsyVideoPlayer-arm64:7.1.2", - videojava : "com.shuyu:gsyVideoPlayer-java:7.1.2", - eventbus : "org.greenrobot:eventbus:3.1.1", - videoprocessor : "com.zhidao.video:video-processor:1.0.2.1", - livesdk : "com.tencent.liteavsdk:LiteAVSDK_Smart:7.4.9211", + videoarmv7 : "com.shuyu:gsyVideoPlayer-armv7a:7.1.2", + videoarm64 : "com.shuyu:gsyVideoPlayer-arm64:7.1.2", + videojava : "com.shuyu:gsyVideoPlayer-java:7.1.2", + eventbus : "org.greenrobot:eventbus:3.1.1", + videoprocessor : "com.zhidao.video:video-processor:1.0.2.1", + livesdk : "com.tencent.liteavsdk:LiteAVSDK_Smart:7.4.9211", - coroutinescore : "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3", - coroutinesandroid : "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3", + coroutinescore : "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3", + coroutinesandroid : "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3", - aspectj : "org.aspectj:aspectjrt:1.8.9", + aspectj : "org.aspectj:aspectjrt:1.8.9", - adasapi : "com.zhidao.autopilot.support:adas:1.0.6.6", - adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.1.5.2", + adasapi : "com.zhidao.autopilot.support:adas:1.0.6.6", + adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.1.5.2", // 个人中心的SDK - personalsdk : "com.zhidaoauto.person.info:data:1.0.1", + personalsdk : "com.zhidaoauto.person.info:data:1.0.1", // obu sdk - obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", + obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", // google - googlezxing : "com.google.zxing:core:3.3.3", - litezxing : "com.google.zxing:litezxing:1.0.29.8", + googlezxing : "com.google.zxing:core:3.3.3", + litezxing : "com.google.zxing:litezxing:1.0.29.8", // android - room - androidxroomruntime : "androidx.room:room-runtime:2.2.3", - androidxroomcompiler : "androidx.room:room-compiler:2.2.3", - androidxroomktx : "androidx.room:room-ktx:2.2.3", + androidxroomruntime : "androidx.room:room-runtime:2.2.3", + androidxroomcompiler : "androidx.room:room-compiler:2.2.3", + androidxroomktx : "androidx.room:room-ktx:2.2.3", - mogoutils : "com.mogo.commons:mogo-utils:2.0.12", + mogoutils : "com.mogo.commons:mogo-utils:2.0.12", ] From e515edd5d957ffb01d4070aef3fc304f5e096359 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 22 Jan 2021 16:25:10 +0800 Subject: [PATCH 7/7] change upload of socket unc --- .idea/gradle.xml | 1 + modules/mogo-realtime/build.gradle | 6 +- .../realtime/ExampleInstrumentedTest.java | 26 ------- .../realtime/Imp/RealTimeProviderImp.java | 12 +--- .../realtime/Interface/RealTimeProvider.java | 9 +-- .../connect/IMogoOnMessageListener.java | 14 ---- .../IMogoOnWebSocketMessageListener.java | 27 ------- .../com/mogo/realtime/connect/MsgBody.java | 71 ------------------- .../constant/SnapshotUploadInTime.java | 28 ++------ .../{socket => entity}/LocationResult.java | 4 +- .../OnePerSecondSendContent.java | 3 +- .../realtime/location/MogoRTKLocation.java | 1 - .../com/mogo/realtime/ExampleUnitTest.java | 17 ----- settings.gradle | 4 +- 14 files changed, 18 insertions(+), 205 deletions(-) delete mode 100644 modules/mogo-realtime/src/androidTest/java/com/mogo/realtime/ExampleInstrumentedTest.java delete mode 100644 modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnMessageListener.java delete mode 100644 modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java delete mode 100644 modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java rename modules/mogo-realtime/src/main/java/com/mogo/realtime/{socket => entity}/LocationResult.java (84%) rename modules/mogo-realtime/src/main/java/com/mogo/realtime/{socket => entity}/OnePerSecondSendContent.java (81%) delete mode 100644 modules/mogo-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 7abdbfc..ec8f062 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -20,6 +20,7 @@

- * 消息回调 - */ -public interface IMogoOnMessageListener< T > { - - Class< T > target(); - - void onMsgReceived(T obj); -} diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java deleted file mode 100644 index 4ef247e..0000000 --- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/IMogoOnWebSocketMessageListener.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.mogo.realtime.connect; - -/** - * 消息回调 - */ -public interface IMogoOnWebSocketMessageListener { - - default WebSocketMsgType getDownLinkType() { - return null; - } - - default WebSocketMsgType getUpLinkType() { - return null; - } - - default Class target() { - return null; - } - - default void onMsgReceived(T obj) { - - } - - default void onError(String errorMsg) { - - } -} diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java deleted file mode 100644 index e9f895d..0000000 --- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/connect/MsgBody.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.mogo.realtime.connect; - -/** - * @author congtaowang - * @since 2019-12-31 - *

- * 描述 - */ -public class MsgBody { - - /** - * 消息类型 - */ - private int mMsgType; - -// /** -// * 服务端分发,业务线 -// */ -// private int mProductLine = MogoCommon.Product.mogoBussiness_VALUE; -// -// /** -// * -// */ -// private int mHeaderType = MogoConnsvr.MsgType.mogoMsgTypeDispatchSvrNoRspReq_VALUE; - - /** - * 是否回执 - */ - private boolean mAck = false; - - /** - * 消息ID - */ - private final long mMsgId = System.currentTimeMillis(); - - /** - * 消息内容 - */ - private Object mContent; - - public MsgBody msgType( int msgType ) { - this.mMsgType = msgType; - return this; - } - - public MsgBody ack( boolean ack ) { - this.mAck = ack; - return this; - } - - public MsgBody content( Object object ) { - this.mContent = object; - return this; - } - - public int getMsgType() { - return mMsgType; - } - - public boolean isAck() { - return mAck; - } - - public long getMsgId() { - return mMsgId; - } - - public Object getContent() { - return mContent; - } -} 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 c28b683..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 @@ -5,15 +5,14 @@ import android.util.Log; import com.mogo.cloud.passport.MoGoAiCloudClient; import com.mogo.realtime.Interface.RealTimeApisHandler; -import com.mogo.realtime.connect.IMogoOnWebSocketMessageListener; -import com.mogo.realtime.connect.WebSocketMsgType; 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.socket.OnePerSecondSendContent; +import java.util.ArrayList; import java.util.List; /** @@ -72,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; } @@ -88,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(); @@ -106,18 +101,7 @@ public class SnapshotUploadInTime implements MogoRTKLocation.RTKLocationListener Log.d(TAG, "no information 2 sent"); return; } - - RealTimeApisHandler.getInstance().getApis().getRecognizedResultManager().sendMsg(content, new IMogoOnWebSocketMessageListener() { - @Override - public WebSocketMsgType getDownLinkType() { - return null; - } - - @Override - public WebSocketMsgType getUpLinkType() { - return null; - } - }); + //todo 发送socket msg } } diff --git a/modules/mogo-realtime/src/main/java/com/mogo/realtime/socket/LocationResult.java b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/LocationResult.java similarity index 84% rename from modules/mogo-realtime/src/main/java/com/mogo/realtime/socket/LocationResult.java rename to modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/LocationResult.java index 6798ffb..f2fc85e 100644 --- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/socket/LocationResult.java +++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/LocationResult.java @@ -1,8 +1,6 @@ -package com.mogo.realtime.socket; +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/socket/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/socket/OnePerSecondSendContent.java rename to modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/OnePerSecondSendContent.java index 58d5a61..671cec0 100644 --- a/modules/mogo-realtime/src/main/java/com/mogo/realtime/socket/OnePerSecondSendContent.java +++ b/modules/mogo-realtime/src/main/java/com/mogo/realtime/entity/OnePerSecondSendContent.java @@ -1,7 +1,6 @@ -package com.mogo.realtime.socket; +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-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java b/modules/mogo-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java deleted file mode 100644 index d8e6d0a..0000000 --- a/modules/mogo-realtime/src/test/java/com/mogo/realtime/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.mogo.realtime; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 5156a21..364e7ed 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,6 +1,6 @@ include ':foudations:mogo-socket' -include ':modules:mogo-realtime' -include ':modules:realtime' +include ':modules:mogo-cloud.realtime' +include ':modules:cloud.realtime' include ':modules:mogo-tanlu' include ':foudations:mogo-commons' include ':foudations:mogo-httpdns'