diff --git a/.idea/misc.xml b/.idea/misc.xml
index 2887110..42fab5f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/app/src/main/java/com/mogo/cloud/MoGoApplication.java b/app/src/main/java/com/mogo/cloud/MoGoApplication.java
index 18e229a..7816050 100644
--- a/app/src/main/java/com/mogo/cloud/MoGoApplication.java
+++ b/app/src/main/java/com/mogo/cloud/MoGoApplication.java
@@ -43,7 +43,8 @@ public class MoGoApplication extends MultiDexApplication {
MoGoAiCloudClientConfig clientConfig = MoGoAiCloudClientConfig.getInstance();
// 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV
clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_QA);
- // 设置是否是第三APP登录
+
+ // 设置是否是第三APP登录,false:自有车机 true:外部三方车机
clientConfig.setThirdLogin(true);
// 设置是否输出日志
clientConfig.setShowDebugLog(true);
@@ -52,6 +53,10 @@ public class MoGoApplication extends MultiDexApplication {
// 设置AI云平台分配给三方应用的签名密钥,需要从AI云平台申请
// 设置车机设备的唯一标识(这些表识必须是通过后台录入的设备)
clientConfig.setThirdPartyDeviceId(Devices.getSn());
+ // 设置应用服务AppId 长链、鉴权 //todo 需要卸载智慧驾驶、行车记录仪
+ clientConfig.setServiceAppId("com.mogo.launcher");
+ // 设置是否输出日志
+ clientConfig.setShowDebugLog(true);
// 设置循环检测间隔时间
clientConfig.setLoopCheckDelay(15 * 1000);
// 设置是否属于高精定位设备
diff --git a/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java b/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java
index c125f36..a62f8ce 100644
--- a/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java
+++ b/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java
@@ -10,7 +10,7 @@ import com.mogo.cloud.utils.logger.Logger;
public class WifiBroadCastReceiver extends BroadcastReceiver {
- private WifiBroadCastReceiver() {
+ public WifiBroadCastReceiver() {
Logger.d(TAG, "WifiBroadCastReceiver init");
}
diff --git a/foudations/mogo-passport/build.gradle b/foudations/mogo-passport/build.gradle
index 71a5476..4e33a77 100644
--- a/foudations/mogo-passport/build.gradle
+++ b/foudations/mogo-passport/build.gradle
@@ -27,8 +27,10 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
- // passport
+ // passport-for-sdk 外部SDK版本
implementation 'com.zhidao.thirdlogin:third-login:1.0.2'
+ // passport-for-internal 内部SDK版本
+ implementation 'com.zhidao.accountservice:account-sdk:1.0.18'
if (Boolean.valueOf(RELEASE)) {
api "com.mogo.cloud:httpdns:${MOGO_HTTPDNS_VERSION}"
diff --git a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/IPassport.java b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/IPassport.java
new file mode 100644
index 0000000..a89e92f
--- /dev/null
+++ b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/IPassport.java
@@ -0,0 +1,8 @@
+package com.mogo.cloud.passport;
+
+public interface IPassport {
+
+ void onSuccess(String token, String sn);
+
+ void onError(int code, String msg);
+}
diff --git a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClient.java b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClient.java
index 49da829..d3e1b6c 100644
--- a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClient.java
+++ b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/MoGoAiCloudClient.java
@@ -9,11 +9,6 @@ import com.mogo.cloud.httpdns.MogoHttpDnsClient;
import com.mogo.cloud.httpdns.MogoHttpDnsConfig;
import com.mogo.cloud.utils.logger.LogLevel;
import com.mogo.cloud.utils.logger.Logger;
-import com.zhidao.thirdlogin.Environment;
-import com.zhidao.thirdlogin.LoginManager;
-import com.zhidao.thirdlogin.model.ThirdLoginParam;
-import com.zhidao.thirdlogin.model.TokenData;
-import com.zhidao.thirdlogin.network.LoginCallback;
import java.util.ArrayList;
import java.util.List;
@@ -25,14 +20,14 @@ import java.util.List;
*/
@Keep
public class MoGoAiCloudClient {
- private static final String TAG = "MoGoAiCloudClient";
+ public static final String TAG = "MoGoAiCloudClient";
private static volatile MoGoAiCloudClient sInstance;
private MoGoAiCloudClientConfig mAiCloudClientConfig;
private MogoHttpDnsConfig mHttpDnsConfig;
private Context mContext;
- private List mTokenCallbacks;
+ private final List mTokenCallbacks;
private MoGoAiCloudClient() {
mTokenCallbacks = new ArrayList<>();
@@ -85,99 +80,63 @@ public class MoGoAiCloudClient {
Log.i(TAG, "═══════════════刷新Token═════════════");
}
- if (mAiCloudClientConfig != null) {
- ThirdLoginParam thirdLoginParam = ThirdLoginParam.of(
- mAiCloudClientConfig.getThirdPartyDeviceId(),
- mAiCloudClientConfig.getThirdPartyAppKey()
- );
-
- LoginCallback loginCallback = new LoginCallback() {
- @Override
- public void onSuccess(TokenData.TokenResult result) {
- if (mAiCloudClientConfig.isShowDebugLog()) {
- Log.i(TAG, "═════════════════════════════════════");
- Log.i(TAG, "║ PassportVersion:" + com.mogo.cloud.passport.BuildConfig.VERSION_NAME);
- Log.i(TAG, "║ HttpDnsVersion:" + com.mogo.cloud.httpdns.BuildConfig.VERSION_NAME);
- Log.i(TAG, "║ ThirdLoginVersion:" + com.zhidao.thirdlogin.BuildConfig.VERSION_NAME);
- Log.i(TAG, "║ MoGo鉴权成功 ");
- Log.i(TAG, "║ SN:" + result.sn);
- Log.i(TAG, "║ Token:" + result.token);
- Log.i(TAG, "═════════════════════════════════════");
- }
-
- // 变量赋值
- if (mAiCloudClientConfig != null) {
- mAiCloudClientConfig.setSn(result.sn);
- mAiCloudClientConfig.setToken(result.token);
- }
-
- // 循环调用将数据传出去
- for (IMoGoTokenCallback tokenCallback : mTokenCallbacks) {
- tokenCallback.onTokenGot(result.token, result.sn);
- }
-
- // 初始化HttpDNS
- mHttpDnsConfig =
- new MogoHttpDnsConfig()
- .setContext(mContext)
- .setSn(mAiCloudClientConfig.getSn())
- .setEnv(mAiCloudClientConfig.getNetMode())
- .setShowDebugLog(mAiCloudClientConfig.isShowDebugLog())
- .setCurrentLocation(mAiCloudClientConfig.getIHttpDnsCurrentLocation())
- .setLoopCheckDelay(mAiCloudClientConfig.getLoopCheckDelay());
- MogoHttpDnsClient.INSTANCE.init(mHttpDnsConfig);
+ PassportManager.getInstance().refreshToken(mContext, new IPassport() {
+ @Override
+ public void onSuccess(String token, String sn) {
+ if (mAiCloudClientConfig.isShowDebugLog()) {
+ Log.i(TAG, "═════════════════════════════════════");
+ Log.i(TAG, "║ PassportVersion:" + com.mogo.cloud.passport.BuildConfig.VERSION_NAME);
+ Log.i(TAG, "║ HttpDnsVersion:" + com.mogo.cloud.httpdns.BuildConfig.VERSION_NAME);
+ Log.i(TAG, "║ ThirdLoginVersion:" + com.zhidao.thirdlogin.BuildConfig.VERSION_NAME);
+ Log.i(TAG, "║ MoGo鉴权成功 ");
+ Log.i(TAG, "║ SN:" + sn);
+ Log.i(TAG, "║ Token:" + token);
+ Log.i(TAG, "═════════════════════════════════════");
}
- @Override
- public void onFailure(int code, String msg) {
- if (mAiCloudClientConfig.isShowDebugLog()) {
- //Toast.makeText(mContext, "MoGo鉴权失败", Toast.LENGTH_SHORT).show();
- Log.e(TAG, "═════════════════════════════════════");
- Log.e(TAG, "║ MoGo鉴权失败 ");
- Log.e(TAG, "║ ErrorCode:" + code);
- Log.e(TAG, "║ ErrorMessage:" + msg);
- Log.e(TAG, "═════════════════════════════════════");
- }
- // 变量赋值
- if (mAiCloudClientConfig != null) {
- mAiCloudClientConfig.setSn("");
- mAiCloudClientConfig.setToken("");
- }
- for (IMoGoTokenCallback tokenCallback : mTokenCallbacks) {
- tokenCallback.onError(code, msg);
- }
+ // 变量赋值
+ if (mAiCloudClientConfig != null) {
+ mAiCloudClientConfig.setSn(sn);
+ mAiCloudClientConfig.setToken(token);
}
- };
- if (mAiCloudClientConfig.isShowDebugLog()) {
- Log.w(TAG, "loginCallback:" + loginCallback);
+ // 循环调用将数据传出去
+ for (IMoGoTokenCallback tokenCallback : mTokenCallbacks) {
+ tokenCallback.onTokenGot(token, sn);
+ }
+
+ // 初始化HttpDNS
+ mHttpDnsConfig =
+ new MogoHttpDnsConfig()
+ .setContext(mContext)
+ .setSn(mAiCloudClientConfig.getSn())
+ .setEnv(mAiCloudClientConfig.getNetMode())
+ .setShowDebugLog(mAiCloudClientConfig.isShowDebugLog())
+ .setCurrentLocation(mAiCloudClientConfig.getIHttpDnsCurrentLocation())
+ .setLoopCheckDelay(mAiCloudClientConfig.getLoopCheckDelay());
+ MogoHttpDnsClient.INSTANCE.init(mHttpDnsConfig);
}
- Environment environment;
- switch (mAiCloudClientConfig.getNetMode()) {
- case MogoHttpDnsConfig.HTTP_DNS_ENV_DEV:
- environment = Environment.dev;
- break;
- case MogoHttpDnsConfig.HTTP_DNS_ENV_QA:
- case MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO:
- environment = Environment.qa;
- break;
- default:
- environment = Environment.release;
- break;
+ @Override
+ public void onError(int code, String msg) {
+ if (mAiCloudClientConfig.isShowDebugLog()) {
+ Toast.makeText(mContext, "MoGo鉴权失败", Toast.LENGTH_SHORT).show();
+ Log.e(TAG, "═════════════════════════════════════");
+ Log.e(TAG, "║ MoGo鉴权失败 ");
+ Log.e(TAG, "║ ErrorCode:" + code);
+ Log.e(TAG, "║ ErrorMessage:" + msg);
+ Log.e(TAG, "═════════════════════════════════════");
+ }
+ // 变量赋值
+ if (mAiCloudClientConfig != null) {
+ mAiCloudClientConfig.setSn("");
+ mAiCloudClientConfig.setToken("");
+ }
+ for (IMoGoTokenCallback tokenCallback : mTokenCallbacks) {
+ tokenCallback.onError(code, msg);
+ }
}
-
- LoginManager.getInstance().login(
- mContext,
- environment,
- thirdLoginParam,
- loginCallback);
- } else {
- Log.e(TAG, "═════════════════════════════════════");
- Log.e(TAG, "║ MoGo 鉴权失败 ");
- Log.e(TAG, "║ 请配置 MoGoAiCloudClientConfig 信息");
- Log.e(TAG, "═════════════════════════════════════");
- }
+ });
}
/**
@@ -186,9 +145,7 @@ public class MoGoAiCloudClient {
* @param iMoGoTokenCallback 回调监听
*/
public void addTokenCallbacks(IMoGoTokenCallback iMoGoTokenCallback) {
- if (mTokenCallbacks != null) {
- mTokenCallbacks.add(iMoGoTokenCallback);
- }
+ mTokenCallbacks.add(iMoGoTokenCallback);
}
}
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 c8c7ca3..c1ccfd4 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
@@ -87,6 +87,11 @@ public class MoGoAiCloudClientConfig {
*/
private boolean mIsAccuracyDevice;
+ /**
+ * 应用服务AppId,包括长链、鉴权
+ */
+ private String mServiceAppId;
+
/**
* 设置HttpDns的位置监听
*/
@@ -327,6 +332,24 @@ public class MoGoAiCloudClientConfig {
mIsAccuracyDevice = isAccuracyDevice;
}
+ /**
+ * 获取应用服务AppId
+ *
+ * @return String AppId
+ */
+ public String getServiceAppId() {
+ return mServiceAppId;
+ }
+
+ /**
+ * 设置应用服务AppId,包括长链、鉴权,三方应用无需设置
+ *
+ * @param serviceAppId 设置应用服务AppId
+ */
+ public void setServiceAppId(String serviceAppId) {
+ mServiceAppId = serviceAppId;
+ }
+
/**
* 返回HttpDns的位置信息,必须设置,否则将无法使用网络请求
*
@@ -359,6 +382,8 @@ public class MoGoAiCloudClientConfig {
", sn='" + sn + '\'' +
", mLoopCheckDelay=" + mLoopCheckDelay +
", mIsUseExternalLocation=" + mIsUseExternalLocation +
+ ", mIsAccuracyDevice=" + mIsAccuracyDevice +
+ ", mServiceAppId='" + mServiceAppId + '\'' +
", mIHttpDnsCurrentLocation=" + mIHttpDnsCurrentLocation +
'}';
}
diff --git a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/PassportManager.java b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/PassportManager.java
new file mode 100644
index 0000000..da2dee1
--- /dev/null
+++ b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/PassportManager.java
@@ -0,0 +1,35 @@
+package com.mogo.cloud.passport;
+
+import android.content.Context;
+
+import com.mogo.cloud.passport.internal.InternalPassportManager;
+import com.mogo.cloud.passport.third.ThirdPassportManager;
+
+public class PassportManager {
+
+ private static volatile PassportManager mInstance;
+ private final MoGoAiCloudClientConfig cloudClientConfig;
+
+ private PassportManager() {
+ cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ }
+
+ public static PassportManager getInstance() {
+ if (mInstance == null) {
+ synchronized (PassportManager.class) {
+ if (mInstance == null) {
+ mInstance = new PassportManager();
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ public void refreshToken(Context context, IPassport passport) {
+ if (cloudClientConfig.isThirdLogin()) {
+ ThirdPassportManager.getInstance().refreshToken(context, passport);
+ } else {
+ InternalPassportManager.getInstance(context).refreshToken(passport);
+ }
+ }
+}
diff --git a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/internal/InternalPassportManager.java b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/internal/InternalPassportManager.java
new file mode 100644
index 0000000..8d0ee31
--- /dev/null
+++ b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/internal/InternalPassportManager.java
@@ -0,0 +1,82 @@
+package com.mogo.cloud.passport.internal;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.mogo.cloud.DevicesUtils;
+import com.mogo.cloud.httpdns.MogoHttpDnsConfig;
+import com.mogo.cloud.passport.IPassport;
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.mogo.cloud.utils.logger.Logger;
+import com.zhidao.account.sdk.AccountClientManager;
+import com.zhidao.account.sdk.BusinessType;
+import com.zhidao.account.sdk.Environment;
+import com.zhidao.account.sdk.callback.TicketInfoCallback;
+
+import static com.mogo.cloud.passport.MoGoAiCloudClient.TAG;
+
+public class InternalPassportManager {
+
+ private static volatile InternalPassportManager mInstance;
+ private IPassport mPassport;
+ private final MoGoAiCloudClientConfig mAiCloudClientConfig;
+
+ private InternalPassportManager(Context context) {
+ mAiCloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ String appId = mAiCloudClientConfig.getServiceAppId();
+ if (TextUtils.isEmpty(appId)) {
+ Logger.e(TAG, "需要初始化 passport AppId");
+ return;
+ }
+ AccountClientManager.init(context.getApplicationContext(), getNetEnvironment(), BusinessType.toc_login, appId);
+ }
+
+ public static InternalPassportManager getInstance(Context context) {
+ if (mInstance == null) {
+ synchronized (InternalPassportManager.class) {
+ if (mInstance == null) {
+ mInstance = new InternalPassportManager(context);
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ public void refreshToken(IPassport passport) {
+ this.mPassport = passport;
+ AccountClientManager.getTicket(new TicketInfoCallback() {
+ @Override
+ public void onSuccess(String ticket) {
+ if (mPassport != null) {
+ mPassport.onSuccess(ticket, DevicesUtils.getSn());
+ }
+ }
+
+ @Override
+ public void onFailure(int code, String msg) {
+ if (mPassport != null) {
+ mPassport.onError(code, msg);
+ }
+ }
+ });
+ }
+
+ private Environment getNetEnvironment() {
+ int mode = mAiCloudClientConfig.getNetMode();
+ Environment environment;
+ switch (mode) {
+ case MogoHttpDnsConfig.HTTP_DNS_ENV_DEV:
+ environment = Environment.dev;
+ break;
+ case MogoHttpDnsConfig.HTTP_DNS_ENV_QA:
+ case MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO:
+ environment = Environment.qa;
+ break;
+ default:
+ environment = Environment.release;
+ break;
+ }
+ return environment;
+ }
+}
diff --git a/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/third/ThirdPassportManager.java b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/third/ThirdPassportManager.java
new file mode 100644
index 0000000..1bb8cf8
--- /dev/null
+++ b/foudations/mogo-passport/src/main/java/com/mogo/cloud/passport/third/ThirdPassportManager.java
@@ -0,0 +1,94 @@
+package com.mogo.cloud.passport.third;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.mogo.cloud.httpdns.MogoHttpDnsConfig;
+import com.mogo.cloud.passport.IPassport;
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.zhidao.thirdlogin.Environment;
+import com.zhidao.thirdlogin.LoginManager;
+import com.zhidao.thirdlogin.model.ThirdLoginParam;
+import com.zhidao.thirdlogin.model.TokenData;
+import com.zhidao.thirdlogin.network.LoginCallback;
+
+import static com.mogo.cloud.passport.MoGoAiCloudClient.TAG;
+
+public class ThirdPassportManager {
+
+ private static volatile ThirdPassportManager mInstance;
+ private IPassport mPassport;
+
+ private ThirdPassportManager() {
+
+ }
+
+ public static ThirdPassportManager getInstance() {
+ if (mInstance == null) {
+ synchronized (ThirdPassportManager.class) {
+ if (mInstance == null) {
+ mInstance = new ThirdPassportManager();
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ public void refreshToken(Context context, IPassport passport) {
+ this.mPassport = passport;
+ MoGoAiCloudClientConfig mAiCloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ if (mAiCloudClientConfig != null) {
+ ThirdLoginParam thirdLoginParam = ThirdLoginParam.of(
+ mAiCloudClientConfig.getThirdPartyDeviceId(),
+ mAiCloudClientConfig.getThirdPartyAppKey()
+ );
+
+ LoginCallback loginCallback = new LoginCallback() {
+ @Override
+ public void onSuccess(TokenData.TokenResult result) {
+ if (mPassport != null) {
+ mPassport.onSuccess(result.token, result.sn);
+ }
+ }
+
+ @Override
+ public void onFailure(int code, String msg) {
+ if (mPassport != null) {
+ mPassport.onError(code, msg);
+ }
+ }
+ };
+
+ if (mAiCloudClientConfig.isShowDebugLog()) {
+ Log.w(TAG, "loginCallback:" + loginCallback);
+ }
+
+ Environment environment;
+ switch (mAiCloudClientConfig.getNetMode()) {
+ case MogoHttpDnsConfig.HTTP_DNS_ENV_DEV:
+ environment = Environment.dev;
+ break;
+ case MogoHttpDnsConfig.HTTP_DNS_ENV_QA:
+ case MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO:
+ environment = Environment.qa;
+ break;
+ default:
+ environment = Environment.release;
+ break;
+ }
+
+ LoginManager.getInstance().login(
+ context,
+ environment,
+ thirdLoginParam,
+ loginCallback);
+ } else {
+ Log.e(TAG, "═════════════════════════════════════");
+ Log.e(TAG, "║ MoGo 鉴权失败 ");
+ Log.e(TAG, "║ 请配置 MoGoAiCloudClientConfig 信息");
+ Log.e(TAG, "═════════════════════════════════════");
+ //todo 未来配置 errorCode设置回调错误码
+ }
+ }
+}
diff --git a/foudations/mogo-socket/build.gradle b/foudations/mogo-socket/build.gradle
index 813c376..90116cb 100644
--- a/foudations/mogo-socket/build.gradle
+++ b/foudations/mogo-socket/build.gradle
@@ -26,11 +26,15 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
- // 长链 http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48956182
+ // socket-for-sdk 长链 http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48956182 外部SDK版本
api 'com.zhidao.socket:built-in-socket:1.0.22'
// 上报位置 http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48956200
implementation 'com.zhidao.locupload:loc-upload-sdk:1.1.9'
+ // socket-for-internal 长链 内部SDK版本
+ implementation 'com.zhidao.socketsdk:socketsdk:2.1.4'
+ implementation 'com.google.protobuf:protobuf-java:3.5.1'
+
if (Boolean.valueOf(RELEASE)) {
implementation "com.mogo.cloud:passport:${MOGO_PASSPORT_VERSION}"
} else {
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
index b726cd3..b061625 100644
--- 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
@@ -9,15 +9,10 @@ import com.google.protobuf.InvalidProtocolBufferException;
import com.mogo.cloud.GsonUtil;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.mogo.cloud.socket.internal.InternalSocketManager;
+import com.mogo.cloud.socket.third.ThirdSocketManager;
import com.mogo.cloud.utils.logger.Logger;
-import com.zhidao.locupload.Platform;
-import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
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 java.util.ArrayList;
import java.util.Iterator;
@@ -25,23 +20,18 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO;
-import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_DEV;
-import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_QA;
-import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_RELEASE;
import static com.mogo.cloud.socket.SocketServicesConstants.TAG;
/**
* Socket 长链核心服务
*/
-public class SocketManager implements IMogoCloudSocketManager, Callback {
+public class SocketManager implements IMogoCloudSocketManager {
private static volatile SocketManager mInstance;
private MoGoAiCloudClientConfig cloudClientConfig;
private SocketManager() {
- CallbackManager.getInstance().register(this);
cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
}
@@ -77,21 +67,18 @@ public class SocketManager implements IMogoCloudSocketManager, Callback {
@Override
public void init(Context context) {
- SocketConfig.instance()
- .setAppContext(context.getApplicationContext())
- .setEnvironment(getEnvironment())
- .setClient(Platform.getClient(Platform.car))
- .setChannelId(SocketServicesConstants.SOCKET_CHANNEL_ID)
- .setOpenAnalytics(true)
- .setSn(cloudClientConfig.getThirdPartyDeviceId())
- .setToken(cloudClientConfig.getToken())
- .setAuthPubKey(cloudClientConfig.getAuthPubKey())
- .setDebug(cloudClientConfig.isShowDebugLog());
- SocketClient.getInstance().start(context);
+ if (cloudClientConfig.isThirdLogin()) {
+ ThirdSocketManager.getInstance().init(context);
+ } else {
+ InternalSocketManager.getInstance().init(context);
+ }
}
@Override
public void registerOnMessageListener(int msgType, IMogoCloudSocketOnMessageListener listener) {
+ if (listener == null) {
+ return;
+ }
if (mListeners.containsKey(msgType)) {
Logger.w(TAG, "msgType %d is exist.", msgType);
return;
@@ -120,12 +107,15 @@ public class SocketManager implements IMogoCloudSocketManager, Callback {
public void sendMsg(String appId, int headerType, MsgBody body, IMogoCloudSocketMsgAckListener listener) {
Logger.d(TAG, "sendMsg msgId : " + body.getMsgId());
final byte[] pb = convertToPBBytes(body.getMsgType(), body.getContent());
- SocketClient.getInstance().sendData(appId, MogoCommon.Product.mogoBussiness.getNumber(), pb, headerType, true, body.getMsgId());
+ if (cloudClientConfig.isThirdLogin()) {
+ ThirdSocketManager.getInstance().sendMsg(appId, pb, headerType, true, body.getMsgId());
+ } else {
+ InternalSocketManager.getInstance().sendMsg(pb, headerType, true, body.getMsgId());
+ }
mAckListeners.put(body.getMsgId(), listener);
}
- @Override
- public void update(@NonNull CallbackManager manager, @NonNull byte[] message, String appId, long msgId) {
+ public void update(@NonNull byte[] message, long msgId) {
try {
MogoConnsvr.Payload payload = MogoConnsvr.Payload.parseFrom(message);
int msgType = payload.getMsgType();
@@ -166,8 +156,7 @@ public class SocketManager implements IMogoCloudSocketManager, Callback {
}
}
- @Override
- public void onAck(@NonNull CallbackManager manager, @NonNull byte[] headerBytes, byte[] content) {
+ public void onAck(@NonNull byte[] headerBytes) {
try {
MogoConnsvr.Header header = MogoConnsvr.Header.parseFrom(headerBytes);
int msgType = header.getMsgType();
@@ -184,24 +173,6 @@ public class SocketManager implements IMogoCloudSocketManager, Callback {
}
}
- private Environment getEnvironment() {
- switch (cloudClientConfig.getNetMode()) {
- case HTTP_DNS_ENV_DEV:
- return Environment.dev;
- case HTTP_DNS_ENV_QA:
- case HTTP_DNS_ENV_DEMO:
- return Environment.qa;
- case HTTP_DNS_ENV_RELEASE:
- 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)
@@ -211,6 +182,11 @@ public class SocketManager implements IMogoCloudSocketManager, Callback {
public synchronized void release() {
mListeners.clear();
+ if (cloudClientConfig.isThirdLogin()) {
+ ThirdSocketManager.getInstance().release();
+ } else {
+ InternalSocketManager.getInstance().release();
+ }
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
index e7f72e9..0356972 100644
--- 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
@@ -3,6 +3,15 @@ package com.mogo.cloud.socket;
import android.support.annotation.Keep;
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.zhidao.socket.Environment;
+
+import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO;
+import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_DEV;
+import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_QA;
+import static com.mogo.cloud.httpdns.MogoHttpDnsConfig.HTTP_DNS_ENV_RELEASE;
+
public class SocketServicesConstants {
public static final String TAG = "MoGoAiCloud_Socket";
@@ -12,4 +21,18 @@ public class SocketServicesConstants {
*/
@Keep
public static final String SOCKET_CHANNEL_ID = "dataCrawler";
+
+ public static Environment getEnvironment() {
+ MoGoAiCloudClientConfig cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ switch (cloudClientConfig.getNetMode()) {
+ case HTTP_DNS_ENV_DEV:
+ return com.zhidao.socket.Environment.dev;
+ case HTTP_DNS_ENV_QA:
+ case HTTP_DNS_ENV_DEMO:
+ return com.zhidao.socket.Environment.qa;
+ case HTTP_DNS_ENV_RELEASE:
+ default:
+ return com.zhidao.socket.Environment.release;
+ }
+ }
}
diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/internal/InternalSocketManager.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/internal/InternalSocketManager.java
new file mode 100644
index 0000000..aad403e
--- /dev/null
+++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/internal/InternalSocketManager.java
@@ -0,0 +1,82 @@
+package com.mogo.cloud.socket.internal;
+
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.mogo.cloud.socket.SocketManager;
+import com.mogo.cloud.utils.logger.Logger;
+import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
+import com.zhidao.socketsdk.manager.OnSocketAckCallback;
+import com.zhidao.socketsdk.manager.OnSocketReceiveCallback;
+import com.zhidao.socketsdk.manager.SocketConnManager;
+import com.zhidao.socketsdk.manager.SocketConnManagerImpl;
+
+import static com.mogo.cloud.socket.SocketServicesConstants.TAG;
+
+public class InternalSocketManager implements OnSocketReceiveCallback, OnSocketAckCallback {
+
+ private static volatile InternalSocketManager mInstance;
+ private static final int MSG_PRODUCT_LINE = MogoCommon.Product.mogoBussiness_VALUE;
+
+ private final MoGoAiCloudClientConfig cloudClientConfig;
+ private SocketConnManager mSocketConnManager;
+
+ private InternalSocketManager() {
+ cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ }
+
+ public static InternalSocketManager getInstance() {
+ if (mInstance == null) {
+ synchronized (InternalSocketManager.class) {
+ if (mInstance == null) {
+ mInstance = new InternalSocketManager();
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ public void init(Context context) {
+ mSocketConnManager = SocketConnManagerImpl.getInstance(context);
+ mSocketConnManager.addSocketMessageCallback(this);
+ mSocketConnManager.addSocketAckCallback(this);
+ String appId = cloudClientConfig.getServiceAppId();
+ if (TextUtils.isEmpty(appId)) {
+ Logger.e(TAG, "需要初始化 Socket AppId");
+ return;
+ }
+ mSocketConnManager.init(appId);
+ }
+
+ @Override
+ public void onAck(byte[] headerBytes, byte[] payload) {
+ Logger.d(TAG, "InternalSocketManager update ack");
+ SocketManager.getInstance().onAck(headerBytes);
+ }
+
+ @Override
+ public void onMessageReceived(byte[] message) {
+ Logger.d(TAG, "InternalSocketManager update message");
+ SocketManager.getInstance().update(message, 0);
+ }
+
+ public void sendMsg(byte[] pb, int headerType, boolean isAck, long msgId) {
+ if (mSocketConnManager.isConnected()) {
+ Logger.d(TAG, "isConnected.");
+ mSocketConnManager.sendPayload(MSG_PRODUCT_LINE, pb, headerType, isAck, msgId);
+ } else {
+ Logger.e(TAG, "sendMsg error, connect is lost.");
+ }
+ }
+
+ public void release() {
+ if (mSocketConnManager != null) {
+ mSocketConnManager.onRelease();
+ mSocketConnManager = null;
+ }
+ mInstance = null;
+ }
+}
diff --git a/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/third/ThirdSocketManager.java b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/third/ThirdSocketManager.java
new file mode 100644
index 0000000..1ea17eb
--- /dev/null
+++ b/foudations/mogo-socket/src/main/java/com/mogo/cloud/socket/third/ThirdSocketManager.java
@@ -0,0 +1,81 @@
+package com.mogo.cloud.socket.third;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+
+import com.mogo.cloud.passport.MoGoAiCloudClient;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.mogo.cloud.socket.SocketManager;
+import com.mogo.cloud.socket.SocketServicesConstants;
+import com.mogo.cloud.utils.logger.Logger;
+import com.zhidao.locupload.Platform;
+import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
+import com.zhidao.socket.Callback;
+import com.zhidao.socket.CallbackManager;
+import com.zhidao.socket.SocketClient;
+import com.zhidao.socket.SocketConfig;
+
+import static com.mogo.cloud.socket.SocketServicesConstants.TAG;
+import static com.mogo.cloud.socket.SocketServicesConstants.getEnvironment;
+
+public class ThirdSocketManager implements Callback {
+
+ private static volatile ThirdSocketManager mInstance;
+ private final MoGoAiCloudClientConfig cloudClientConfig;
+
+ private ThirdSocketManager() {
+ CallbackManager.getInstance().register(this);
+ cloudClientConfig = MoGoAiCloudClient.getInstance().getAiCloudClientConfig();
+ }
+
+ public static ThirdSocketManager getInstance() {
+ if (mInstance == null) {
+ synchronized (ThirdSocketManager.class) {
+ if (mInstance == null) {
+ mInstance = new ThirdSocketManager();
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ public void init(Context context) {
+ SocketConfig.instance()
+ .setAppContext(context.getApplicationContext())
+ .setEnvironment(getEnvironment())
+ .setClient(Platform.getClient(Platform.car))
+ .setChannelId(SocketServicesConstants.SOCKET_CHANNEL_ID)
+ .setOpenAnalytics(true)
+ .setSn(cloudClientConfig.getThirdPartyDeviceId())
+ .setToken(cloudClientConfig.getToken())
+ .setAuthPubKey(cloudClientConfig.getAuthPubKey())
+ .setDebug(cloudClientConfig.isShowDebugLog());
+ SocketClient.getInstance().start(context);
+ }
+
+ @Override
+ public void update(@NonNull CallbackManager manager, @NonNull byte[] message, String appId, long msgId) {
+ Logger.d(TAG,"ThirdSocketManager update message");
+ SocketManager.getInstance().update(message, msgId);
+ }
+
+ @Override
+ public void onAck(@NonNull CallbackManager manager, @NonNull byte[] header, byte[] content) {
+ Logger.d(TAG,"ThirdSocketManager update ack");
+ SocketManager.getInstance().onAck(header);
+ }
+
+ public void sendMsg(String appId,
+ byte[] payload,
+ int headerType,
+ boolean ack,
+ long msgId) {
+ SocketClient.getInstance().sendData(appId, MogoCommon.Product.mogoBussiness.getNumber(), payload, headerType, ack, msgId);
+
+ }
+
+ public synchronized void release() {
+ SocketClient.getInstance().stop();
+ mInstance = null;
+ }
+}
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/cloud/DevicesUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/cloud/DevicesUtils.java
index 4502563..88c2172 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/cloud/DevicesUtils.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/cloud/DevicesUtils.java
@@ -1,7 +1,36 @@
package com.mogo.cloud;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
/**
* 设备信息
*/
public class DevicesUtils {
+
+ private static final String PROPERTIES = "android.os.SystemProperties";
+ private static final String GSM_SERIAL = "gsm.serial";
+ private static final String GET = "get";
+
+ public static String getSn(){
+ return getSystemProperties(GSM_SERIAL);
+ }
+
+ public static String getSystemProperties(String name ) {
+ String value = "";
+ try {
+ Class< ? > c = Class.forName( PROPERTIES );
+ Method get = c.getMethod( GET, String.class );
+ value = (String) get.invoke( c, name );
+ } catch ( ClassNotFoundException var3 ) {
+ var3.printStackTrace();
+ } catch ( NoSuchMethodException var4 ) {
+ var4.printStackTrace();
+ } catch ( InvocationTargetException var5 ) {
+ var5.printStackTrace();
+ } catch ( IllegalAccessException var6 ) {
+ var6.printStackTrace();
+ }
+ return value;
+ }
}
diff --git a/gradle.properties b/gradle.properties
index d5f7488..e226d15 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -30,20 +30,20 @@ PASSWORD=xintai2018
RELEASE=false
# AI CLOUD 云平台
# 工具类
-MOGO_UTILS_VERSION=1.0.41
+MOGO_UTILS_VERSION=1.0.46
# 网络请求
-MOGO_NETWORK_VERSION=1.0.41
+MOGO_NETWORK_VERSION=1.0.46
# 网络DNS
-MOGO_HTTPDNS_VERSION=1.0.41
+MOGO_HTTPDNS_VERSION=1.0.46
# 鉴权
-MOGO_PASSPORT_VERSION=1.0.41
+MOGO_PASSPORT_VERSION=1.0.46
# 常链接
-MOGO_SOCKET_VERSION=1.0.41
+MOGO_SOCKET_VERSION=1.0.46
# 数据采集
-MOGO_REALTIME_VERSION=1.0.41
+MOGO_REALTIME_VERSION=1.0.46
# 探路,道路事件发布,获取
-MOGO_TANLU_VERSION=1.0.41
+MOGO_TANLU_VERSION=1.0.46
# 直播推流
-MOGO_LIVE_VERSION=1.0.41
+MOGO_LIVE_VERSION=1.0.46
# 直播拉流
-MOGO_TRAFFICLIVE_VERSION=1.0.41
+MOGO_TRAFFICLIVE_VERSION=1.0.46