From 0ce9960bb073c10f8c12989291c94b98e6caf799 Mon Sep 17 00:00:00 2001
From: 562935844@qq.com
Date: 星期四, 31 八月 2023 17:18:11 +0800
Subject: [PATCH] deviceinfo加判空

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/CheckAppVersionListener.java |   11 ++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java          |    5 
 HDLSDK/.idea/gradle.xml                                                                 |    1 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java          |    2 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java              |    6 +
 HDLSDK/settings.gradle                                                                  |    2 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudController.java      |   27 +++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java                       |   29 +++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudApi.java             |    3 
 HDLSDK/com.hdl.sdk/build.gradle                                                         |    4 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/UpdateInfo.java      |   90 ++++++++++++++++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/SPUtils.java                  |   53 ++++++++++
 HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java                               |   58 +++++++++++
 13 files changed, 286 insertions(+), 5 deletions(-)

diff --git a/HDLSDK/.idea/gradle.xml b/HDLSDK/.idea/gradle.xml
index 92c877d..c5f824a 100644
--- a/HDLSDK/.idea/gradle.xml
+++ b/HDLSDK/.idea/gradle.xml
@@ -11,6 +11,7 @@
         <option name="modules">
           <set>
             <option value="$PROJECT_DIR$" />
+            <option value="$PROJECT_DIR$/app" />
             <option value="$PROJECT_DIR$/com.hdl.sdk" />
             <option value="$PROJECT_DIR$/hdl-connect" />
           </set>
diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
index 73cae8c..057b11a 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -1,7 +1,10 @@
 package com.hdl.hdlsdk;
 
 import android.Manifest;
+import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -38,9 +41,11 @@
 import com.hdl.sdk.connect.bean.request.ListUploadRequest;
 import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
 import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
+import com.hdl.sdk.connect.bean.response.UpdateInfo;
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
 import com.hdl.sdk.connect.cloud.CallBackListener;
+import com.hdl.sdk.connect.cloud.CheckAppVersionListener;
 import com.hdl.sdk.connect.cloud.HDLException;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
 import com.hdl.sdk.connect.socket.HDLAuthSocket;
@@ -129,6 +134,32 @@
                 tv.setText("鐢宠鎴愬姛");
                 responseTv.setText(msg.toString());
                 secret = msg.toString();
+            }
+        });
+
+    }
+
+    void checkAppVersion() {
+        tv.setText("寮�濮嬫娴嬫洿鏂�...");
+        responseTv.setText("");
+
+//        //姝e紡鏈嶅姟鍣�
+        String appKey = "i8hR07jzrIS";//appkey
+        String appSecret = "BmnJ8RWTtaVEBk24zPPF4UMwfYu0lAWU";//appsecret
+
+        String appCode = "1697150870315999233";//appCode
+
+        HDLLink.getInstance().checkAppVersion(this, appKey, appSecret, getAppVersionName(this), appCode, new CheckAppVersionListener() {
+            @Override
+            public void onSuccess(UpdateInfo info) {
+                tv.setText("鏈夋柊鏇存柊");
+                responseTv.setText(info.toString());
+            }
+
+            @Override
+            public void onError(HDLException e) {
+                tv.setText("妫�娴嬫洿鏂板け璐�");
+                responseTv.setText(e.getMsg());
             }
         });
 
@@ -265,6 +296,7 @@
         beans.add(new DemoBean("UDP鍙戦�侊紝鐩戝惉涓婚鍥炲锛屽甫閲嶅彂甯﹀洖璋�"));
         beans.add(new DemoBean("TCP鍙戦�侊紝鐩戝惉涓婚鍥炲锛屽甫閲嶅彂甯﹀洖璋�"));
         beans.add(new DemoBean("閫�缃�"));
+        beans.add(new DemoBean("妫�娴嬫洿鏂�"));
         demoAdapter = new DemoAdapter(beans);
         rv.setAdapter(demoAdapter);
 
@@ -342,6 +374,10 @@
                     case 15:
                         //閫�缃�
                         deleteNetwork();
+                        break;
+                    case 16:
+                        //妫�娴嬫洿鏂�
+                        checkAppVersion();
                         break;
                 }
             }
