diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 771c1f74d7..4ff10f68a5 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -24,6 +24,8 @@
+
+
@@ -89,6 +91,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index b9d167c1a7..1ed243e8b7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -587,6 +587,7 @@ dependencies {
implementation project(':foudations:httpdns-mogo')
}
+ apply from: "./functions/aicloudservices.gradle"
apply from: "./functions/basedmap.gradle"
apply from: "./functions/perform.gradle"
apply from: "./functions/baseservices.gradle"
diff --git a/app/functions/aicloudservices.gradle b/app/functions/aicloudservices.gradle
new file mode 100644
index 0000000000..ffd00592bf
--- /dev/null
+++ b/app/functions/aicloudservices.gradle
@@ -0,0 +1,37 @@
+// 基础服务:仅比亚迪渠道用sdk方式实现,其他都基于apk基础服务
+//todo SDK版本 待替换
+project.dependencies {
+ if (Boolean.valueOf(RELEASE)) {
+ bydautoImplementation rootProject.ext.dependencies.mogoaicloudservicesdk
+
+ d82xImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ em1Implementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ em2Implementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ d8xxImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ d80xImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ em4Implementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ e8xxImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ f8xxImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ f80xImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ f8AmapImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ em3Implementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ fochtaxiImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ fochbusImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
+ } else {
+ bydautoImplementation project(':foudations:mogo-aicloud-services-sdk')
+
+ d82xImplementation project(':foudations:mogo-aicloud-services-apk')
+ em1Implementation project(':foudations:mogo-aicloud-services-apk')
+ em2Implementation project(':foudations:mogo-aicloud-services-apk')
+ d8xxImplementation project(':foudations:mogo-aicloud-services-apk')
+ d80xImplementation project(':foudations:mogo-aicloud-services-apk')
+ em4Implementation project(':foudations:mogo-aicloud-services-apk')
+ e8xxImplementation project(':foudations:mogo-aicloud-services-apk')
+ f8xxImplementation project(':foudations:mogo-aicloud-services-apk')
+ f80xImplementation project(':foudations:mogo-aicloud-services-apk')
+ f8AmapImplementation project(':foudations:mogo-aicloud-services-apk')
+ em3Implementation project(':foudations:mogo-aicloud-services-apk')
+ fochtaxiImplementation project(':foudations:mogo-aicloud-services-apk')
+ fochbusImplementation project(':foudations:mogo-aicloud-services-apk')
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java
index 9219aa3060..ceeed9e1e9 100644
--- a/app/src/main/java/com/mogo/launcher/MogoApplication.java
+++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java
@@ -22,6 +22,7 @@ import com.mogo.module.main.service.MogoMainService;
import com.mogo.module.push.base.PushUIConstants;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.share.constant.ShareConstants;
+import com.mogo.realtime.api.MoGoAiCloudRealTime;
import com.mogo.service.map.IMogoSmallMapProvider;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.utils.ObuConfig;
@@ -189,24 +190,8 @@ public class MogoApplication extends AbsMogoApplication {
}
private void preparePassportEnvironment( IMogoServiceApis apis, Runnable after ) {
- apis.getPassportManagerApi().requestTicket( new IMogoTicketCallback() {
- @Override
- public void onTicketGot( String ticket ) {
- Logger.d( TAG, "ticket = %s", ticket );
- }
+ //todo 开启MoGoAiCloud云基础服务
- @Override
- public void onError( int code, String msg ) {
- Logger.w( TAG, "code = %s, msg = %s", code, msg );
- }
-
- @Override
- public void onLoginSuccess( String token, String sn ) {
- if ( after != null ) {
- after.run();
- }
- }
- } );
}
private void prepareSocketAndLocationServices( IMogoServiceApis apis ) {
@@ -217,7 +202,6 @@ public class MogoApplication extends AbsMogoApplication {
apis.getLocationInfoApi().provideLocation( location );
} );
}
- apis.getWebSocketManagerApi( getApplicationContext() ).init( getApplicationContext(), DebugConfig.getSocketAppId() );
}
@Override
diff --git a/config.gradle b/config.gradle
index c7b043a9be..8d642a97c0 100644
--- a/config.gradle
+++ b/config.gradle
@@ -229,6 +229,17 @@ ext {
mogoochbus : "com.mogo.och:och-bus:${MOGO_OCH_BUS_VERSION}",
mogoochtaxi : "com.mogo.och:och-taxi:${MOGO_OCH_TAXI_VERSION}",
mogoochnoop : "com.mogo.och:och-noop:${MOGO_OCH_NOOP_VERSION}",
+
+ mogoaicloudserviceapk : "com.mogo.aicloud.services:services-apk:${MOGO_AICLOUD_SERVICES_APK_VERSION}",
+ mogoaicloudservicesdk : "com.mogo.aicloud.services:services-sdk:${MOGO_AICLOUD_SERVICES_SDK_VERSION}",
+
+ mogoaicloudsocket : "com.mogo.cloud:socket:${MOGO_SOCKET_VERSION}",
+ mogoaicloudpassport : "com.mogo.cloud:passport:${MOGO_PASSPORT_VERSION}",
+ mogoaicloudnetwork : "com.mogo.cloud:network:${MOGO_NETWORK_VERSION}",
+ mogoaicloudlive : "com.mogo.cloud:live:${MOGO_LIVE_VERSION}",
+ mogoaicloudrealtime : "com.mogo.cloud:realtime:${MOGO_REALTIME_VERSION}",
+ mogoaicloudtanlu : "com.mogo.cloud:tanlu:${MOGO_TANLU_VERSION}",
+ mogoaicloudtrafficlive : "com.mogo.cloud:trafficlive:${MOGO_TRAFFICLIVE_VERSION}",
]
}
\ No newline at end of file
diff --git a/foudations/mogo-aicloud-services-apk/.gitignore b/foudations/mogo-aicloud-services-apk/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/foudations/mogo-aicloud-services-apk/build.gradle b/foudations/mogo-aicloud-services-apk/build.gradle
new file mode 100644
index 0000000000..7cd1cff617
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/build.gradle
@@ -0,0 +1,42 @@
+plugins {
+ id 'com.android.library'
+}
+
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ 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 rootProject.ext.dependencies.mogoaicloudsocket
+ implementation rootProject.ext.dependencies.mogoaicloudpassport
+
+ if (Boolean.valueOf(RELEASE)) {
+ implementation rootProject.ext.dependencies.mogoutils
+ implementation rootProject.ext.dependencies.mogoserviceapi
+ } else {
+ implementation project(":foudations:mogo-utils")
+ implementation project(":services:mogo-service-api")
+ }
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
\ No newline at end of file
diff --git a/foudations/mogo-aicloud-services-apk/consumer-rules.pro b/foudations/mogo-aicloud-services-apk/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/foudations/mogo-aicloud-services-apk/gradle.properties b/foudations/mogo-aicloud-services-apk/gradle.properties
new file mode 100644
index 0000000000..18db84c7e8
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.aicloud.services
+POM_ARTIFACT_ID=services-apk
+VERSION_CODE=1
diff --git a/foudations/mogo-aicloud-services-apk/proguard-rules.pro b/foudations/mogo-aicloud-services-apk/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/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-aicloud-services-apk/src/main/AndroidManifest.xml b/foudations/mogo-aicloud-services-apk/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..a8c2c36937
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java
new file mode 100644
index 0000000000..74d0fdd744
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/locationinfo/MogoLocationInfoServices.java
@@ -0,0 +1,63 @@
+package com.mogo.aicloud.services.locationinfo;
+
+import android.content.Context;
+
+import androidx.annotation.Keep;
+
+import com.mogo.map.location.MogoLocation;
+import com.mogo.service.locationinfo.IMogoLocationInfoService;
+import com.mogo.utils.logger.Logger;
+
+public
+/**
+ * @author congtaowang
+ * @since 2020/7/16
+ *
+ * 位置服务
+ */
+@Keep
+class MogoLocationInfoServices implements IMogoLocationInfoService {
+
+ private static final String TAG = "MogoLocationInfoServices-apk";
+
+ private static volatile MogoLocationInfoServices sInstance;
+
+ private MogoLocationInfoServices() {
+ }
+
+ @Keep
+ public static MogoLocationInfoServices getInstance() {
+ if ( sInstance == null ) {
+ synchronized ( MogoLocationInfoServices.class ) {
+ if ( sInstance == null ) {
+ sInstance = new MogoLocationInfoServices();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ public synchronized void release() {
+ sInstance = null;
+ }
+
+ @Override
+ public void provideLocation( MogoLocation location ) {
+ Logger.d( TAG, "apk - provideLocation" );
+ }
+
+ @Override
+ public void start() {
+ Logger.d( TAG, "apk - start" );
+ }
+
+ @Override
+ public void stop() {
+ Logger.d( TAG, "apk - stop" );
+ }
+
+ @Override
+ public void init( Context context ) {
+ Logger.d( TAG, "apk - init" );
+ }
+}
diff --git a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/passport/PassportManager.java b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/passport/PassportManager.java
new file mode 100644
index 0000000000..f4a6991534
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/passport/PassportManager.java
@@ -0,0 +1,71 @@
+package com.mogo.aicloud.services.passport;
+
+import android.content.Context;
+
+import androidx.annotation.Keep;
+
+import com.mogo.cloud.passport.IMoGoTokenCallback;
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.service.passport.IMogoPassportManager;
+import com.mogo.service.passport.IMogoTicketCallback;
+
+public
+/*
+ * @author congtaowang
+ * @since 2020/7/16
+ *
+ * 描述
+ */
+@Keep
+class PassportManager implements IMogoPassportManager {
+
+ private static volatile PassportManager sInstance;
+ private IMogoTicketCallback mCallBack;
+
+ private PassportManager() {
+ MoGoAiCloudClient.getInstance().addTokenCallbacks(new IMoGoTokenCallback() {
+ @Override
+ public void onTokenGot(String token, String sn) {
+ if (mCallBack != null) {
+ mCallBack.onTicketGot(token);
+ }
+ }
+
+ @Override
+ public void onError(int code, String msg) {
+ if (mCallBack != null) {
+ mCallBack.onError(code, msg);
+ }
+ }
+ });
+ }
+
+ @Keep
+ public static PassportManager getInstance() {
+ if (sInstance == null) {
+ synchronized (PassportManager.class) {
+ if (sInstance == null) {
+ sInstance = new PassportManager();
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ public synchronized void release() {
+ mCallBack = null;
+ sInstance = null;
+ }
+
+ @Override
+ public void requestTicket(final IMogoTicketCallback callback) {
+ this.mCallBack = callback;
+ MoGoAiCloudClient.getInstance().refreshToken();
+ }
+
+ @Override
+ public void init(Context context) {
+
+ }
+
+}
diff --git a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
new file mode 100644
index 0000000000..5beeac81cb
--- /dev/null
+++ b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
@@ -0,0 +1,153 @@
+package com.mogo.aicloud.services.socket;
+
+import android.content.Context;
+
+import androidx.annotation.Keep;
+
+import com.mogo.cloud.socket.IMogoCloudSocketMsgAckListener;
+import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
+import com.mogo.cloud.socket.SocketManager;
+import com.mogo.service.connection.IMogoMsgAckListener;
+import com.mogo.service.connection.IMogoOnMessageListener;
+import com.mogo.service.connection.IMogoSocketManager;
+import com.mogo.service.connection.MsgBody;
+import com.mogo.utils.logger.Logger;
+import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author arrow
+ * @since 2021-02-22
+ *
+ * 长链实现:基于 netty
+ */
+@Keep
+public class MogoAiCloudSocketManager implements IMogoSocketManager {
+
+ private static final String TAG = "SocketManager-apk";
+
+ private static volatile MogoAiCloudSocketManager sInstance;
+ private String mAppId;
+
+ private MogoAiCloudSocketManager(Context context) {
+ }
+
+ @Keep
+ public static MogoAiCloudSocketManager getInstance(Context context) {
+ if (sInstance == null) {
+ synchronized (MogoAiCloudSocketManager.class) {
+ if (sInstance == null) {
+ sInstance = new MogoAiCloudSocketManager(context);
+ }
+ }
+ }
+ return sInstance;
+ }
+
+ /**
+ * 管理消息分发
+ *
+ * key - msgType
+ */
+ private final Map> mListeners = new ConcurrentHashMap<>();
+
+ /**
+ * 管理消息回执
+ *
+ * key - msgId
+ */
+ private final Map mAckListeners = new ConcurrentHashMap<>();
+
+ @Override
+ public void init(Context context, String appId) {
+ this.mAppId = appId;
+ SocketManager.getInstance().init(context);
+ }
+
+ @Override
+ public void registerOnMessageListener(int msgType, IMogoOnMessageListener listener) {
+ if (mListeners.containsKey(msgType)) {
+ com.mogo.cloud.utils.logger.Logger.w(TAG, "msgType %d is exist.", msgType);
+ return;
+ }
+ if (!mListeners.containsKey(msgType)) {
+ mListeners.put(msgType, new ArrayList<>());
+ }
+ mListeners.get(msgType).add(listener);
+ SocketManager.getInstance().registerOnMessageListener(msgType, mogoCloudSocketOnMessageListener);
+ }
+
+ @Override
+ public void unregisterOnMessageListener(int msgType) {
+
+ }
+
+ @Override
+ public void unregisterOnMessageListener(int msgType, IMogoOnMessageListener listener) {
+ if (listener == null) {
+ return;
+ }
+ if (!mListeners.containsKey(msgType)) {
+ return;
+ }
+ List listeners = mListeners.get(msgType);
+ if (listeners != null) {
+ listeners.remove(listener);
+ }
+ SocketManager.getInstance().unregisterOnMessageListener(msgType, mogoCloudSocketOnMessageListener);
+ }
+
+ @Override
+ public void sendMsg(MsgBody body, IMogoMsgAckListener listener) {
+ Logger.d(TAG, "sendMsg.");
+ mAckListeners.put(body.getMsgId(), listener);
+ com.mogo.cloud.socket.MsgBody msgBody = new com.mogo.cloud.socket.MsgBody();
+ msgBody.msgType(body.getMsgType());
+ msgBody.ack(body.isAck());
+ msgBody.content(body.getContent());
+ SocketManager.getInstance().sendMsg(mAppId, MogoCommon.Product.mogoBussiness.getNumber(), msgBody, mogoCloudSocketMsgAckListener);
+ }
+
+ public synchronized void release() {
+ SocketManager.getInstance().release();
+ mListeners.clear();
+ sInstance = null;
+ }
+
+ @Override
+ public void init(Context context) {
+
+ }
+
+ private final IMogoCloudSocketMsgAckListener mogoCloudSocketMsgAckListener = msgId -> mAckListeners.get(msgId).onAck(msgId);
+
+ private final IMogoCloudSocketOnMessageListener mogoCloudSocketOnMessageListener = new IMogoCloudSocketOnMessageListener() {
+ @Override
+ public Class