From 4a42989853dd83c0519d0684383430006b7e9625 Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期二, 26 八月 2025 17:59:50 +0800
Subject: [PATCH] 获取设备列表序列化

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkTCallBack.java |   10 +
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java                   |   93 ++++++++++
 HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java                                    |   10 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/LinkResponseUtils.java   |   44 ++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/AttributesInfo.java       |   73 ++++++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java |    2 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/StatusInfo.java           |   39 ++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkFunctionInfo.java     |  146 ++++++++++++++++
 HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java                           |   71 +++----
 9 files changed, 441 insertions(+), 47 deletions(-)

diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java
index 9fe4abf..7a9cbee 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java
@@ -19,18 +19,18 @@
     public void onCreate() {
         super.onCreate();
         //鍒濆鍖朣DK锛屽鏋滀笉璧颁粠鏈哄叆缃戯紝璧癮pp闇�瑕佽缃鍙d负8584
-        HDLSdk.getInstance().init(this, 8584);
+//        HDLSdk.getInstance().init(this, 8584);
         //濡傛灉璧颁粠鏈哄叆缃戯紝涓嶉渶瑕佽缃鍙�
-        //HDLSdk.getInstance().init(this);
+        HDLSdk.getInstance().init(this);
         //鎺у埗SDK鏃ュ織鎵撳嵃
         HDLSdk.getInstance().setLogEnabled(true);
 
         //source绯荤粺鎺ュ彛鍒濆鍖�
         OsManager.init(this);
 
-        //appkey:ryfElI3tVOT
-        //appsecret:AKIn7s1A2YnNvAZRtL8FQxzp0R2KUpIY
-        HDLLink.getInstance().initCloud(this, "Lstzip08fTl", "iSIr5TSz1Rzxc1QRQ3RgnGwGB2SeAAAA", HdlCloudApi.BASE_CHINA_URL);
+        //appkey:ryfElI3tVOT Lstzip08fTl
+        //appsecret:AKIn7s1A2YnNvAZRtL8FQxzp0R2KUpIY iSIr5TSz1Rzxc1QRQ3RgnGwGB2SeAAAA
+        HDLLink.getInstance().initCloud(this, "FcRyUJlLJFF", "wz8wn75ABidx8vXcFGUotqhwFkTaYvvJ", HdlCloudApi.BASE_TEST_URL);
 
         //娉ㄥ唽鍏ㄥ眬骞挎挱,鍒锋柊token
         GlobalBroadcastManager.registerGlobalBroadcast(this);
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 e76c21e..982ef41 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -38,6 +38,7 @@
 import com.hdl.sdk.common.utils.SPUtils;
 import com.hdl.sdk.common.utils.gson.GsonConvert;
 import com.hdl.sdk.connect.HDLLink;
+import com.hdl.sdk.connect.bean.LinkFunctionInfo;
 import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.bean.request.AttributesRequest;
 import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
@@ -50,6 +51,7 @@
 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.callback.HDLLinkTCallBack;
 import com.hdl.sdk.connect.cloud.CallBackListener;
 import com.hdl.sdk.connect.cloud.CheckAppVersionListener;
 import com.hdl.sdk.connect.cloud.HDLException;
@@ -81,8 +83,8 @@
     private EventListener allTopicsListener;
     private String testLightSid = "020101A19B485D02020100010101";
     private String secret = "";
-    private List<FunctionBean> devicesList = new ArrayList<>();
-    private List<FunctionBean> roomDevicesList = new ArrayList<>();
+    private List<LinkFunctionInfo> devicesList = new ArrayList<>();
+    private List<LinkFunctionInfo> roomDevicesList = new ArrayList<>();
     private List<SceneBean> sceneList = new ArrayList<>();
     private List<SceneDetailBean> sceneDetailList = new ArrayList<>();
     private List<SceneDetailBean> roomSceneList = new ArrayList<>();
@@ -92,8 +94,8 @@
         tv.setText("寮�濮嬬敵璇疯澶囧瘑閽�...");
         responseTv.setText("");
 
-        String supplier = "HIK KNX";//鍘傚晢
-        String mac = "FQ4895630";//璁惧鍞竴MAC鍦板潃
+        String supplier = "JINMAOYUN";//鍘傚晢
+        String mac = "f2c5d8bad48f";//璁惧鍞竴MAC鍦板潃
 //        String mac = editText.getText().toString();
         String spk = "screen.touch";//浜у搧spk
 
@@ -228,7 +230,7 @@
 
         selectnetwork();
         checkIfCertified();
-        //initDeviceInfo();//涓嶈蛋浠庢満鍏ョ綉鐨勬柟寮忎笉闇�瑕佸垵濮嬪寲
+        initDeviceInfo();//涓嶈蛋浠庢満鍏ョ綉鐨勬柟寮忎笉闇�瑕佸垵濮嬪寲锛岃蛋浠庢満鍏ョ綉鍒欓渶瑕佸垵濮嬪寲
         registerAllTopicsListener();
         HDLLink.getInstance().setDeleteNetworkListener(new DeleteNetworkListener() {
             @Override
@@ -411,11 +413,12 @@
                 LinkResponse response = (LinkResponse) msg;
                 Log.i("onMessage", "response.getTopic():" + response.getTopic());
                 String topic = String.format(TopicConstant.GATEWAY_LOGIN,
-                        HDLLinkConfig.getInstance().getGatewayId())+ "_reply";;
+                        HDLLinkConfig.getInstance().getGatewayId()) + "_reply";
+                ;
 
                 if ("/user/all/custom/gateway/broadcast_reply".equals(response.getTopic())) {
                     localSecret.setText("瀵嗛挜锛�" + HDLLinkConfig.getInstance().getLocalSecret());
-                }else if (topic.equals(response.getTopic())){
+                } else if (topic.equals(response.getTopic())) {
                     //tcp杩炴帴鎴愬姛锛屽鐞嗕笟鍔¢�昏緫
                 }
             }
@@ -473,8 +476,8 @@
         infoBean.setDeviceName("榄旈暅");//璁惧鍚嶅瓧
         infoBean.setDeviceModel("HDLSDK");//璁惧鍨嬪彿
         infoBean.setAccessMode("WIFI");
-        infoBean.setIPGateway("192.168.31.1");
-        infoBean.setIPAddress("192.168.31.103");
+        infoBean.setIPGateway("192.168.1.1");
+        infoBean.setIPAddress("192.168.1.103");
         infoBean.setGateway_type("screen.touch");
         infoBean.setHw_version("HW2.0");
         infoBean.setFw_version("Fw1.0");
@@ -507,7 +510,7 @@
         //璁よ瘉鎻愪氦鍙傛暟鍑嗗
 
         //姝e紡鏈嶅姟鍣�
-        String spkStr = "screen.mirror";//浜у搧spk
+        String spkStr = "screen.touch";//浜у搧spk
         String macStr = "f2c5d8bad48f";//璁惧鍞竴MAC鍦板潃
 
         String mac_key = stringToMD5(stringToMD5(macStr + secret));
@@ -596,37 +599,23 @@
     void getFunctionList() {
         tv.setText("鑾峰彇璁惧鍒楄〃涓�...");
         responseTv.setText("");
-        HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() {
+        HDLLink.getInstance().getFunctionInfoList(new HDLLinkTCallBack<List<LinkFunctionInfo>>() {
+            @Override
+            public void onSuccess(List<LinkFunctionInfo> data) {
+                if (data != null && data.size() != 0) {
+                    devicesList.clear();
+                    devicesList.addAll(data);
+
+                    tv.setText("鑾峰彇璁惧鍒楄〃鎴愬姛");
+                    responseTv.setText(data.toString());
+                }
+            }
+
             @Override
             public void onError(HDLLinkException error) {
                 tv.setText(error.getMsg());
             }
-
-            @Override
-            public void onSuccess(String data) {
-                tv.setText("鑾峰彇璁惧鍒楄〃鎴愬姛");
-                responseTv.setText(data);
-
-                handelFunctionList(data);
-            }
         });
-    }
-
-    void handelFunctionList(String data) {
-        try {
-            final LinkResponse linkResponse = GsonConvert.getGson().fromJson(data, new TypeToken<LinkResponse>() {
-            }.getType());
-
-            final BaseLocalResponse<List<FunctionBean>> bean = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<List<FunctionBean>>>() {
-            }.getType());
-            devicesList.clear();
-            devicesList.addAll(bean.getObjects());
-
-            Log.d(TAG, "handelFunList-----> " + devicesList.toString());
-        } catch (Exception e) {
-            Log.e(TAG, "handelFunList: " + e.getMessage());
-        }
-
     }
 
     /**
@@ -643,10 +632,12 @@
             sids.add(testLightSid);
         }
 
-        HDLLink.getInstance().getFunctionAttribute(sids, new HDLLinkCallBack() {
+        HDLLink.getInstance().getFunctionAttributeInfo(sids, new HDLLinkTCallBack<List<LinkFunctionInfo>>() {
             @Override
-            public void onSuccess(String msg) {
-                responseTv.setText(msg);
+            public void onSuccess(List<LinkFunctionInfo> data) {
+                if (data != null && data.size() != 0) {
+                    responseTv.setText(data.toString());
+                }
             }
 
             @Override
@@ -707,7 +698,7 @@
         request.setStatus(statusBeanList);
         requestList.add(request);
 
-        HDLLink.getInstance().propertyDown(requestList, new HDLLinkCallBack() {
+        HDLLink.getInstance().propertyDownDevice(requestList, new HDLLinkTCallBack<String>() {
             @Override
             public void onSuccess(String data) {
                 responseTv.setText(data);
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
index e650391..89eedec 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -45,7 +45,7 @@
             }
 
             String mac_Oid_GatewayId = topics[2];
-            Log.d("panlili", "AllTopicManagerUtils.java:manager----->topic= "  + topic);
+            //Log.d("panlili", "AllTopicManagerUtils.java:manager----->topic= "  + topic);
 
             if (!isLocalDevice(mac_Oid_GatewayId)) {
                 LogUtils.i("涓嶆槸褰撳墠璁惧鐨勭綉鍏矷d锛孖d鏄�" + mac_Oid_GatewayId);
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 2dd79d1..78b7d0f 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
@@ -2,20 +2,26 @@
 
 import android.content.Context;
 
+import com.google.gson.reflect.TypeToken;
 import com.hdl.hdlhttp.HxHttpConfig;
 import com.hdl.sdk.common.event.DeleteNetworkListener;
 import com.hdl.sdk.common.event.EventDispatcher;
 import com.hdl.sdk.common.event.EventListener;
+import com.hdl.sdk.common.exception.HDLLinkException;
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.gson.GsonConvert;
+import com.hdl.sdk.connect.bean.LinkFunctionInfo;
+import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
 import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
 import com.hdl.sdk.connect.bean.request.ListSidRequest;
 import com.hdl.sdk.connect.bean.request.ListUploadRequest;
+import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
+import com.hdl.sdk.connect.callback.HDLLinkTCallBack;
 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.listener.GatewayListener;
 import com.hdl.sdk.connect.cloud.listener.SibichiListener;
@@ -265,6 +271,33 @@
     }
 
     /**
+     * 鑾峰彇璁惧鍒楄〃
+     */
+    public void getFunctionInfoList(HDLLinkTCallBack<List<LinkFunctionInfo>> callBack) {
+        getFunctionList(new HDLLinkCallBack() {
+            @Override
+            public void onSuccess(String msg) {
+                LinkResponse linkResponse = GsonConvert.getGson().fromJson(msg, new TypeToken<LinkResponse>() {
+                }.getType());
+
+                final BaseLocalResponse<List<LinkFunctionInfo>> listBaseLocalResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<List<LinkFunctionInfo>>>() {
+                }.getType());
+                if (callBack != null) {
+                    callBack.onSuccess(listBaseLocalResponse.getObjects());
+                }
+
+            }
+
+            @Override
+            public void onError(HDLLinkException e) {
+                if (callBack != null) {
+                    callBack.onError(e);
+                }
+            }
+        });
+    }
+
+    /**
      * 鑾峰彇璁惧鍔熻兘灞炴��
      *
      * @param sids
@@ -275,6 +308,35 @@
     }
 
     /**
+     * 鑾峰彇璁惧鍔熻兘灞炴��
+     *
+     * @param sids
+     * @param callBack
+     */
+    public void getFunctionAttributeInfo(List<String> sids, HDLLinkTCallBack<List<LinkFunctionInfo>> callBack) {
+        getFunctionAttribute(sids, new HDLLinkCallBack() {
+            @Override
+            public void onSuccess(String msg) {
+                LinkResponse linkResponse = GsonConvert.getGson().fromJson(msg, new TypeToken<LinkResponse>() {
+                }.getType());
+
+                final BaseLocalResponse<List<LinkFunctionInfo>> listBaseLocalResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<List<LinkFunctionInfo>>>() {
+                }.getType());
+                if (callBack != null) {
+                    callBack.onSuccess(listBaseLocalResponse.getObjects());
+                }
+            }
+
+            @Override
+            public void onError(HDLLinkException e) {
+                if (callBack != null) {
+                    callBack.onError(e);
+                }
+            }
+        });
+    }
+
+    /**
      * 璁惧鎺у埗
      *
      * @param request  鎺у埗鐘舵�佸弬鏁�
@@ -285,6 +347,35 @@
     }
 
     /**
+     * 璁惧鎺у埗
+     *
+     * @param request  鎺у埗鐘舵�佸弬鏁�
+     * @param callBack 缁撴灉鍥炶皟
+     */
+    public void propertyDownDevice(List<DeviceControlRequest> request, HDLLinkTCallBack<String> callBack) {
+        propertyDown(request, new HDLLinkCallBack() {
+            @Override
+            public void onSuccess(String msg) {
+                LinkResponse linkResponse = GsonConvert.getGson().fromJson(msg, new TypeToken<LinkResponse>() {
+                }.getType());
+
+                final BaseLocalResponse<String> listBaseLocalResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<String>>() {
+                }.getType());
+                if (callBack != null) {
+                    callBack.onSuccess(listBaseLocalResponse.getObjects());
+                }
+            }
+
+            @Override
+            public void onError(HDLLinkException e) {
+                if (callBack != null) {
+                    callBack.onError(e);
+                }
+            }
+        });
+    }
+
+    /**
      * 璇诲彇鐘舵��
      *
      * @param sids     璇锋眰鍙傛暟 鎸囧畾璇诲彇鐨勮澶噑id鍒楄〃
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/AttributesInfo.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/AttributesInfo.java
new file mode 100644
index 0000000..4c20b0b
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/AttributesInfo.java
@@ -0,0 +1,73 @@
+package com.hdl.sdk.connect.bean;
+
+import androidx.annotation.NonNull;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class AttributesInfo implements Serializable {
+
+    private String key;
+    private String data_type;
+    private List<String> value = new ArrayList<>();
+    private String max;
+    private String min;
+
+
+    public List<String> getValue() {
+        if (value == null) {
+            return new ArrayList<>();
+        }
+        return value;
+    }
+
+    public void setValue(@NonNull List<String> value) {
+        this.value = value;
+    }
+
+    public String getMax() {
+        return max == null ? "" : max;
+    }
+
+    public void setMax(String max) {
+        this.max = max;
+    }
+
+    public String getMin() {
+        return min == null ? "" : min;
+    }
+
+    public void setMin(String min) {
+        this.min = min;
+    }
+
+    @NonNull
+    public String getKey() {
+        return key == null ? "" : key;
+    }
+
+    public void setKey(@NonNull String key) {
+        this.key = key;
+    }
+
+    @NonNull
+    public String getData_type() {
+        return data_type == null ? "" : data_type;
+    }
+
+    public void setData_type(@NonNull String data_type) {
+        this.data_type = data_type;
+    }
+
+    @Override
+    public String toString() {
+        return "AttributesInfo{" +
+                "key='" + key + '\'' +
+                ", data_type='" + data_type + '\'' +
+                ", value=" + value +
+                ", max='" + max + '\'' +
+                ", min='" + min + '\'' +
+                '}';
+    }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkFunctionInfo.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkFunctionInfo.java
new file mode 100644
index 0000000..13555a2
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkFunctionInfo.java
@@ -0,0 +1,146 @@
+package com.hdl.sdk.connect.bean;
+
+import androidx.annotation.NonNull;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class LinkFunctionInfo implements Serializable {
+    private String sid;//鍔熻兘鐨剆id
+    private String oid;//妯″潡鐨刼id
+    private String name;//鍔熻兘鍥炶矾鍚嶅瓧
+    private String spk;//spk
+    private String omodel;
+    private String src;
+    private String online;
+    private List<AttributesInfo> attributes = new ArrayList<>();//鍔熻兘灞炴�э紝闇�瑕佸崟鐙彂閫佸姛鑳藉睘鎬ц鍙栫殑鎸囦护璇诲洖鏉�
+    private List<StatusInfo> status = new ArrayList<>();//褰撳墠璁惧鐘舵�佸�硷紝璁惧鎺у埗鐨勬椂鍊欐墠鐢ㄥ埌
+
+    private boolean templateFlag = false;//妯℃澘鏍囪
+
+    /**
+     * 1:灞曠ず 2:涓嶅睍绀�
+     */
+    private String show;
+
+    public String getShow() {
+        return show == null ? "1" : show;
+    }
+
+    public void setShow(@NonNull String show) {
+        this.show = show;
+    }
+
+
+    public boolean isTemplateFlag() {
+        return templateFlag;
+    }
+
+    public void setTemplateFlag(boolean templateFlag) {
+        this.templateFlag = templateFlag;
+    }
+
+
+    @NonNull
+    public String getSid() {
+        return sid == null ? "" : sid;
+    }
+
+    public void setSid(@NonNull String sid) {
+        this.sid = sid;
+    }
+
+    @NonNull
+    public String getOid() {
+        return oid == null ? "" : oid;
+    }
+
+    public void setOid(@NonNull String oid) {
+        this.oid = oid;
+    }
+
+    @NonNull
+    public String getName() {
+        return name == null ? "" : name;
+    }
+
+    public void setName(@NonNull String name) {
+        this.name = name;
+    }
+
+    @NonNull
+    public String getSpk() {
+        return spk == null ? "" : spk;
+    }
+
+    public void setSpk(@NonNull String spk) {
+        this.spk = spk;
+    }
+
+    @NonNull
+    public String getOmodel() {
+        return omodel == null ? "" : omodel;
+    }
+
+    public void setOmodel(@NonNull String omodel) {
+        this.omodel = omodel;
+    }
+
+    @NonNull
+    public String getSrc() {
+        return src == null ? "" : src;
+    }
+
+    public void setSrc(@NonNull String src) {
+        this.src = src;
+    }
+
+    @NonNull
+    public String getOnline() {
+        return online == null ? "" : online;
+    }
+
+    public void setOnline(@NonNull String online) {
+        this.online = online;
+    }
+
+    public List<AttributesInfo> getAttributes() {
+        if (attributes == null) {
+            return new ArrayList<>();
+        }
+        return attributes;
+    }
+
+    public void setAttributes(List<AttributesInfo> attributes) {
+        this.attributes = attributes;
+    }
+
+    public List<StatusInfo> getStatus() {
+        if (status == null) {
+            return new ArrayList<>();
+        }
+        return status;
+    }
+
+    public void setStatus(List<StatusInfo> status) {
+        this.status = status;
+    }
+
+    @Override
+    public String toString() {
+        return "LinkFunctionInfo{" +
+                "sid='" + sid + '\'' +
+                ", oid='" + oid + '\'' +
+                ", name='" + name + '\'' +
+                ", spk='" + spk + '\'' +
+                ", omodel='" + omodel + '\'' +
+                ", src='" + src + '\'' +
+                ", online='" + online + '\'' +
+                ", attributes=" + attributes +
+                ", status=" + status +
+                ", templateFlag=" + templateFlag +
+                ", show='" + show + '\'' +
+                '}';
+    }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/StatusInfo.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/StatusInfo.java
new file mode 100644
index 0000000..1898576
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/StatusInfo.java
@@ -0,0 +1,39 @@
+
+package com.hdl.sdk.connect.bean;
+
+import androidx.annotation.NonNull;
+
+import java.io.Serializable;
+
+
+public class StatusInfo implements Serializable {
+
+    private String key;
+    private String value;
+
+    @NonNull
+    public String getKey() {
+        return key == null ? "" : key;
+    }
+
+    public void setKey(@NonNull String key) {
+        this.key = key;
+    }
+
+    @NonNull
+    public String getValue() {
+        return value == null ? "" : value;
+    }
+
+    public void setValue(@NonNull String value) {
+        this.value = value;
+    }
+
+    @Override
+    public String toString() {
+        return "StatusInfo{" +
+                "key='" + key + '\'' +
+                ", value='" + value + '\'' +
+                '}';
+    }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkTCallBack.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkTCallBack.java
new file mode 100644
index 0000000..d8a772d
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkTCallBack.java
@@ -0,0 +1,10 @@
+package com.hdl.sdk.connect.callback;
+
+/**
+ * 鏈湴閫氫俊閫氱敤CallBack
+ */
+public interface HDLLinkTCallBack<T> extends BaseCallBack{
+
+    void onSuccess(T data);
+
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/LinkResponseUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/LinkResponseUtils.java
new file mode 100644
index 0000000..5a3c1ee
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/LinkResponseUtils.java
@@ -0,0 +1,44 @@
+package com.hdl.sdk.connect.utils;
+
+import android.text.TextUtils;
+
+import com.google.gson.reflect.TypeToken;
+import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.gson.GsonConvert;
+import com.hdl.sdk.connect.bean.LinkResponse;
+import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
+
+import java.lang.reflect.Type;
+
+public class LinkResponseUtils<T> {
+
+    public Type getType() {
+        return new TypeToken<BaseLocalResponse<T>>() {
+        }.getType();
+    }
+
+    /**
+     * 杞崲鎻愬彇LinkResponse閲岄潰鐨刼bjects
+     *
+     * @param msg
+     * @return
+     */
+    public static <T> T convertLinkResponse(Object msg, Type type) {
+        T bean = null;
+        if (msg != null && msg instanceof LinkResponse) {
+            LinkResponse linkResponse = (LinkResponse) msg;
+            String data = linkResponse.getData();
+            if (!TextUtils.isEmpty(data)) {
+                try {
+                    final BaseLocalResponse<T> response = GsonConvert.getGson().fromJson(data, type);
+                    if (response != null) {
+                        bean = response.getObjects();
+                    }
+                } catch (Exception e) {
+                    LogUtils.e("convertLinkResponse catch:" + e.getMessage());
+                }
+            }
+        }
+        return bean;
+    }
+}

--
Gitblit v1.8.0