@@ -787,4 +823,26 @@
             }
         });
     }
+
+    /**
+     * 鑾峰彇APP鐗堟湰
+     *
+     * @param context
+     * @return
+     */
+    public static String getAppVersionName(Context context) {
+        String versionName = "0";
+        try {
+            PackageManager packageManager = context.getPackageManager();
+            PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
+            versionName = packageInfo.versionName;
+            if (TextUtils.isEmpty(versionName)) {
+                versionName = "0";
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return versionName;
+    }
+
 }
\ No newline at end of file
diff --git a/HDLSDK/com.hdl.sdk/build.gradle b/HDLSDK/com.hdl.sdk/build.gradle
index 545c0b7..00a22db 100644
--- a/HDLSDK/com.hdl.sdk/build.gradle
+++ b/HDLSDK/com.hdl.sdk/build.gradle
@@ -8,8 +8,8 @@
     defaultConfig {
         minSdkVersion rootProject.minSdkVersion
         targetSdkVersion rootProject.targetSdkVersion
-        versionCode 5
-        versionName "1.1.3"
+        versionCode 6
+        versionName "1.1.4"
     }
     buildTypes {
         debug {
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
index 13f27a1..2f59e1d 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
@@ -147,7 +147,7 @@
                                         listener.onMessage(o);
                                     }
                                 } catch (Exception e) {
-//                                    LogUtils.e("post寮傚父1锛�" + e.getMessage());
+                                    LogUtils.e("post寮傚父1锛�" + e.getMessage());
                                 }
                             }
                         });
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/SPUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/SPUtils.java
index 17ceeab..60f6c5f 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/SPUtils.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/SPUtils.java
@@ -2,11 +2,17 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.util.Base64;
 
 
 import com.hdl.sdk.common.HDLSdk;
 
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
@@ -146,5 +152,52 @@
                 .apply();
     }
 
+    private static String Object2String(Object object) {
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        ObjectOutputStream objectOutputStream = null;
+        try {
+            objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
+            objectOutputStream.writeObject(object);
+            String string = new String(Base64.encode(byteArrayOutputStream.toByteArray(), Base64.DEFAULT));
+            objectOutputStream.close();
+            return string;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    private static Object String2Object(String objectString) {
+        byte[] mobileBytes = Base64.decode(objectString.getBytes(), Base64.DEFAULT);
+        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(mobileBytes);
+        ObjectInputStream objectInputStream = null;
+        try {
+            objectInputStream = new ObjectInputStream(byteArrayInputStream);
+            Object object = objectInputStream.readObject();
+            objectInputStream.close();
+            return object;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static void saveSerializableEntity(String key, Object saveObject) {
+        SharedPreferences.Editor editor = getAppPreference().edit();
+        String string = Object2String(saveObject);
+        editor.putString(key, string);
+        editor.commit();
+    }
+
+    public static Object getSerializableEntity(String key) {
+        String string = getAppPreference().getString(key, null);
+        if (string != null) {
+            Object object = String2Object(string);
+            return object;
+        } else {
+            return null;
+        }
+    }
+
 
 }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
index d1aa555..9ee990e 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
@@ -12,6 +12,7 @@
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
 import com.hdl.sdk.connect.cloud.CallBackListener;
+import com.hdl.sdk.connect.cloud.CheckAppVersionListener;
 import com.hdl.sdk.connect.cloud.HdlCloudApi;
 import com.hdl.sdk.connect.cloud.HdlCloudController;
 import com.hdl.sdk.connect.cloud.interceptor.EncryptInterceptor;
@@ -181,6 +182,34 @@
     }
 
     /**
+     * 妫�娴嬫洿鏂�
+     *
+     * @param appKey      appKey
+     * @param appSecret   appSecret
+     * @param versionCode 褰撳墠鐗堟湰
+     * @param appCode     appCode
+     * @param listener    缁撴灉鍥炶皟
+     */
+    public void checkAppVersion(Context context, String appKey, String appSecret, String versionCode, String appCode, CheckAppVersionListener listener) {
+        LogUtils.i("妫�娴嬫洿鏂�");
+        HxHttpConfig.getInstance().init(context, HdlCloudApi.BASE_CHINA_URL)
+                .addInterceptor(
+                        new EncryptInterceptor(),
+                        new SmartHeaderInterceptor());
+        this.appKey = appKey;
+        this.appSecret = appSecret;
+
+        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
+        httpLoggingInterceptor.level(HttpLoggingInterceptor.Level.BODY);
+
+        HxHttpConfig.getInstance()
+                //.addInterceptor(new HttpCacheInterceptor())
+                .addInterceptor(httpLoggingInterceptor).ignoreSSL();
+
+        HdlCloudController.checkAppVersion(versionCode, appCode, listener);
+    }
+
+    /**
      * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧
      *
      * @param oid      浠庣綉鍏筹紙璁惧锛塷id
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/UpdateInfo.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/UpdateInfo.java
new file mode 100644
index 0000000..1e94436
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/UpdateInfo.java
@@ -0,0 +1,90 @@
+package com.hdl.sdk.connect.bean.response;
+
+import java.io.Serializable;
+
+/**
+ * Created by panlili on 2023/8/30.
+ */
+public class UpdateInfo implements Serializable {
+
+    private String version;
+    private String appName;
+    private String appCode;
+    //鏄惁寮哄埗鏇存柊
+    private Boolean isEnforce;
+    //绫诲瀷
+    private String releaseSystem;
+    //鏂板寘涓嬭浇璺緞
+    private String packageUrl;
+    //鏇存柊璇存槑
+    private String remark;
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getAppName() {
+        return appName;
+    }
+
+    public void setAppName(String appName) {
+        this.appName = appName;
+    }
+
+    public String getAppCode() {
+        return appCode;
+    }
+
+    public void setAppCode(String appCode) {
+        this.appCode = appCode;
+    }
+
+    public Boolean getIsEnforce() {
+        return isEnforce;
+    }
+
+    public void setIsEnforce(Boolean isEnforce) {
+        this.isEnforce = isEnforce;
+    }
+
+    public String getReleaseSystem() {
+        return releaseSystem;
+    }
+
+    public void setReleaseSystem(String releaseSystem) {
+        this.releaseSystem = releaseSystem;
+    }
+
+    public String getPackageUrl() {
+        return packageUrl;
+    }
+
+    public void setPackageUrl(String packageUrl) {
+        this.packageUrl = packageUrl;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "UpdateInfo{" +
+                "version='" + version + '\'' +
+                ", appName='" + appName + '\'' +
+                ", appCode='" + appCode + '\'' +
+                ", isEnforce=" + isEnforce +
+                ", releaseSystem='" + releaseSystem + '\'' +
+                ", packageUrl='" + packageUrl + '\'' +
+                ", remark='" + remark + '\'' +
+                '}';
+    }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/CheckAppVersionListener.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/CheckAppVersionListener.java
new file mode 100644
index 0000000..7841ca8
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/CheckAppVersionListener.java
@@ -0,0 +1,11 @@
+package com.hdl.sdk.connect.cloud;
+
+
+import com.hdl.sdk.connect.bean.response.UpdateInfo;
+
+/**
+ * Created by panlili on 2023/8/30.
+ */
+public interface CheckAppVersionListener extends BaseCallBack {
+    void onSuccess(UpdateInfo info);
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudApi.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudApi.java
index fba726a..5f6256b 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudApi.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudApi.java
@@ -15,4 +15,7 @@
     //鐢宠璁惧瀵嗛挜(鏍规嵁璁惧MAC)
     public static final String APPLY_DEVICE_SECRET = "/smart-open/third/device/authByMac";
 
+    //妫�鏌pp鏄惁鏇存柊
+    public static final String CHECK_APP_VERSION_URL = "/basis-footstone/app/appVersion/check";
+
 }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudController.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudController.java
index e7dff9c..8f05dcf 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudController.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/cloud/HdlCloudController.java
@@ -1,6 +1,7 @@
 package com.hdl.sdk.connect.cloud;
 
 import com.hdl.hdlhttp.HxHttp;
+import com.hdl.sdk.connect.bean.response.UpdateInfo;
 
 import io.reactivex.rxjava3.disposables.Disposable;
 
@@ -35,4 +36,30 @@
                 });
     }
 
+    /**
+     * 妫�鏌pp鏄惁鏇存柊
+     *
+     * @return
+     */
+    public static Disposable checkAppVersion(String versionCode, String appCode, CheckAppVersionListener listener) {
+        return HxHttp.builder()
+                .url(HdlCloudApi.BASE_CHINA_URL + HdlCloudApi.CHECK_APP_VERSION_URL)
+                .params("version", versionCode)
+                .params("appCode", appCode)
+                .params("releaseSystem", "Android")
+                .build()
+                .post()
+                .subscribeWith(new HDLResponse<UpdateInfo>() {
+                    @Override
+                    public void onResponse(UpdateInfo response) {
+                        listener.onSuccess(response);
+                    }
+
+                    @Override
+                    public void onFailure(HDLException e) {
+                        listener.onError(e);
+                    }
+                });
+    }
+
 }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
index 7b8c005..5ccf25d 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
@@ -19,6 +19,7 @@
     private static final String AUTHENTICATE_GATEWAYID_KEY = "auth_gatewayid_key";
     private static final String AUTHENTICATE_IPADDRESS_KEY = "auth_ipaddress_key";
     private static final String AUTHENTICATE_IS_LS_KEY = "auth_isls_key";
+    public static final String AUTHENTICATE_IS_DEVICEINFO_KEY = "auth_deviceinfo_key";
 
     private String localSecret;//鏈湴鍔犲瘑瀵嗛挜
     private String gatewayId;
@@ -187,11 +188,13 @@
     }
 
     public AuthenticateRequest.AuthenticateDeviceInfoBean getDeviceInfoBean() {
-        return deviceInfoBean;
+        AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = (AuthenticateRequest.AuthenticateDeviceInfoBean) SPUtils.getSerializableEntity(AUTHENTICATE_IS_DEVICEINFO_KEY);
+        return infoBean;
     }
 
     public void setDeviceInfoBean(AuthenticateRequest.AuthenticateDeviceInfoBean deviceInfoBean) {
         this.deviceInfoBean = deviceInfoBean;
+        SPUtils.saveSerializableEntity(AUTHENTICATE_IS_DEVICEINFO_KEY, deviceInfoBean);
     }
 
     public AuthenticateRequest.RequestBean getRequestBean() {
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
index c2a71fb..b82dcef 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
@@ -1,5 +1,7 @@
 package com.hdl.sdk.connect.socket;
 
+import static com.hdl.sdk.connect.config.HDLLinkConfig.AUTHENTICATE_IS_DEVICEINFO_KEY;
+
 import android.os.Build;
 import android.text.TextUtils;
 import android.util.Log;
@@ -130,6 +132,10 @@
                                 if (!TextUtils.isEmpty(data)) {
                                     DeviceInfoResponse response = GsonConvert.getGson().fromJson(data, new TypeToken<DeviceInfoResponse>() {
                                     }.getType());
+
+                                    if ((response == null) || (response.getObjects() == null) || (response.getObjects().getIPAddress() == null))
+                                        return;
+
                                     HDLLinkConfig.getInstance().setIpAddress(response.getObjects().getIPAddress());
                                     LogUtils.i("---getIpAddress=" + HDLLinkConfig.getInstance().getIpAddress());
 
diff --git a/HDLSDK/settings.gradle b/HDLSDK/settings.gradle
index 147d5db..b974e52 100644
--- a/HDLSDK/settings.gradle
+++ b/HDLSDK/settings.gradle
@@ -1,5 +1,5 @@
 
-//include ':app'
+include ':app'
 //include ':hdl-socket'
 include ':hdl-connect'
 //include ':hdl-common'

--
Gitblit v1.8.0