From a3f9e5ce8dce3d86a60a79b85ce44424a612c6fa Mon Sep 17 00:00:00 2001
From: 562935844@qq.com
Date: 星期五, 13 五月 2022 14:06:45 +0800
Subject: [PATCH] 提交jar版本

---
 HDLSDK/hdl-common/build.gradle                                                           |   14 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java           |   55 +-
 HDLSDK/app/src/main/AndroidManifest.xml                                                  |    2 
 HDLSDK/hdl-socket/build.gradle                                                           |    9 
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java            |   31 
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java                       |   19 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java               |   39 +
 HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java                           |  244 +++++++------
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java                           |   15 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java           |   10 
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java                 |    4 
 HDLSDK_DEMO/app/src/main/AndroidManifest.xml                                             |    2 
 HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/DemoAdapter.java                            |    3 
 HDLSDK/hdl-connect/libs/gson-2.8.8.jar                                                   |    0 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkResponse.java              |    6 
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/IpUtils.java                    |   25 -
 HDLSDK/build.gradle                                                                      |    3 
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/exception/HDLLinkException.java       |    5 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkRequest.java               |    6 
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java                |   19 
 HDLSDK_DEMO/app/libs/hdl-socket.jar                                                      |    0 
 HDLSDK/app/libs/gson-2.8.8.jar                                                           |    0 
 HDLSDK_DEMO/app/libs/commons-lang3-3.12.0.jar                                            |    0 
 HDLSDK_DEMO/.idea/gradle.xml                                                             |    3 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java    |   14 
 HDLSDK/settings.gradle                                                                   |    1 
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/TextUtils.java                  |    9 
 HDLSDK/hdl-common/libs/gson-2.8.8.jar                                                    |    0 
 HDLSDK/hdl-connect/libs/commons-lang3-3.12.0.jar                                         |    0 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java                        |    2 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ProtocolParse.java            |    2 
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java                 |   54 +-
 HDLSDK_DEMO/app/build.gradle                                                             |    7 
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/ThreadToolUtils.java            |   17 
 HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/annotation/ConnectStatus.java         |   17 
 HDLSDK/app/build.gradle                                                                  |    1 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkCallBack.java       |    3 
 /dev/null                                                                                |  106 -----
 HDLSDK/hdl-connect/build.gradle                                                          |   13 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java         |    4 
 HDLSDK_DEMO/app/libs/gson-2.8.8.jar                                                      |    0 
 HDLSDK/com.hdl.sdk/build.gradle                                                          |  132 +------
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/gson/ParameterizedTypeImpl.java |    5 
 HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/LogUtils.java                   |   16 
 HDLSDK_DEMO/app/libs/hdl-common.jar                                                      |    0 
 HDLSDK_DEMO/.idea/compiler.xml                                                           |    2 
 HDLSDK_DEMO/app/libs/hdl-connect.jar                                                     |    0 
 HDLSDK_DEMO/.idea/misc.xml                                                               |    6 
 HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java                                |  140 +++---
 49 files changed, 412 insertions(+), 653 deletions(-)

diff --git a/HDLSDK/.idea/compiler.xml b/HDLSDK/.idea/compiler.xml
deleted file mode 100644
index 245a82c..0000000
--- a/HDLSDK/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="CompilerConfiguration">
-    <bytecodeTargetLevel target="1.8" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/HDLSDK/.idea/gradle.xml b/HDLSDK/.idea/gradle.xml
deleted file mode 100644
index 4c7b1e5..0000000
--- a/HDLSDK/.idea/gradle.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="GradleMigrationSettings" migrationVersion="1" />
-  <component name="GradleSettings">
-    <option name="linkedExternalProjectsSettings">
-      <GradleProjectSettings>
-        <option name="testRunner" value="PLATFORM" />
-        <option name="distributionType" value="DEFAULT_WRAPPED" />
-        <option name="externalProjectPath" value="$PROJECT_DIR$" />
-        <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-common" />
-            <option value="$PROJECT_DIR$/hdl-connect" />
-            <option value="$PROJECT_DIR$/hdl-socket" />
-          </set>
-        </option>
-        <option name="resolveModulePerSourceSet" value="false" />
-        <option name="useQualifiedModuleNames" value="true" />
-      </GradleProjectSettings>
-    </option>
-  </component>
-</project>
\ No newline at end of file
diff --git a/HDLSDK/app/build.gradle b/HDLSDK/app/build.gradle
index 1960e0a..f7edf1a 100644
--- a/HDLSDK/app/build.gradle
+++ b/HDLSDK/app/build.gradle
@@ -32,6 +32,7 @@
     implementation 'androidx.appcompat:appcompat:1.3.1'
     implementation 'com.google.android.material:material:1.4.0'
     implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
+    implementation files('libs\\gson-2.8.8.jar')
 
     testImplementation 'junit:junit:4.+'
     androidTestImplementation 'androidx.test.ext:junit:1.1.2'
diff --git a/HDLSDK/app/libs/gson-2.8.8.jar b/HDLSDK/app/libs/gson-2.8.8.jar
new file mode 100644
index 0000000..4707d40
--- /dev/null
+++ b/HDLSDK/app/libs/gson-2.8.8.jar
Binary files differ
diff --git a/HDLSDK/app/src/main/AndroidManifest.xml b/HDLSDK/app/src/main/AndroidManifest.xml
index 964acd6..8d37dcb 100644
--- a/HDLSDK/app/src/main/AndroidManifest.xml
+++ b/HDLSDK/app/src/main/AndroidManifest.xml
@@ -12,14 +12,12 @@
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
     <application
-        android:name=".App"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.HDLSDK">
-        <activity android:name=".device.DevicesListActivity"></activity>
         <activity
             android:name=".MainActivity"
             android:exported="true">
diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java
deleted file mode 100644
index 2935d87..0000000
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.hdl.hdlsdk;
-
-import android.app.Application;
-import android.util.Log;
-
-import com.hdl.sdk.common.HDLSdk;
-import com.hdl.sdk.common.event.EventListener;
-import com.hdl.sdk.common.utils.LogUtils;
-import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.LinkResponse;
-
-/**
- * Created by Tong on 2021/10/8.
- */
-public class App extends Application {
-
-    private String deviceStatusUpdateTopic;
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        //鍒濆鍖朣DK
-        HDLSdk.getInstance().init(this);
-        //鎺у埗SDK鏃ュ織鎵撳嵃
-        HDLSdk.getInstance().setLogEnabled(true);
-
-    }
-
-    @Override
-    public void onTerminate() {
-        super.onTerminate();
-
-    }
-}
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 ac61a13..f4a4071 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -10,7 +10,6 @@
 import androidx.recyclerview.widget.RecyclerView;
 
 import android.Manifest;
-import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
@@ -21,46 +20,30 @@
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
-import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
-import com.hdl.hdlsdk.device.DevicesListActivity;
 import com.hdl.sdk.common.config.TopicConstant;
 import com.hdl.sdk.common.event.EventListener;
 import com.hdl.sdk.common.exception.HDLLinkException;
 import com.hdl.sdk.common.utils.IdUtils;
-import com.hdl.sdk.common.utils.IpUtils;
-import com.hdl.sdk.common.utils.LogUtils;
 import com.hdl.sdk.common.utils.gson.GsonConvert;
 import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.LinkRequest;
 import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
-import com.hdl.sdk.connect.bean.request.BroadcastRequest;
-import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
 import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
 import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
 import com.hdl.sdk.connect.socket.HDLAuthSocket;
-import com.hdl.sdk.connect.socket.HDLSocket;
 import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
-import com.hdl.sdk.connect.protocol.LinkMessageDecoder;
-import com.hdl.sdk.connect.protocol.LinkMessageEncoder;
-import com.hdl.sdk.socket.SocketOptions;
-import com.hdl.sdk.socket.codec.MessagePipeLine;
-import java.util.Base64;
+import com.hdl.sdk.socket.SocketBoot;
 
 import java.io.UnsupportedEncodingException;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
-import java.util.Base64;
 import java.util.List;
 import java.util.Map;
-
-import static com.hdl.sdk.common.config.TopicConstant.GATEWAY_SEARCH_REPLY;
-import static java.util.Base64.*;
 
 public class MainActivity extends AppCompatActivity {
 
@@ -71,18 +54,19 @@
     private TextView responseTv;
     boolean isOn;
     private EventListener allTopicsListener;
-    private String testLightSid = "0001010D48C71B02020100010101";
+    private String testLightSid = "1493092497588469761";
 
     @Override
     protected void onDestroy() {
         super.onDestroy();
         removeAllTopicsListener();
     }
-void init() {
-//    HDLLinkConfig.getInstance().setLocalSecret("7d04c4e3c2b7d600");
-//    HDLLinkConfig.getInstance().setGatewayId("1473119283609321473");
-//    HDLLinkConfig.getInstance().setLocalEncrypt(true);
-}
+
+    void init() {
+        HDLLinkConfig.getInstance().setLocalSecret("e186beeb7974998e");
+        HDLLinkConfig.getInstance().setGatewayId("1519863101509361666");
+    }
+
     @RequiresApi(api = Build.VERSION_CODES.O)
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -94,7 +78,7 @@
         rv = findViewById(R.id.rv);
         rv.setLayoutManager(new LinearLayoutManager(this));
 
-         init();
+//        init();
         checkIfCertified();
         initDeviceInfo();//鍒濆鍖栧熀鏈俊鎭紝闈炲父閲嶈锛岃璇佹椂瑕佺敤
         registerAllTopicsListener();
@@ -170,7 +154,7 @@
                         break;
                     case 8:
                         //鍔熻兘鍒楄〃
-                        startDevicesListActivity();
+//                        startDevicesListActivity();
                         break;
                     case 9:
                         //UDP鍙戦��
@@ -206,6 +190,7 @@
         String mes = isCertified ? "宸茬粡璁よ瘉杩�" : "鏈璇�";
         showToast(mes);
         tv.setText(mes);
+
     }
 
     /**
@@ -265,22 +250,23 @@
         HDLLink.getInstance().removeAllTopicsListener(allTopicsListener);
     }
 
-    void initDeviceInfo()
-    {
+    void initDeviceInfo() {
         AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
-        infoBean.setDeviceMAC("AA000000000000AF");
-        infoBean.setIPMAC("AA000000000000AF");
+        infoBean.setDeviceMAC("AA00000000000100");
+        infoBean.setIPMAC("AA00000000000100");
         infoBean.setDeviceName("闊充箰鎾斁鍣�");//璁惧鍚嶅瓧
         infoBean.setDeviceModel("MCLog.431");//璁惧鍨嬪彿
         infoBean.setAccessMode("WIFI");
         infoBean.setIPGateway("192.168.1.1");
-        infoBean.setIPAddress("192.168.1.102");
+        infoBean.setIPAddress("192.168.1.116");
         infoBean.setGateway_type("music.standard");
         infoBean.setHw_version("HW2.0");
         infoBean.setFw_version("Fw1.0");
-        infoBean.setOID("010105000000FE10");//姣忎釜璁惧oid閮借涓嶄竴鏍�
-        infoBean.setSid("110105000000FE08110100000000");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
+        infoBean.setOID("010105000000FE11");//姣忎釜璁惧oid閮借涓嶄竴鏍�
+        infoBean.setSid("110105000000FE08110100000011");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
         HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
+
+
     }
 
     /**
@@ -297,8 +283,8 @@
 
 //        姝e紡鏈嶅姟鍣�
         String spkStr = "screen.mirror";//浜у搧spk
-        String macStr = "AA000000000000AC";//璁惧鍞竴MAC鍦板潃
-        String secret = "ee62124c151b737c";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+        String macStr = "AA00000000000100";//璁惧鍞竴MAC鍦板潃
+        String secret = "e186beeb7974998e";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
 
         String mac_key = stringToMD5(stringToMD5(macStr + secret));
         String versionString = "HDL_V1.0.1";//
@@ -320,15 +306,16 @@
         HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
             @Override
             public void onError(HDLLinkException e) {
-                tv.setText("璁よ瘉澶辫触");
-                responseTv.setText(e.getMsg());
-                Log.i("TAG", "onError: 璁よ瘉澶辫触");
+//                tv.setText("璁よ瘉澶辫触");
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError: 璁よ瘉澶辫触" + e.getMsg());
             }
 
             @Override
             public void onSuccess(String msg) {
-                tv.setText("璁よ瘉鎴愬姛");
-                responseTv.setText(msg.toString());
+//                tv.setText("璁よ瘉鎴愬姛");
+//                responseTv.setText(msg.toString());
+                Log.i("TAG", "onSuccess: 璁よ瘉鎴愬姛" + msg.toString());
             }
         });
     }
@@ -364,15 +351,16 @@
         HDLLink.getInstance().searchGatewayBroadcast(new HDLAuthSocket.SearchGatewayCallBack() {
             @Override
             public void onError(HDLLinkException e) {
-                tv.setText("缃戝叧涓嶅湪绾�");
-                responseTv.setText(e.getMsg());
+//                tv.setText("缃戝叧涓嶅湪绾�");
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "缃戝叧涓嶅湪绾�" + e.getMsg());
             }
 
             @Override
             public void onSuccess(GatewaySearchBean gatewaySearchBean) {
-                tv.setText("缃戝叧鍦ㄧ嚎");
-                responseTv.setText("鎼滅储鎴愬姛 缃戝叧id锛�" + gatewaySearchBean.getGatewayId());
-//                                LogUtils.i("TAG", "onSuccess: 鎼滅储鎴愬姛锛�"+gatewaySearchBean.getGatewayId());
+//                tv.setText("缃戝叧鍦ㄧ嚎");
+//                responseTv.setText("鎼滅储鎴愬姛 缃戝叧id锛�" + gatewaySearchBean.getGatewayId());
+                Log.i("TAG", "onSuccess: 鎼滅储鎴愬姛锛�"+gatewaySearchBean.getGatewayId());
             }
         });
     }
@@ -386,13 +374,15 @@
         HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() {
             @Override
             public void onError(HDLLinkException error) {
-                tv.setText(error.getMsg());
+//                tv.setText(error.getMsg());
+                Log.i("TAG", "onError 鑾峰彇鍔熻兘鍒楄〃澶辫触" + error.getMsg());
             }
 
             @Override
             public void onSuccess(String data) {
-                tv.setText("鑾峰彇鍔熻兘鍒楄〃鎴愬姛");
-                responseTv.setText(data);
+//                tv.setText("鑾峰彇鍔熻兘鍒楄〃鎴愬姛");
+//                responseTv.setText(data);
+                Log.i("TAG", "onSuccess 鑾峰彇鍔熻兘鍒楄〃鎴愬姛" + data.toString());
             }
         });
     }
@@ -408,12 +398,14 @@
         HDLLink.getInstance().getFunctionAttribute(sids, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                responseTv.setText(msg);
+//                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess 鍔熻兘灞炴�ц鍙栨垚鍔�" + msg.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鑾峰彇鍔熻兘鍒楄〃澶辫触" + e.getMsg());
             }
         });
     }
@@ -429,20 +421,22 @@
         HDLLink.getInstance().propertyRead(list, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String data) {
-                tv.setText("璇诲彇鎴愬姛");
-                responseTv.setText(data);
+//                tv.setText("璇诲彇鎴愬姛");
+//                responseTv.setText(data);
+                Log.i("TAG", "onSuccess 璇诲彇璁惧鐘舵�佹垚鍔�" + data.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                tv.setText("璇诲彇澶辫触");
-                responseTv.setText(e.getMsg());
+//                tv.setText("璇诲彇澶辫触");
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 璇诲彇璁惧鐘舵�佸け璐�" + e.getMsg());
             }
         });
     }
 
     /**
-     * 鎺у埗澶辫触
+     * 鎺у埗璁惧
      * 鍥炲鍝嶅簲code涓�200 浠h〃鎵ц鎴愬姛
      */
     void controlDecide() {
@@ -461,12 +455,14 @@
         HDLLink.getInstance().propertyDown(requestList, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String data) {
-                responseTv.setText(data);
+//                responseTv.setText(data);
+                Log.i("TAG", "onSuccess 鎺у埗璁惧鎴愬姛" + data.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鎺у埗璁惧澶辫触" + e.getMsg());
             }
         });
     }
@@ -479,12 +475,14 @@
         HDLLink.getInstance().getSceneList(new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                responseTv.setText(msg);
+//                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess 鑾峰彇鍦烘櫙鍒楄〃鎴愬姛" + msg.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鑾峰彇鍦烘櫙鍒楄〃澶辫触" + e.getMsg());
             }
         });
     }
@@ -509,21 +507,23 @@
         HDLLink.getInstance().controlScene(sids, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                responseTv.setText(msg);
+//                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess 鍦烘櫙鎺у埗鎴愬姛" + msg.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鍦烘櫙鎺у埗澶辫触" + e.getMsg());
             }
         });
     }
 
 
-    void startDevicesListActivity() {
+/*    void startDevicesListActivity() {
         Intent intent = new Intent(this, DevicesListActivity.class);
         startActivity(intent);
-    }
+    }*/
 
     /**
      * TCP鍙戦�� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
@@ -577,13 +577,14 @@
         HDLLink.getInstance().udpSendMsg(propertyDownTopic, bodyStr, new HDLLinkResponseCallBack() {
             @Override
             public void onSuccess(LinkResponse msg) {
-                Log.i("udpSendWithCallback", "udpSendWithCallback");
-                responseTv.setText(GsonConvert.getGson().toJson(msg));
+                Log.i("TAG", "onSuccess UDP鍙戦�佹垚鍔�" + GsonConvert.getGson().toJson(msg));
+//                responseTv.setText(GsonConvert.getGson().toJson(msg));
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError UDP鍙戦�佸け璐�" + e.getMsg());
             }
         });
     }
@@ -598,13 +599,14 @@
         HDLLink.getInstance().tcpSendMsg(propertyDownTopic, bodyStr, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                Log.i("tcpSendWithCallback", "tcpSendWithCallback");
-                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess TCP鍙戦�佹垚鍔�" + msg);
+//                responseTv.setText(msg);
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError TCP鍙戦�佸け璐�");
             }
         });
     }
diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/DevicesListActivity.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/DevicesListActivity.java
deleted file mode 100644
index f253b34..0000000
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/DevicesListActivity.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.hdl.hdlsdk.device;
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.OrientationHelper;
-import androidx.recyclerview.widget.RecyclerView;
-
-import android.annotation.SuppressLint;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.google.gson.reflect.TypeToken;
-import com.hdl.hdlsdk.DemoAdapter;
-import com.hdl.hdlsdk.R;
-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.HDLLink;
-import com.hdl.sdk.connect.bean.LinkResponse;
-import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
-import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
-import com.hdl.sdk.connect.callback.HDLLinkCallBack;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DevicesListActivity extends AppCompatActivity {
-
-    private static final String TAG = "DevicesListActivity";
-    private List<FunctionBean> devicesList = new ArrayList<>();
-    private DevicesListAdapter mDevicesListAdapter;
-    private RecyclerView mRecyclerView;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_devices_list);
-
-        initView();
-        initData();
-    }
-
-    @SuppressLint("WrongConstant")
-    private void initView() {
-        mRecyclerView = findViewById(R.id.device_list_rv);
-        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
-        mDevicesListAdapter = new DevicesListAdapter(this, devicesList);
-        mRecyclerView.setAdapter(mDevicesListAdapter);
-    }
-
-    private void initData() {
-        getFunctionList();
-    }
-
-    /**
-     * 鑾峰彇鍔熻兘鍒楄〃
-     */
-    void getFunctionList(){
-
-        HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() {
-            @Override
-            public void onError(HDLLinkException error) {
-                Log.e(TAG,error.getMsg());
-            }
-
-            @Override
-            public void onSuccess(String data) {
-                Log.i(TAG, "鑾峰彇璁惧鍒楄〃鎴愬姛");
-                handelFunList(data);
-            }
-        });
-    }
-
-    void handelFunList(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());
-          mDevicesListAdapter.notifyDataSetChanged();
-      }catch (Exception e){
-          Log.e(TAG, "handelFunList: " + e.getMessage());
-      }
-
-    }
-}
\ No newline at end of file
diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/DevicesListAdapter.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/DevicesListAdapter.java
deleted file mode 100644
index d352b7c..0000000
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/DevicesListAdapter.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.hdl.hdlsdk.device;
-
-import android.content.Context;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.CompoundButton;
-import android.widget.Switch;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
-import com.chad.library.adapter.base.viewholder.BaseViewHolder;
-import com.hdl.hdlsdk.DemoBean;
-import com.hdl.hdlsdk.R;
-import com.hdl.sdk.common.config.TopicConstant;
-import com.hdl.sdk.common.exception.HDLLinkException;
-import com.hdl.sdk.common.utils.IdUtils;
-import com.hdl.sdk.common.utils.LogUtils;
-import com.hdl.sdk.common.utils.gson.GsonConvert;
-import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
-import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
-import com.hdl.sdk.connect.callback.HDLLinkCallBack;
-import com.hdl.sdk.connect.config.HDLLinkConfig;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DevicesListAdapter extends RecyclerView.Adapter<DevicesListAdapter.ViewHolder> {
-
-    private LayoutInflater mInflater;
-    private List<FunctionBean> mList = null;
-
-    public DevicesListAdapter(Context context, List<FunctionBean> devicesList) {
-        this.mInflater = LayoutInflater.from(context);
-        this.mList = devicesList;
-    }
-
-    /**
-     * item鏄剧ず绫诲瀷
-     *
-     * @param parent
-     * @param viewType
-     * @return
-     */
-    @Override
-    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        View view = mInflater.inflate(R.layout.item_devices_list, parent, false);
-        ViewHolder viewHolder = new ViewHolder(view);
-        return viewHolder;
-    }
-
-    /**
-     * 鏁版嵁鐨勭粦瀹氭樉绀�
-     *
-     * @param holder
-     * @param position
-     */
-    @Override
-    public void onBindViewHolder(ViewHolder holder, int position) {
-        holder.item_tv.setText(mList.get(position).getName());
-        holder.device_on_off_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
-                propertyDown(mList.get(position), isChecked);
-            }
-        });
-    }
-
-    @Override
-    public int getItemCount() {
-        return mList.size();
-    }
-
-    //鑷畾涔夌殑ViewHolder锛屾寔鏈夋瘡涓狪tem鐨勭殑鎵�鏈夌晫闈㈠厓绱�
-    public static class ViewHolder extends RecyclerView.ViewHolder {
-        public TextView item_tv;
-        public Switch device_on_off_switch;
-
-        public ViewHolder(View view) {
-            super(view);
-            item_tv = (TextView) view.findViewById(R.id.device_title_tv);
-            device_on_off_switch = view.findViewById(R.id.device_on_off_switch);
-        }
-    }
-
-    private void propertyDown(FunctionBean functionBean, Boolean isOn){
-        List<DeviceControlRequest> requestList = new ArrayList<>();
-        DeviceControlRequest request = new DeviceControlRequest();
-        request.setSid(functionBean.getSid());
-        List<DeviceControlRequest.StatusBean>  statusBeanList= new ArrayList<>();
-        DeviceControlRequest.StatusBean bean =  new DeviceControlRequest.StatusBean();
-        bean.setKey("on_off");
-        bean.setValue(isOn ? "on" : "off");
-        statusBeanList.add(bean);
-        request.setStatus(statusBeanList);
-        requestList.add(request);
-        String time = String.valueOf(System.currentTimeMillis());
-
-        HDLLink.getInstance().propertyDown(requestList, new HDLLinkCallBack() {
-            @Override
-            public void onSuccess(String data) {
-                Log.i("propertyDown",data);
-            }
-
-            @Override
-            public void onError(HDLLinkException e) {
-                Log.e("propertyDown", "ERROR :"+ e.getMsg());
-            }
-        });
-
-    }
-}
\ No newline at end of file
diff --git a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/FunctionBean.java b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/FunctionBean.java
deleted file mode 100644
index 232b657..0000000
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/device/FunctionBean.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.hdl.hdlsdk.device;
-
-import com.chad.library.adapter.base.entity.MultiItemEntity;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Created by jlchen on 12/7/21.
- */
-public class FunctionBean implements Serializable {
-    private String sid;
-    private String oid;
-    private String name;
-    private String spk;
-    private String omodel;
-    private String src;
-    private String online;
-    private List<FunctionStatus> status;
-
-    public String getSid() {
-        return sid;
-    }
-
-    public void setSid(String sid) {
-        this.sid = sid;
-    }
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getSpk() {
-        return spk;
-    }
-
-    public void setSpk(String spk) {
-        this.spk = spk;
-    }
-
-    public String getOmodel() {
-        return omodel;
-    }
-
-    public void setOmodel(String omodel) {
-        this.omodel = omodel;
-    }
-
-    public String getSrc() {
-        return src;
-    }
-
-    public void setSrc(String src) {
-        this.src = src;
-    }
-
-    public String getOnline() {
-        return online;
-    }
-
-    public void setOnline(String online) {
-        this.online = online;
-    }
-
-    public List<FunctionStatus> getStatus() {
-        return status;
-    }
-
-    public void setStatus(List<FunctionStatus> status) {
-        this.status = status;
-    }
-
-    public class FunctionStatus implements Serializable {
-        private String key;
-        private String value;
-
-        public String getKey() {
-            return key;
-        }
-
-        public void setKey(String key) {
-            this.key = key;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-        public void setValue(String value) {
-            this.value = value;
-        }
-    }
-
-}
diff --git a/HDLSDK/build.gradle b/HDLSDK/build.gradle
index 8641fad..81b2e55 100644
--- a/HDLSDK/build.gradle
+++ b/HDLSDK/build.gradle
@@ -12,14 +12,15 @@
     }
 }
 
-
 allprojects {
     repositories {
         maven { url 'https://maven.aliyun.com/repository/google' }
         maven { url 'https://maven.aliyun.com/repository/jcenter' }
         maven { url 'https://maven.aliyun.com/repository/public' }
+
         google()
         maven { url "https://jitpack.io" }
+
     }
 }
 
diff --git a/HDLSDK/com.hdl.sdk/build.gradle b/HDLSDK/com.hdl.sdk/build.gradle
index 795f57b..e9a0572 100644
--- a/HDLSDK/com.hdl.sdk/build.gradle
+++ b/HDLSDK/com.hdl.sdk/build.gradle
@@ -1,8 +1,11 @@
 //鎵撳寘鐨�
-apply plugin: 'com.android.library'
-apply plugin:'com.kezong.fat-aar'
+//apply plugin: 'com.android.library'
+//apply plugin:'com.kezong.fat-aar'
+plugins {
+    id 'java-library'
+}
 
-android {
+/*android {
     compileSdkVersion rootProject.compileSdkVersion
 
     defaultConfig {
@@ -21,23 +24,27 @@
         sourceCompatibility 1.8
         targetCompatibility 1.8
     }
-}
+
+    //gradlew assembleRelease
+    //gradlew makeJar
+
+}*/
 
 dependencies {
 
     implementation fileTree(include: ['*.jar'], dir: 'libs')
 
-//    embed 'com.ezviz.sdk:ezviz-sdk:4.16.1'
-//    embed(name: 'hdl-common-release',ext: 'aar')
-//    embed(name: 'hdl-connect-release',ext: 'aar')
-//    embed(name: 'hdl-socket-release',ext: 'aar')
+//    embed project(path: ':hdl-common', configuration:'default')
+//    embed project(path: ':hdl-connect', configuration:'default')
+//    embed project(path: ':hdl-socket', configuration:'default')
 
-    embed project(path: ':hdl-common', configuration:'default')
-    embed project(path: ':hdl-connect', configuration:'default')
-    embed project(path: ':hdl-socket', configuration:'default')
+    implementation project(path: ':hdl-common')
+    implementation project(path: ':hdl-connect')
+    implementation project(path: ':hdl-socket')
 }
 
 //鎵撳寘鐨�
+/*
 buildscript {
 
     repositories {
@@ -50,105 +57,4 @@
         classpath 'com.android.tools.build:gradle:3.6.3'
         classpath 'com.kezong:fat-aar:1.2.16'
     }
-}
-
-//allprojects {
-//    repositories {
-//        flatDir{
-//            dirs 'libs'
-//        }
-//        google()
-//        jcenter()
-//    }
-//}
-
-
-
-////杩愯鐨�
-//
-//apply plugin: 'com.android.application'
-//apply from: "../app-common/build_common.gradle"
-//apply plugin: 'kotlin-android'
-//apply plugin: 'kotlin-android-extensions'
-//
-////濡傛灉鏈夌敤鍒発apt娣诲姞濡備笅閰嶇疆
-//kapt {
-//    useBuildCache = true
-//    javacOptions {
-//        option("-Xmaxerrs", 500)
-//    }
-//}
-//
-//android {
-//
-//    compileSdkVersion 29
-//    buildToolsVersion "29.0.3"
-//
-//    sourceSets {
-//        main {
-//            jniLibs.srcDirs = ['libs']
-//        }
-//    }
-//    lintOptions {
-//        abortOnError false
-//    }
-//    defaultConfig {
-//        applicationId "com.evoyo.home1111112"
-//        minSdkVersion 21
-//        //noinspection ExpiredTargetSdkVersion
-//        targetSdkVersion 28
-//        versionCode 4160
-//        versionName "v4.16.0.20201230"
-//        ndk {
-//            abiFilters "armeabi-v7a", "arm64-v8a"
-//        }
-//        /*绂佹浣跨敤java8锛屽鏋渟dk浣跨敤浜唈ava8缂栬瘧锛屼絾鏄簲鐢ㄥ眰浣跨敤浜唈ava7缂栬瘧锛屼細瀵艰嚧搴旂敤灞傛墦鍖呮棤娉曢�氳繃*/
-//        compileOptions {
-//            sourceCompatibility JavaVersion.VERSION_1_7
-//            targetCompatibility JavaVersion.VERSION_1_7
-//        }
-//    }
-//    //鍦ˋndroid浠g爜鍧椾腑娣诲姞濡備笅閰嶇疆锛氾紙鍙紭鍖栨渶涓婂浘涓璽ransformClassDexBuilderForDebug鐨勬椂闂达級
-//    dexOptions {
-//        preDexLibraries true
-//        maxProcessCount 8
-//    }
-//    buildTypes {
-//        debug {
-//            minifyEnabled false
-//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
-//        }
-//    }
-//    productFlavors {
-//    }
-//}
-//
-//
-//dependencies {
-//    /*钀ょ煶SDK鏍稿績妯″潡锛屽繀椤�*/
-////  api project(path: ':ezviz-sdk')
-//    api 'com.ezviz.sdk:ezviz-sdk:4.16.1'
-//
-//    /*瑙嗛閫氳瘽妯″潡锛屾寜闇�浣跨敤*/
-////    api project(path: ':videotalk')
-//    api 'com.ezviz.sdk:videotalk:1.2.0'
-//
-//    /*瑙嗛閫氳瘽妯″潡锛屾寜闇�浣跨敤*/
-////    api project(path: ':streamctrl')
-//    api 'com.ezviz.sdk:streamctrl:1.2.0'
-//
-//    /*钀ょ煶鏍稿績妯″潡鐨勪笁鏂逛緷璧�*/
-////    implementation 'javax.jmdns:jmdns:3.4.1'
-//    implementation 'com.google.code.gson:gson:2.8.0'
-//    api 'com.squareup.okhttp3:okhttp:3.12.1'
-//
-//    /*demo鐨勪緷璧栭」*/
-//    api project(path: ':app-common')
-//    implementation fileTree(include: ['*.jar'], dir: 'libs')
-//    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
-//}
-//
-////repositories {
-////    maven { url 'https://dl.bintray.com/open-ezviz/mobile-sdk'}
-////}
-
+}*/
diff --git a/HDLSDK/com.hdl.sdk/src/main/AndroidManifest.xml b/HDLSDK/com.hdl.sdk/src/main/AndroidManifest.xml
deleted file mode 100755
index d1923e3..0000000
--- a/HDLSDK/com.hdl.sdk/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    package="com.hdl.sdk">
-    <application/>
-
-</manifest>
\ No newline at end of file
diff --git a/HDLSDK/hdl-common/build.gradle b/HDLSDK/hdl-common/build.gradle
index f054e96..d49bcfe 100644
--- a/HDLSDK/hdl-common/build.gradle
+++ b/HDLSDK/hdl-common/build.gradle
@@ -1,8 +1,9 @@
 plugins {
-    id 'com.android.library'
+//    id 'com.android.library'
+    id 'java-library'
 }
 
-android {
+/*android {
     compileSdkVersion rootProject.compileSdkVersion
 
     defaultConfig {
@@ -25,10 +26,13 @@
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
+}*/
+java {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
 }
 
 dependencies {
-    api 'com.google.code.gson:gson:2.8.8'
-    api 'androidx.annotation:annotation:1.2.0'
-    api 'androidx.collection:collection:1.1.0'
+//    api 'com.google.code.gson:gson:2.8.8'
+    implementation files('libs\\gson-2.8.8.jar')
 }
\ No newline at end of file
diff --git a/HDLSDK/hdl-common/libs/gson-2.8.8.jar b/HDLSDK/hdl-common/libs/gson-2.8.8.jar
new file mode 100644
index 0000000..4707d40
--- /dev/null
+++ b/HDLSDK/hdl-common/libs/gson-2.8.8.jar
Binary files differ
diff --git a/HDLSDK/hdl-common/src/main/AndroidManifest.xml b/HDLSDK/hdl-common/src/main/AndroidManifest.xml
deleted file mode 100644
index ea4c4f9..0000000
--- a/HDLSDK/hdl-common/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.hdl.sdk.common">
-
-</manifest>
\ No newline at end of file
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java
index de346dd..b9a3bee 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java
@@ -1,15 +1,14 @@
 package com.hdl.sdk.common;
 
-import android.content.Context;
-
 import com.hdl.sdk.common.utils.LogUtils;
 
 /**
  * Created by Tong on 2021/9/28.
+ * Modify by panlili on 5/7/22
  */
 public class HDLSdk {
 
-    private Context context;
+//    private Context context;
 
     /**
      * 鑾峰彇褰撳墠鐗堟湰
@@ -32,14 +31,14 @@
         return SingletonInstance.INSTANCE;
     }
 
-    public void init(Context context) {
+/*    public void init(Context context) {
         this.context = context.getApplicationContext();
         LogUtils.i("Version:" + version);
-    }
+    }*/
 
-    public Context getContext() {
-        return context;
-    }
+//    public Context getContext() {
+//        return context;
+//    }
 
     /**
      * 璁剧疆鎵撳嵃鏄惁寮�鍚�
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
index bfb38b3..a80f45f 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
@@ -1,14 +1,12 @@
 package com.hdl.sdk.common.event;
 
-import androidx.annotation.NonNull;
-import androidx.collection.ArrayMap;
-
-
 import com.hdl.sdk.common.utils.LogUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 
@@ -21,9 +19,9 @@
 
     private static final List<EventListener> ALL_TOPICS_EVENT = new ArrayList<>();//鎵�鏈変富棰樻秷鎭�
 
-    private static final ArrayMap<Object, List<EventListener>> EVENT = new ArrayMap<>();
+    private static final Map<Object, List<EventListener>> EVENT = new HashMap<>();
 
-    private static final ArrayMap<EventListener, Integer> TYPE = new ArrayMap<>();
+    private static final Map<EventListener, Integer> TYPE = new HashMap<>();
 
     private static final int MAIN_TYPE = 0;
     private static final int IO_TYPE = 1;
@@ -62,7 +60,7 @@
         }
     }
 
-    public  void registerIo(Object tag, EventListener listener) {
+    public void registerIo(Object tag, EventListener listener) {
         synchronized (this) {
             LogUtils.i("娉ㄥ唽涓婚锛�" + tag);
             if (tag == null) return;
@@ -82,7 +80,7 @@
         }
     }
 
-    public  void remove(Object tag) {
+    public void remove(Object tag) {
         synchronized (this) {
             if (tag == null) {
                 return;
@@ -105,7 +103,7 @@
         }
     }
 
-    public  void remove(Object tag, EventListener listener) {
+    public void remove(Object tag, EventListener listener) {
         synchronized (this) {
             try {
                 if (tag == null || listener == null) {
@@ -125,7 +123,7 @@
         }
     }
 
-    public synchronized void post(Object tag, @NonNull Object o) {
+    public synchronized void post(Object tag, Object o) {
         if (tag == null) {
             LogUtils.i("post tag涓虹┖");
             return;
@@ -139,7 +137,8 @@
                         if (listener == null) {
                             continue;
                         }
-                        ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
+
+                       ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
                             @Override
                             public void run() {
                                 try {
@@ -173,17 +172,18 @@
                     });
                 }
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             LogUtils.e("post寮傚父2锛�" + e.getMessage());
         }
     }
 
     /**
      * 娉ㄥ唽鎵�鏈変富棰樻秷鎭殑鐩戝惉
+     *
      * @param listener
      */
     public synchronized void registerAllTopicsListener(EventListener listener) {
-        if(listener==null){
+        if (listener == null) {
             return;
         }
         try {
@@ -191,13 +191,14 @@
                 ALL_TOPICS_EVENT.add(listener);
             }
             TYPE.put(listener, MAIN_TYPE);
-        }catch (Exception e){
+        } catch (Exception e) {
             LogUtils.e("registerAllTopicsListener锛�" + e.getMessage());
         }
     }
 
     /**
      * 鍙栨秷鎵�鏈変富棰樻秷鎭殑鐩戝惉
+     *
      * @param listener
      */
     public synchronized void removeAllTopicsListener(EventListener listener) {
@@ -206,7 +207,7 @@
                 @Override
                 public void run() {
                     try {
-                        if(listener==null){
+                        if (listener == null) {
                             return;
                         }
                         if (ALL_TOPICS_EVENT != null && !ALL_TOPICS_EVENT.isEmpty()) {
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/exception/HDLLinkException.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/exception/HDLLinkException.java
index 715cb3e..a8fd194 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/exception/HDLLinkException.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/exception/HDLLinkException.java
@@ -1,7 +1,5 @@
 package com.hdl.sdk.common.exception;
 
-import androidx.annotation.NonNull;
-
 /**
  * Created by Tong on 2021/11/11.
  */
@@ -39,8 +37,7 @@
         this.code = code;
     }
 
-    public @NonNull
-    String getMsg() {
+    public String getMsg() {
         return msg;
     }
 
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/IpUtils.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/IpUtils.java
index 97620f2..1c492fb 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/IpUtils.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/IpUtils.java
@@ -1,8 +1,8 @@
 package com.hdl.sdk.common.utils;
 
-import android.content.Context;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
+//import android.content.Context;
+//import android.net.wifi.WifiInfo;
+//import android.net.wifi.WifiManager;
 
 import java.net.InetAddress;
 import java.net.InterfaceAddress;
@@ -19,21 +19,6 @@
      * @return 骞挎挱鍦板潃
      */
     public static String getBroadcastAddress() {
-//        try {
-//            for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces();
-//                 niEnum.hasMoreElements(); ) {
-//                NetworkInterface ni = niEnum.nextElement();
-//                if (!ni.isLoopback()) {
-//                    for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) {
-//                        if (interfaceAddress.getBroadcast() != null) {
-//                            return interfaceAddress.getBroadcast().toString().substring(1);
-//                        }
-//                    }
-//                }
-//            }
-//        } catch (SocketException e) {
-//            e.printStackTrace();
-//        }
         return "255.255.255.255";
     }
 
@@ -54,7 +39,7 @@
         return false;
     }
 
-    public static String getIP(Context application) {
+    /*public static String getIP(Context application) {
         WifiManager wifiManager = (WifiManager) application.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
         if (!wifiManager.isWifiEnabled()) {
             try {
@@ -77,7 +62,7 @@
         }
         return null;
     }
-
+*/
 
     private static String intToIp(int i) {
 
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/LogUtils.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/LogUtils.java
index 46b1d5d..8f7945d 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/LogUtils.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/LogUtils.java
@@ -1,7 +1,5 @@
 package com.hdl.sdk.common.utils;
 
-import android.util.Log;
-
 /**
  * Created by Tong on 2021/9/23.
  */
@@ -21,43 +19,43 @@
 
     public static void d(String tag, String msg) {
         if (tag != null && msg != null && isEnabled) {
-            Log.d(TAG, tag + "-- " + msg);
+            System.out.println(tag + "-- " + msg);
         }
     }
 
     public static void e(String tag, String msg) {
         if (tag != null && msg != null && isEnabled) {
-            Log.e(TAG, tag + "-- " + msg);
+            System.out.println(tag + "-- " + msg);
         }
     }
 
     public static void w(String tag, String msg) {
         if (tag != null && msg != null && isEnabled) {
-            Log.w(TAG, tag + "-- " + msg);
+            System.out.println(tag + "-- " + msg);
         }
     }
 
     public static void v(String tag, String msg) {
         if (tag != null && msg != null && isEnabled) {
-            Log.v(TAG, tag + "-- " + msg);
+            System.out.println(tag + "-- " + msg);
         }
     }
 
     public static void i(String tag, String msg) {
         if (tag != null && msg != null && isEnabled) {
-            Log.i(TAG, tag + "-- " + msg);
+            System.out.println(tag + "-- " + msg);
         }
     }
 
     public static void i(String msg) {
         if (msg != null && isEnabled) {
-            Log.i(TAG, msg);
+            System.out.println(msg);
         }
     }
 
     public static void e(String msg) {
         if (msg != null && isEnabled) {
-            Log.e(TAG,  msg);
+            System.out.println(msg);
         }
     }
 }
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/SPUtils.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/SPUtils.java
deleted file mode 100644
index bbdd808..0000000
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/SPUtils.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package com.hdl.sdk.common.utils;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-import androidx.annotation.NonNull;
-
-import com.hdl.sdk.common.HDLSdk;
-
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Created by Tong on 2021/9/28.
- */
-public class SPUtils {
-    private static final String APP_PREFERENCES_KEY = "profile";
-    private static final SharedPreferences PREFERENCES =
-            HDLSdk.getInstance().getContext().getApplicationContext().getSharedPreferences(APP_PREFERENCES_KEY, Context.MODE_PRIVATE);
-
-    private static SharedPreferences getAppPreference() {
-        return PREFERENCES;
-    }
-
-
-    //======閫氱敤瀛樺偍========
-    public static void put(@NonNull final String key, final String value) {
-        getAppPreference().edit().putString(key, value).apply();
-    }
-
-
-    public static String getString(@NonNull final String key) {
-        return getString(key, "");
-    }
-
-
-    public static String getString(@NonNull final String key, final String defaultValue) {
-        return getAppPreference().getString(key, defaultValue);
-    }
-
-
-    public static void put(@NonNull final String key, final int value) {
-        put(key, value, false);
-    }
-
-
-    public static void put(@NonNull final String key, final int value, final boolean isCommit) {
-        getAppPreference().edit().putInt(key, value).apply();
-    }
-
-
-    public static int getInt(@NonNull final String key) {
-        return getInt(key, -1);
-    }
-
-
-    public static int getInt(@NonNull final String key, final int defaultValue) {
-        return getAppPreference().getInt(key, defaultValue);
-    }
-
-
-    public static void put(@NonNull final String key, final long value) {
-        getAppPreference().edit().putLong(key, value).apply();
-    }
-
-
-    public static long getLong(@NonNull final String key) {
-        return getLong(key, -1L);
-    }
-
-
-    public static long getLong(@NonNull final String key, final long defaultValue) {
-        return getAppPreference().getLong(key, defaultValue);
-    }
-
-
-    public static void put(@NonNull final String key, final float value) {
-        getAppPreference().edit().putFloat(key, value).apply();
-    }
-
-
-    public static float getFloat(@NonNull final String key) {
-        return getFloat(key, -1f);
-    }
-
-
-    public static float getFloat(@NonNull final String key, final float defaultValue) {
-        return getAppPreference().getFloat(key, defaultValue);
-    }
-
-
-    public static void put(@NonNull final String key, final boolean value) {
-        getAppPreference().edit().putBoolean(key, value).apply();
-    }
-
-
-    public static boolean getBoolean(@NonNull final String key) {
-        return getBoolean(key, false);
-    }
-
-
-    public static boolean getBoolean(@NonNull final String key, final boolean defaultValue) {
-        return getAppPreference().getBoolean(key, defaultValue);
-    }
-
-
-    public static void put(@NonNull final String key,
-                           final Set<String> value
-    ) {
-
-        getAppPreference().edit().putStringSet(key, value).apply();
-
-    }
-
-
-    public static Set<String> getStringSet(@NonNull final String key) {
-        return getStringSet(key, Collections.<String>emptySet());
-    }
-
-
-    public static Set<String> getStringSet(@NonNull final String key,
-                                           final Set<String> defaultValue) {
-        return getAppPreference().getStringSet(key, defaultValue);
-    }
-
-
-    public static Map<String, ?> getAll() {
-        return getAppPreference().getAll();
-    }
-
-
-    public static boolean contains(@NonNull final String key) {
-        return getAppPreference().contains(key);
-    }
-
-
-    public static void remove(@NonNull final String key) {
-        getAppPreference().edit().remove(key).apply();
-    }
-
-    public static void clear() {
-        getAppPreference()
-                .edit()
-                .clear()
-                .apply();
-    }
-
-
-}
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/TextUtils.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/TextUtils.java
new file mode 100644
index 0000000..aec0aa0
--- /dev/null
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/TextUtils.java
@@ -0,0 +1,9 @@
+package com.hdl.sdk.common.utils;
+
+public class TextUtils {
+
+    public static boolean isEmpty(CharSequence str) {
+        return str == null || str.length() == 0;
+    }
+
+}
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/ThreadToolUtils.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/ThreadToolUtils.java
index 5e7cead..6a28c1e 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/ThreadToolUtils.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/ThreadToolUtils.java
@@ -1,8 +1,5 @@
 package com.hdl.sdk.common.utils;
 
-import android.os.Handler;
-import android.os.Looper;
-
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
@@ -12,16 +9,13 @@
  */
 public class ThreadToolUtils {
 
-    private final Handler uiHandler = new Handler(Looper.getMainLooper());
+//    private final Handler uiHandler = new Handler(Looper.getMainLooper());
 
     //cpu 鏈�澶х嚎绋嬪绾抽噺
     private final int coreSize = Runtime.getRuntime().availableProcessors() + 1;
 
     private ThreadToolUtils() {
     }
-
-//    private static class SingletonInstance {
-//    }
 
     private static final ThreadToolUtils instance = new ThreadToolUtils();
 
@@ -65,9 +59,10 @@
     /**
      * 鍒囨崲鍥炰富绾跨▼
      */
-    public void runOnUiThread(Runnable run) {
-        uiHandler.post(run);
-    }
-
+   public void runOnUiThread(Runnable run) {
+//       uiHandler.post(run);
+       Thread thread = new Thread(run);
+       thread.start();
+   }
 
 }
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/gson/ParameterizedTypeImpl.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/gson/ParameterizedTypeImpl.java
index fd122d8..e15a526 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/gson/ParameterizedTypeImpl.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/gson/ParameterizedTypeImpl.java
@@ -1,8 +1,5 @@
 package com.hdl.sdk.common.utils.gson;
 
-
-import androidx.annotation.NonNull;
-
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 
@@ -25,14 +22,12 @@
         return new ParameterizedTypeImpl(rawType, actualTypeArguments, null);
     }
 
-    @NonNull
     @Override
     public Type[] getActualTypeArguments() {
         return actualTypeArguments;
     }
 
 
-    @NonNull
     @Override
     public Type getRawType() {
         return rawType;
diff --git a/HDLSDK/hdl-connect/build.gradle b/HDLSDK/hdl-connect/build.gradle
index 79e077a..5917d64 100644
--- a/HDLSDK/hdl-connect/build.gradle
+++ b/HDLSDK/hdl-connect/build.gradle
@@ -1,8 +1,9 @@
 plugins {
-    id 'com.android.library'
+//    id 'com.android.library'
+    id 'java-library'
 }
 
-android {
+/*android {
     compileSdkVersion rootProject.compileSdkVersion
 
     defaultConfig {
@@ -25,10 +26,14 @@
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
+}*/
+java {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
 }
 
 dependencies {
     api project(path: ':hdl-socket')
-    implementation 'androidx.appcompat:appcompat:1.2.0'
-    implementation 'com.google.android.material:material:1.3.0'
+    implementation files('libs\\commons-lang3-3.12.0.jar')
+    implementation files('libs\\gson-2.8.8.jar')
 }
diff --git a/HDLSDK/hdl-connect/libs/commons-lang3-3.12.0.jar b/HDLSDK/hdl-connect/libs/commons-lang3-3.12.0.jar
new file mode 100644
index 0000000..4d434a2
--- /dev/null
+++ b/HDLSDK/hdl-connect/libs/commons-lang3-3.12.0.jar
Binary files differ
diff --git a/HDLSDK/hdl-connect/libs/gson-2.8.8.jar b/HDLSDK/hdl-connect/libs/gson-2.8.8.jar
new file mode 100644
index 0000000..4707d40
--- /dev/null
+++ b/HDLSDK/hdl-connect/libs/gson-2.8.8.jar
Binary files differ
diff --git a/HDLSDK/hdl-connect/src/main/AndroidManifest.xml b/HDLSDK/hdl-connect/src/main/AndroidManifest.xml
deleted file mode 100644
index c3b028e..0000000
--- a/HDLSDK/hdl-connect/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.hdl.sdk.connect">
-
-</manifest>
\ No newline at end of file
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 e5e993b..3130eca 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
@@ -1,7 +1,6 @@
 package com.hdl.sdk.connect;
 
 import com.hdl.sdk.common.utils.LogUtils;
-import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
@@ -13,7 +12,6 @@
 import com.hdl.sdk.connect.socket.HDLSocket;
 
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Created by jlchen on 11/15/21.
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkRequest.java
index 9a9b5ae..e46cccb 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkRequest.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkRequest.java
@@ -1,10 +1,7 @@
 package com.hdl.sdk.connect.bean;
 
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
 import com.hdl.sdk.common.utils.ByteUtils;
 import com.hdl.sdk.connect.utils.AesUtil;
@@ -56,7 +53,6 @@
         this.length = length;
     }
 
-    @NonNull
     @Override
     public String toString() {
         return "Topic:" +
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkResponse.java
index 8364f80..6846097 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkResponse.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkResponse.java
@@ -1,9 +1,6 @@
 package com.hdl.sdk.connect.bean;
 
-import android.text.TextUtils;
-
-import androidx.annotation.NonNull;
-
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.common.utils.gson.GsonConvert;
 
 import java.io.Serializable;
@@ -57,7 +54,6 @@
         this.length = length;
     }
 
-    @NonNull
     @Override
     public String toString() {
         return GsonConvert.getGson().toJson(this);
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkCallBack.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkCallBack.java
index 3a0f1c3..fd52428 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkCallBack.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkCallBack.java
@@ -1,8 +1,5 @@
 package com.hdl.sdk.connect.callback;
 
-import com.hdl.sdk.common.exception.HDLLinkException;
-import com.hdl.sdk.connect.bean.LinkResponse;
-
 /**
  * Created by jlchen on 11/16/21.
  *
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 bfe3d60..bc00c48 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
@@ -1,24 +1,21 @@
 package com.hdl.sdk.connect.config;
 
-import android.text.TextUtils;
-
 import com.hdl.sdk.common.config.TopicConstant;
-import com.hdl.sdk.common.utils.LogUtils;
-import com.hdl.sdk.common.utils.SPUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
 import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
 
 
 /**
  * Created by jlchen on 11/11/21.
+ * Modify by panlili on 5/7/22
  *
  * @Description : HDLLinkConfig
  */
 public class HDLLinkConfig {
-    private static final String AUTHENTICATE_LS_KEY = "auth_ls_key";
-    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";
+    private static String AUTHENTICATE_LS_KEY = "";
+    private static String AUTHENTICATE_GATEWAYID_KEY = "";
+    private static String AUTHENTICATE_IPADDRESS_KEY = "";
 
     private String localSecret;//鏈湴鍔犲瘑瀵嗛挜
     private String gatewayId;
@@ -30,9 +27,9 @@
     /**
      * instance
      */
-    private  static final HDLLinkConfig instance=new HDLLinkConfig();
-    private HDLLinkConfig()
-    {
+    private static final HDLLinkConfig instance = new HDLLinkConfig();
+
+    private HDLLinkConfig() {
         loadConfig();
     }
 
@@ -41,15 +38,7 @@
      *
      * @return AuthenticateConfig
      */
-    public static  HDLLinkConfig getInstance() {
-//        if (instance == null) {
-//            synchronized (HDLLinkConfig.class) {
-//                if (instance == null) {
-//                    instance = new HDLLinkConfig();
-//                    instance.loadConfig();
-//                }
-//            }
-//        }
+    public static HDLLinkConfig getInstance() {
         return instance;
     }
 
@@ -60,19 +49,15 @@
         this.gatewayId = "";
         this.ipAddress = "";
         this.localSecret = "";
-        SPUtils.remove(AUTHENTICATE_LS_KEY);
-        SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY);
-        SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY);
-        SPUtils.remove(AUTHENTICATE_IS_LS_KEY);
     }
 
     /**
      * 鍔犺浇缂撳瓨
      */
     void loadConfig() {
-        localSecret = SPUtils.getString(AUTHENTICATE_LS_KEY, "");
-        gatewayId = SPUtils.getString(AUTHENTICATE_GATEWAYID_KEY, "");
-        ipAddress = SPUtils.getString(AUTHENTICATE_IPADDRESS_KEY, "");
+        localSecret = AUTHENTICATE_LS_KEY;
+        gatewayId = AUTHENTICATE_GATEWAYID_KEY;
+        ipAddress = AUTHENTICATE_IPADDRESS_KEY;
     }
 
     /**
@@ -86,9 +71,9 @@
         this.localSecret = localSecret;
         this.gatewayId = gatewayId;
         this.ipAddress = ipAddress;
-        SPUtils.put(AUTHENTICATE_LS_KEY, localSecret);
-        SPUtils.put(AUTHENTICATE_GATEWAYID_KEY, gatewayId);
-        SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress);
+        AUTHENTICATE_LS_KEY = localSecret;
+        AUTHENTICATE_GATEWAYID_KEY = gatewayId;
+        AUTHENTICATE_IPADDRESS_KEY = ipAddress;
     }
 
     /**
@@ -112,7 +97,7 @@
 
     public void setLocalSecret(String localSecret) {
         this.localSecret = localSecret;
-        SPUtils.put(AUTHENTICATE_LS_KEY, localSecret);
+        AUTHENTICATE_LS_KEY = localSecret;
     }
 
     public String getLocalSecret() {
@@ -122,14 +107,16 @@
     public String getGatewayId() {
         return gatewayId;
     }
+
     public void setGatewayId(String gatewayId) {
-        this.gatewayId=gatewayId;
+        this.gatewayId = gatewayId;
     }
 
     public String getIpAddress() {
         return ipAddress;
     }
-    public void setIpAddress(String ipAddress){
+
+    public void setIpAddress(String ipAddress) {
         this.ipAddress = ipAddress;
     }
 
@@ -143,7 +130,7 @@
             if (!this.ipAddress.equals(this.currentGateway.getIp_address())) {
                 //濡傛灉IP鍦板潃鏈夊彉鍖栧垯鏇存柊
                 this.ipAddress = this.currentGateway.getIp_address();
-                SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress);
+                AUTHENTICATE_IPADDRESS_KEY = ipAddress;
             }
         }
     }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
index edb326e..74fdc83 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -1,20 +1,11 @@
 package com.hdl.sdk.connect.protocol;
 
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.util.Log;
-
-import androidx.annotation.RequiresApi;
-
-import com.google.gson.internal.bind.DateTypeAdapter;
 import com.hdl.sdk.common.utils.LogUtils;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
 import com.hdl.sdk.common.event.EventDispatcher;
 import com.hdl.sdk.common.utils.ByteUtils;
 import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.utils.AesUtil;
-import com.hdl.sdk.connect.utils.ProtocolParse;
 import com.hdl.sdk.socket.codec.ByteToMessageDecoder;
 
 import java.util.ArrayList;
@@ -168,11 +159,12 @@
                         try {
                             //涔嬪墠鐨勭増鏈繖鍧楁槸鏄庢枃鐨�
                             if (!topic.contains("heartbeat_reply")) {
-                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
+                                /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
                                     LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + Base64.getEncoder().encodeToString(body));
                                 else {
                                     LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + new String(body, "utf-8"));
-                                }
+                                }*/
+                                LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + new String(body, "utf-8"));
                             }
                         } catch (Exception e) {
                         }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
index 0016adc..6986188 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -1,7 +1,5 @@
 package com.hdl.sdk.connect.socket;
 
-import android.text.TextUtils;
-
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
@@ -10,8 +8,8 @@
 import com.hdl.sdk.common.exception.HDLLinkCode;
 import com.hdl.sdk.common.exception.HDLLinkException;
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
-import com.hdl.sdk.connect.HDLLink;
 import com.hdl.sdk.connect.bean.response.AuthenticateResponse;
 import com.hdl.sdk.connect.bean.response.NetworkAccessBroadcastResponse;
 import com.hdl.sdk.connect.callback.BaseCallBack;
@@ -35,7 +33,6 @@
 import com.hdl.sdk.socket.udp.UdpSocketBoot;
 import com.hdl.sdk.socket.udp.UdpSocketOptions;
 
-import java.net.InetSocketAddress;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -183,6 +180,9 @@
         HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, new HdlSocketHelper.HdlSocketListener() {
             @Override
             public void onSucceed(Object msg) {
+
+                LogUtils.i("onSucceed msg锛�" + msg);
+
                 if (callBack == null) return;
                 try {
                     AuthenticateResponse bean = getAuthenticateResponseBean(msg);
@@ -629,6 +629,8 @@
                 }
             }
         });
+        LogUtils.i("callBackSearchGatewayTimeout onError锛氭悳绱㈢綉鍏冲け璐ワ紝瓒呮椂");
+
     }
 
 
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 9eb486c..d42d619 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,8 +1,5 @@
 package com.hdl.sdk.connect.socket;
 
-import android.text.TextUtils;
-import android.util.Log;
-
 import com.google.gson.JsonObject;
 import com.hdl.sdk.common.config.TopicConstant;
 import com.hdl.sdk.common.event.EventDispatcher;
@@ -11,6 +8,7 @@
 import com.hdl.sdk.common.exception.HDLLinkException;
 import com.hdl.sdk.common.utils.IdUtils;
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.common.utils.gson.GsonConvert;
 import com.hdl.sdk.connect.bean.request.BroadcastRequest;
@@ -32,6 +30,8 @@
 import com.hdl.sdk.socket.codec.MessagePipeLine;
 import com.hdl.sdk.socket.listener.ConnectStatusListener;
 import com.hdl.sdk.socket.listener.SendListener;
+
+import org.apache.commons.lang3.StringEscapeUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -110,7 +110,7 @@
         }).start();
     }
 
-//    private static class SingletonInstance {
+    //    private static class SingletonInstance {
 //    }
     private static final HDLSocket instance = new HDLSocket();
 
@@ -119,8 +119,9 @@
     }
 
     SocketOptions options;
+
     private SocketOptions getTcpOptions() {
-        if(null!=options){
+        if (null != options) {
             return options;
         }
         options = new SocketOptions();
@@ -243,6 +244,7 @@
 
             final BaseLocalResponse<List<FunctionAttributeRequest>> data = new BaseLocalResponse<>();
             data.setId(IdUtils.getUUId());
+
             data.setTime_stamp(time);
             List<FunctionAttributeRequest> list = new ArrayList<>();
             for (String s : sids) {
@@ -423,13 +425,13 @@
             throw new RuntimeException("璇锋悳绱㈢綉鍏�");
         }
         //濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲
-        if (tcpBoot == null||!getTcpOptions().getIp().equals(getTcpIp())) {
+        if (tcpBoot == null || !getTcpOptions().getIp().equals(getTcpIp())) {
             tcpBoot = TcpClient.init(getTcpIp(), getTcpPort(), getTcpOptions());
             tcpBoot.SetHeartbeat(new IHeartbeat() {
                 @Override
                 public void heartbeat() {
 
-                    if(HDLLinkConfig.getInstance().getDeviceInfoBean()==null||HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()==null) {
+                    if (HDLLinkConfig.getInstance().getDeviceInfoBean() == null || HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) {
                         LogUtils.i("DeviceInfoBean涓虹┖锛岄渶瑕佽缃墠鑳芥甯稿績璺�");
                         return;
                     }
@@ -493,8 +495,9 @@
     }
 
     /**
-     *  鍦烘櫙鎺у埗
-     * @param sids 鍦烘櫙sid鍒楄〃
+     * 鍦烘櫙鎺у埗
+     *
+     * @param sids     鍦烘櫙sid鍒楄〃
      * @param callBack 鍥炶皟
      */
     public void controlScene(List<String> sids, HDLLinkCallBack callBack) {
@@ -584,8 +587,8 @@
     /**
      * 閫氱敤TCP鍙戦�佹寚浠� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
      *
-     * @param topic    鍙戦�佹暟鎹�
-     * @param bodyStr  鍥炲鐨勪富棰�
+     * @param topic   鍙戦�佹暟鎹�
+     * @param bodyStr 鍥炲鐨勪富棰�
      */
     public void tcpSendMsg(String topic, String bodyStr) {
         try {
@@ -596,7 +599,7 @@
             LinkRequest message = new LinkRequest(topic, bodyStr);
             getTcp().sendMsg(message.getSendBytes());
         } catch (Exception e) {
-            LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :"+e.getMessage());
+            LogUtils.e("tcpSendMsg", "鍙戦�佸け璐� :" + e.getMessage());
         }
     }
 
@@ -607,7 +610,7 @@
     public void sendMsg(byte[] data, String eventTag, HDLLinkCallBack callBack, SendListener sendListener) {
 
         try {
-            if(eventTag!=null) {
+            if (eventTag != null) {
                 final AtomicInteger sendCount = new AtomicInteger(0);
 
                 final ScheduledExecutorService threadPool = ThreadToolUtils.getInstance().newScheduledThreadPool(1);
@@ -615,12 +618,14 @@
                     @Override
                     public void onMessage(Object msg) {
                         if (msg instanceof LinkResponse) {
-                            LogUtils.i("sendMsg onSuccess");
+                            LogUtils.i("sendMsg onSuccess" + StringEscapeUtils.unescapeJava(msg.toString()));
+//                            LogUtils.i("sendMsg onSuccess" + msg);
                             threadPool.shutdownNow();
                             LogUtils.i("sendMsg eventListener remove");
                             EventDispatcher.getInstance().remove(eventTag, this);
                             if (callBack != null) {
-                                callBack.onSuccess(msg.toString());
+                                callBack.onSuccess(StringEscapeUtils.unescapeJava(msg.toString()));
+//                                callBack.onSuccess(msg.toString());
                             }
                         }
                     }
@@ -644,6 +649,8 @@
                                     }
                                 }
                             });
+                            LogUtils.i("HDLSocket sendMsg onError 鍙戦�佸け璐�");
+
                         }
                     }
                 }, 1000, 500, TimeUnit.MILLISECONDS);
@@ -675,6 +682,8 @@
                     }
                 }
             });
+            LogUtils.i("HDLSocket sendMsg onError 鍙戦�佸け璐�");
+
         }
 
     }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
index abac95d..7314b78 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
@@ -1,16 +1,14 @@
 package com.hdl.sdk.connect.socket;
 
-import android.text.TextUtils;
-
 import com.hdl.sdk.common.event.EventDispatcher;
 import com.hdl.sdk.common.event.EventListener;
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.connect.bean.LinkRequest;
 import com.hdl.sdk.socket.SocketBoot;
 import com.hdl.sdk.socket.udp.UdpSocketBoot;
 
-import java.net.InetSocketAddress;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ProtocolParse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ProtocolParse.java
index d29c09d..792eddc 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ProtocolParse.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/ProtocolParse.java
@@ -1,6 +1,6 @@
 package com.hdl.sdk.connect.utils;
 
-import android.text.TextUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 
 /**
  * Created by Tong on 2021/9/22.
diff --git a/HDLSDK/hdl-socket/build.gradle b/HDLSDK/hdl-socket/build.gradle
index 5c35438..908bff6 100644
--- a/HDLSDK/hdl-socket/build.gradle
+++ b/HDLSDK/hdl-socket/build.gradle
@@ -1,8 +1,9 @@
 plugins {
-    id 'com.android.library'
+//    id 'com.android.library'
+    id 'java-library'
 }
 
-android {
+/*android {
     compileSdkVersion rootProject.compileSdkVersion
 
     defaultConfig {
@@ -26,6 +27,10 @@
         targetCompatibility JavaVersion.VERSION_1_8
     }
 
+}*/
+java {
+    sourceCompatibility JavaVersion.VERSION_1_8
+    targetCompatibility JavaVersion.VERSION_1_8
 }
 
 dependencies {
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java
index 92f8f84..0965fc7 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java
@@ -1,29 +1,18 @@
 package com.hdl.sdk.socket;
 
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.collection.ArrayMap;
-
-import com.google.gson.JsonObject;
-import com.hdl.sdk.common.config.TopicConstant;
-import com.hdl.sdk.common.utils.IdUtils;
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.socket.annotation.ConnectStatus;
 import com.hdl.sdk.socket.client.IClient;
 import com.hdl.sdk.socket.client.IHeartbeat;
 import com.hdl.sdk.socket.listener.SendListener;
 
-import java.net.ConnectException;
-import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingDeque;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Created by Tong on 2021/9/26.
@@ -57,7 +46,7 @@
 
     private final BlockingQueue<SocketRequest> mMessageQueue = new LinkedBlockingDeque<>();
 
-    private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>();
+    private final Map<String, SendListener> sendMap = new HashMap<>();
 
     public SocketBoot(IClient client) {
         this.client = client;
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/annotation/ConnectStatus.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/annotation/ConnectStatus.java
index 2ec7809..6bdd529 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/annotation/ConnectStatus.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/annotation/ConnectStatus.java
@@ -1,31 +1,22 @@
 package com.hdl.sdk.socket.annotation;
 
-import androidx.annotation.IntDef;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
 /**
  * Created by Tong on 2021/9/22.
  */
-@Target({ElementType.TYPE_PARAMETER, ElementType.PARAMETER})
-@IntDef({ConnectStatus.CONNECTING,
-        ConnectStatus.CONNECTED,
-        ConnectStatus.DISCONNECT})
-public @interface ConnectStatus {
+public class ConnectStatus {
 
     /**
      * 杩炴帴涓�
      */
-    int CONNECTING = 0;
+    public static int CONNECTING = 0;
 
     /**
      * 杩炴帴鎴愬姛
      */
-    int CONNECTED = 1;
+    public static int CONNECTED = 1;
 
     /**
      * 杩炴帴鍏抽棴
      */
-    int DISCONNECT = 2;
+    public static int DISCONNECT = 2;
 }
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
index 5ff1097..b4a7d3c 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
@@ -1,8 +1,5 @@
 package com.hdl.sdk.socket.client;
 
-
-
-import com.hdl.sdk.common.utils.ByteUtils;
 import com.hdl.sdk.common.utils.LogUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.socket.SocketBoot;
@@ -39,21 +36,21 @@
 
     /**
      * 浠庤繛鎺ユ睜涓壘鍑哄綋鍓岻P鍙婄鍙g殑杩炴帴瀹㈡埛绔�
+     *
      * @param ipAdderss 杩炴帴IP鍦板潃
-     * @param port 杩炴帴绔彛
+     * @param port      杩炴帴绔彛
      * @return
      */
-    public static TcpClient getTcpClientByIP(String ipAdderss,int port) {
-        for(TcpClient tcpClient:tcpClientList){
-            if(tcpClient.ip.equals(ipAdderss)&&tcpClient.port==port)
-            {
+    public static TcpClient getTcpClientByIP(String ipAdderss, int port) {
+        for (TcpClient tcpClient : tcpClientList) {
+            if (tcpClient.ip.equals(ipAdderss) && tcpClient.port == port) {
                 return tcpClient;
             }
         }
-        return  null;
+        return null;
     }
 
-    private byte[] readBuffer = new byte[4*1024];
+    private byte[] readBuffer = new byte[4 * 1024];
 
     private TcpClient(String ip, int port, SocketOptions socketOptions) {
         this.socketOptions = socketOptions;
@@ -83,8 +80,6 @@
     }
 
 
-
-
     @Override
     public void disconnect() {
         if (mSocket != null) {
@@ -108,18 +103,18 @@
     public void onHandleResponse() throws Exception {
         final InputStream stream = getInputStream();
         if (stream != null && getOptions() != null) {
-            while ( true) {
-                int len=getInputStream().read(readBuffer);
-                if(len<=0){
-                    throw  new Exception("鎺ユ敹寮傚父锛屾帴鏀舵暟鎹暱搴en="+len);
+            while (true) {
+                int len = getInputStream().read(readBuffer);
+                if (len <= 0) {
+                    throw new Exception("鎺ユ敹寮傚父锛屾帴鏀舵暟鎹暱搴en=" + len);
                 }
 
                 IHandleMessage handleMessage = getOptions().getHandleMessage();
                 if (handleMessage != null) {
-                    byte []bytes = new byte[len];
-                    System.arraycopy(readBuffer,0,bytes,0,len);
+                    byte[] bytes = new byte[len];
+                    System.arraycopy(readBuffer, 0, bytes, 0, len);
                     //瀹屾暣鐨勬暟鎹墠鍥炶皟
-                    handleMessage.read(bytes,ip);
+                    handleMessage.read(bytes, ip);
                 }
             }
         }
@@ -129,10 +124,10 @@
     public void sendMsg(byte[] msg) throws Exception {
         final OutputStream outputStream = getOutStream();
         if (outputStream != null && getOptions() != null) {
-                IHandleMessage handleMessage = getOptions().getHandleMessage();
-                handleMessage.write(handleMessage.write(msg));
-                outputStream.write(msg);
-                outputStream.flush();
+            IHandleMessage handleMessage = getOptions().getHandleMessage();
+            handleMessage.write(handleMessage.write(msg));
+            outputStream.write(msg);
+            outputStream.flush();
         }
     }
 
@@ -141,6 +136,7 @@
      * 澶勭悊杩炴帴鐘舵��
      */
     public void onConnectStatus(int status) {
+
         ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
             @Override
             public void run() {
@@ -148,16 +144,13 @@
                 if (list != null && !list.isEmpty()) {
                     for (ConnectStatusListener listener : list) {
                         switch (status) {
-                            case ConnectStatus
-                                    .CONNECTING:
+                            case 0:
                                 listener.onConnecting();
                                 break;
-                            case ConnectStatus
-                                    .CONNECTED:
+                            case 1:
                                 listener.onConnected();
                                 break;
-                            case ConnectStatus
-                                    .DISCONNECT:
+                            case 2:
                                 listener.onConnectFailed();
                                 break;
                         }
@@ -165,6 +158,9 @@
                 }
             }
         });
+
+        LogUtils.i("TcpClient onConnectStatus status:" + status);
+
     }
 
 
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
index 07d368d..6fdaabb 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
@@ -1,10 +1,8 @@
 package com.hdl.sdk.socket.client;
 
-
-import android.text.TextUtils;
-
 import com.hdl.sdk.common.utils.IpUtils;
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.socket.SocketBoot;
 import com.hdl.sdk.socket.SocketOptions;
 import com.hdl.sdk.socket.SocketPool;
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java
index 17471bb..5316f88 100644
--- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/udp/UdpSocketBoot.java
@@ -1,26 +1,15 @@
 package com.hdl.sdk.socket.udp;
 
-import android.text.TextUtils;
-
-import androidx.collection.ArrayMap;
-
 import com.hdl.sdk.common.utils.LogUtils;
+import com.hdl.sdk.common.utils.TextUtils;
 import com.hdl.sdk.common.utils.ThreadToolUtils;
 import com.hdl.sdk.socket.SocketRequest;
-import com.hdl.sdk.socket.annotation.ConnectStatus;
-import com.hdl.sdk.socket.client.IClient;
 import com.hdl.sdk.socket.client.IUdpClient;
 import com.hdl.sdk.socket.listener.SendListener;
 
-import java.net.ConnectException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.concurrent.BlockingQueue;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingDeque;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -37,7 +26,7 @@
 
     private ExecutorService receiveThread;
 
-    private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>();
+    private final Map<String, SendListener> sendMap = new HashMap<>();
 
     public UdpSocketBoot(IUdpClient client) {
         this.client = client;
diff --git a/HDLSDK/settings.gradle b/HDLSDK/settings.gradle
index fc35c16..45786a8 100644
--- a/HDLSDK/settings.gradle
+++ b/HDLSDK/settings.gradle
@@ -4,3 +4,4 @@
 include ':hdl-connect'
 include ':hdl-common'
 include ':com.hdl.sdk'
+include ':hdl-test'
diff --git a/HDLSDK_DEMO/.idea/compiler.xml b/HDLSDK_DEMO/.idea/compiler.xml
index 245a82c..7d7ec2e 100644
--- a/HDLSDK_DEMO/.idea/compiler.xml
+++ b/HDLSDK_DEMO/.idea/compiler.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="CompilerConfiguration">
-    <bytecodeTargetLevel target="1.8" />
+    <bytecodeTargetLevel target="11" />
   </component>
 </project>
\ No newline at end of file
diff --git a/HDLSDK_DEMO/.idea/gradle.xml b/HDLSDK_DEMO/.idea/gradle.xml
index 7e69409..3123843 100644
--- a/HDLSDK_DEMO/.idea/gradle.xml
+++ b/HDLSDK_DEMO/.idea/gradle.xml
@@ -4,7 +4,7 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <option name="testRunner" value="PLATFORM" />
+        <option name="testRunner" value="GRADLE" />
         <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="modules">
@@ -17,7 +17,6 @@
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />
-        <option name="useQualifiedModuleNames" value="true" />
       </GradleProjectSettings>
     </option>
   </component>
diff --git a/HDLSDK_DEMO/.idea/misc.xml b/HDLSDK_DEMO/.idea/misc.xml
index 3bdd701..aa7c0fe 100644
--- a/HDLSDK_DEMO/.idea/misc.xml
+++ b/HDLSDK_DEMO/.idea/misc.xml
@@ -3,12 +3,16 @@
   <component name="DesignSurface">
     <option name="filePathToZoomLevelMap">
       <map>
+        <entry key="..\:/HDL/ProjectCode/HDLSDK/HDLSDK_A_Android/HDLSDK_DEMO/app/src/main/res/layout/activity_devices_list.xml" value="0.3494791666666667" />
+        <entry key="..\:/HDL/ProjectCode/HDLSDK/HDLSDK_A_Android/HDLSDK_DEMO/app/src/main/res/layout/activity_main.xml" value="0.3536458333333333" />
+        <entry key="..\:/HDL/ProjectCode/HDLSDK/HDLSDK_A_Android/HDLSDK_DEMO/app/src/main/res/layout/demo_item.xml" value="0.3494791666666667" />
+        <entry key="..\:/HDL/ProjectCode/HDLSDK/HDLSDK_A_Android/HDLSDK_DEMO/app/src/main/res/layout/item_devices_list.xml" value="0.3494791666666667" />
         <entry key="..\:/job/me/Android/HDLSDK/app/src/main/res/layout/activity_main.xml" value="0.1" />
         <entry key="..\:/job/me/Android/HDLSDK/app/src/main/res/layout/demo_item.xml" value="0.28958333333333336" />
       </map>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
diff --git a/HDLSDK_DEMO/app/build.gradle b/HDLSDK_DEMO/app/build.gradle
index c4991de..cd98e6d 100644
--- a/HDLSDK_DEMO/app/build.gradle
+++ b/HDLSDK_DEMO/app/build.gradle
@@ -32,12 +32,17 @@
     implementation 'androidx.appcompat:appcompat:1.3.1'
     implementation 'com.google.android.material:material:1.4.0'
     implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
+    implementation files('libs\\hdl-common.jar')
+    implementation files('libs\\hdl-connect.jar')
+    implementation files('libs\\hdl-socket.jar')
+    implementation files('libs\\commons-lang3-3.12.0.jar')
+    implementation files('libs\\gson-2.8.8.jar')
 
     testImplementation 'junit:junit:4.+'
     androidTestImplementation 'androidx.test.ext:junit:1.1.2'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
 
     implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.6'
-    implementation 'com.google.code.gson:gson:2.8.8'
+//    implementation 'com.google.code.gson:gson:2.8.8'
 //    implementation project(path: ':hdl-connect')
 }
\ No newline at end of file
diff --git a/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.0.11.aar b/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.0.11.aar
deleted file mode 100644
index 22ccd83..0000000
--- a/HDLSDK_DEMO/app/libs/com.hdl.sdk-v1.0.11.aar
+++ /dev/null
Binary files differ
diff --git a/HDLSDK_DEMO/app/libs/commons-lang3-3.12.0.jar b/HDLSDK_DEMO/app/libs/commons-lang3-3.12.0.jar
new file mode 100644
index 0000000..4d434a2
--- /dev/null
+++ b/HDLSDK_DEMO/app/libs/commons-lang3-3.12.0.jar
Binary files differ
diff --git a/HDLSDK_DEMO/app/libs/gson-2.8.8.jar b/HDLSDK_DEMO/app/libs/gson-2.8.8.jar
new file mode 100644
index 0000000..4707d40
--- /dev/null
+++ b/HDLSDK_DEMO/app/libs/gson-2.8.8.jar
Binary files differ
diff --git a/HDLSDK_DEMO/app/libs/hdl-common.jar b/HDLSDK_DEMO/app/libs/hdl-common.jar
new file mode 100644
index 0000000..d010675
--- /dev/null
+++ b/HDLSDK_DEMO/app/libs/hdl-common.jar
Binary files differ
diff --git a/HDLSDK_DEMO/app/libs/hdl-connect.jar b/HDLSDK_DEMO/app/libs/hdl-connect.jar
new file mode 100644
index 0000000..1841d83
--- /dev/null
+++ b/HDLSDK_DEMO/app/libs/hdl-connect.jar
Binary files differ
diff --git a/HDLSDK_DEMO/app/libs/hdl-socket.jar b/HDLSDK_DEMO/app/libs/hdl-socket.jar
new file mode 100644
index 0000000..788478b
--- /dev/null
+++ b/HDLSDK_DEMO/app/libs/hdl-socket.jar
Binary files differ
diff --git a/HDLSDK_DEMO/app/src/main/AndroidManifest.xml b/HDLSDK_DEMO/app/src/main/AndroidManifest.xml
index 964acd6..8d37dcb 100644
--- a/HDLSDK_DEMO/app/src/main/AndroidManifest.xml
+++ b/HDLSDK_DEMO/app/src/main/AndroidManifest.xml
@@ -12,14 +12,12 @@
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
     <application
-        android:name=".App"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.HDLSDK">
-        <activity android:name=".device.DevicesListActivity"></activity>
         <activity
             android:name=".MainActivity"
             android:exported="true">
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/App.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/App.java
deleted file mode 100644
index 2935d87..0000000
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/App.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.hdl.hdlsdk;
-
-import android.app.Application;
-import android.util.Log;
-
-import com.hdl.sdk.common.HDLSdk;
-import com.hdl.sdk.common.event.EventListener;
-import com.hdl.sdk.common.utils.LogUtils;
-import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.LinkResponse;
-
-/**
- * Created by Tong on 2021/10/8.
- */
-public class App extends Application {
-
-    private String deviceStatusUpdateTopic;
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        //鍒濆鍖朣DK
-        HDLSdk.getInstance().init(this);
-        //鎺у埗SDK鏃ュ織鎵撳嵃
-        HDLSdk.getInstance().setLogEnabled(true);
-
-    }
-
-    @Override
-    public void onTerminate() {
-        super.onTerminate();
-
-    }
-}
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/DemoAdapter.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/DemoAdapter.java
index 2ebf4dd..ee481fd 100644
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/DemoAdapter.java
+++ b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/DemoAdapter.java
@@ -4,7 +4,6 @@
 import androidx.annotation.Nullable;
 
 import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
-import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 
 import java.util.List;
@@ -16,7 +15,7 @@
 
     public DemoAdapter(@Nullable List<DemoBean> data) {
         super(data);
-        addItemType(0, R.layout.demo_item);
+        addItemType(0,R.layout.demo_item);
     }
 
     @Override
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
index 39c7c97..862e9fe 100644
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -4,12 +4,13 @@
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import android.Manifest;
-import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
@@ -19,32 +20,22 @@
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.listener.OnItemClickListener;
-import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
-import com.hdl.hdlsdk.device.DevicesListActivity;
 import com.hdl.sdk.common.config.TopicConstant;
 import com.hdl.sdk.common.event.EventListener;
 import com.hdl.sdk.common.exception.HDLLinkException;
 import com.hdl.sdk.common.utils.IdUtils;
-import com.hdl.sdk.common.utils.IpUtils;
 import com.hdl.sdk.common.utils.gson.GsonConvert;
 import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.LinkRequest;
 import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
-import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
 import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
 import com.hdl.sdk.connect.bean.response.GatewaySearchBean;
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
 import com.hdl.sdk.connect.socket.HDLAuthSocket;
-import com.hdl.sdk.connect.socket.HDLSocket;
 import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
-import com.hdl.sdk.connect.protocol.LinkMessageDecoder;
-import com.hdl.sdk.connect.protocol.LinkMessageEncoder;
-import com.hdl.sdk.socket.SocketOptions;
-import com.hdl.sdk.socket.codec.MessagePipeLine;
 
 import java.io.UnsupportedEncodingException;
 import java.security.MessageDigest;
@@ -52,8 +43,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-
-import static com.hdl.sdk.common.config.TopicConstant.GATEWAY_SEARCH_REPLY;
 
 public class MainActivity extends AppCompatActivity {
 
@@ -64,7 +53,7 @@
     private TextView responseTv;
     boolean isOn;
     private EventListener allTopicsListener;
-    private String testLightSid = "0001010D48C71B02020100010101";
+    private String testLightSid = "1493092497588469761";
 
     @Override
     protected void onDestroy() {
@@ -72,86 +61,26 @@
         removeAllTopicsListener();
     }
 
-    void initDeviceInfo()
-    {
-        AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
-        infoBean.setDeviceMAC("AA000000000000AF");
-        infoBean.setIPMAC("AA000000000000AF");
-        infoBean.setDeviceName("闊充箰鎾斁鍣�");//璁惧鍚嶅瓧
-        infoBean.setDeviceModel("MCLog.431");//璁惧鍨嬪彿
-        infoBean.setAccessMode("WIFI");
-        infoBean.setIPGateway("192.168.88.1");
-        infoBean.setIPAddress("192.168.88.153");
-        infoBean.setGateway_type("music.standard");
-        infoBean.setHw_version("HW2.0");
-        infoBean.setFw_version("Fw1.0");
-        infoBean.setOID("010105000000FE10");//姣忎釜璁惧oid閮借涓嶄竴鏍�
-        infoBean.setSid("110105000000FE08110100000000");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
-        HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
+    void init() {
+        HDLLinkConfig.getInstance().setLocalSecret("e186beeb7974998e");
+        HDLLinkConfig.getInstance().setGatewayId("1519863101509361666");
+//    HDLLinkConfig.getInstance().setLocalEncrypt(true);
     }
 
-    /**
-     * 鍏ョ綉璁よ瘉
-     */
-    void sendAuthenticateRequest() {
-        tv.setText("寮�濮嬪叆缃戣璇�...");
-        //璁よ瘉鎻愪氦鍙傛暟鍑嗗
-//
-//        //娴嬭瘯鏈嶅姟
-//        String spkStr = "ir.module";//浜у搧spk
-//        String macStr = "AA000000000000AF";//璁惧鍞竴MAC鍦板潃
-//        String secret = "44b360eb74b7ba64";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
-
-//        姝e紡鏈嶅姟鍣�
-        String spkStr = "screen.mirror";//浜у搧spk
-        String macStr = "AA000000000000AC";//璁惧鍞竴MAC鍦板潃
-        String secret = "ee62124c151b737c";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
-
-        String mac_key = stringToMD5(stringToMD5(macStr + secret));
-        String versionString = "HDL_V1.0.1";//
-        String time = String.valueOf(System.currentTimeMillis());
-        HDLLinkConfig.getInstance().getDeviceInfoBean().setDeviceMAC(macStr);
-
-        //1.璁剧疆璁よ瘉淇℃伅
-        AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean();
-        requestBean.setMAC(macStr);
-        requestBean.setSupplier("WISE");
-        requestBean.setFirmwareVersion(versionString);
-        requestBean.setHardwareModel("1956F");
-        AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean();
-        authbean.setSpk(spkStr);
-        authbean.setMACKey(mac_key);
-        authbean.setRequest(requestBean);
-        //HDLLinkConfig.getInstance().getDeviceInfoBean()杩欎釜鍒濆鍖栫殑鏃跺�欒鍏堣缃ソ
-        AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), authbean);
-        HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
-            @Override
-            public void onError(HDLLinkException e) {
-                tv.setText("璁よ瘉澶辫触");
-                responseTv.setText(e.getMsg());
-                Log.i("TAG", "onError: 璁よ瘉澶辫触");
-            }
-
-            @Override
-            public void onSuccess(String msg) {
-                tv.setText("璁よ瘉鎴愬姛");
-                responseTv.setText(msg.toString());
-            }
-        });
-    }
-
-
+    @RequiresApi(api = Build.VERSION_CODES.O)
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+
         setContentView(R.layout.activity_main);
         responseTv = findViewById(R.id.response_tv);
         tv = findViewById(R.id.state_tv);
         rv = findViewById(R.id.rv);
         rv.setLayoutManager(new LinearLayoutManager(this));
 
+//        init();
         checkIfCertified();
-        initDeviceInfo();//鍒濆鍖�
+        initDeviceInfo();//鍒濆鍖栧熀鏈俊鎭紝闈炲父閲嶈锛岃璇佹椂瑕佺敤
         registerAllTopicsListener();
 
         ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
@@ -225,7 +154,7 @@
                         break;
                     case 8:
                         //鍔熻兘鍒楄〃
-                        startDevicesListActivity();
+//                        startDevicesListActivity();
                         break;
                     case 9:
                         //UDP鍙戦��
@@ -271,6 +200,7 @@
             @Override
             public void onMessage(Object msg) {
                 LinkResponse response = (LinkResponse) msg;
+                handleLinkResponse(response);
             }
         };
         HDLLink.getInstance().registerAllTopicsListener(allTopicsListener);
@@ -319,7 +249,82 @@
         HDLLink.getInstance().removeAllTopicsListener(allTopicsListener);
     }
 
+    void initDeviceInfo() {
+        AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
+//        infoBean.setDeviceMAC("AA00000000000100");
+//        infoBean.setIPMAC("AA00000000000100");
 
+        infoBean.setDeviceMAC("BB000000000000BF");
+        infoBean.setIPMAC("BB000000000000BF");
+        infoBean.setDeviceName("闊充箰鎾斁鍣�");//璁惧鍚嶅瓧
+        infoBean.setDeviceModel("MCLog.431");//璁惧鍨嬪彿
+        infoBean.setAccessMode("WIFI");
+//        infoBean.setIPGateway("192.168.1.1");
+//        infoBean.setIPAddress("192.168.1.116");
+
+        infoBean.setIPGateway("192.168.3.1");
+        infoBean.setIPAddress("192.168.3.126");
+        infoBean.setGateway_type("music.standard");
+        infoBean.setHw_version("HW2.0");
+        infoBean.setFw_version("Fw1.0");
+//        infoBean.setOID("010105000000FE11");//姣忎釜璁惧oid閮借涓嶄竴鏍�
+//        infoBean.setSid("110105000000FE08110100000011");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
+
+        infoBean.setOID("010105010101FE07");//姣忎釜璁惧oid閮借涓嶄竴鏍�
+        infoBean.setSid("010105010101FE02020100040101");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
+        HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
+    }
+
+    /**
+     * 鍏ョ綉璁よ瘉
+     */
+    void sendAuthenticateRequest() {
+        tv.setText("寮�濮嬪叆缃戣璇�...");
+        //璁よ瘉鎻愪氦鍙傛暟鍑嗗
+
+//        娴嬭瘯鏈嶅姟
+        String spkStr = "ir.module";//浜у搧spk
+        String macStr = "BB000000000000BF";//璁惧鍞竴MAC鍦板潃
+        String secret = "d70f8872ddd6fe6a";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+
+//        姝e紡鏈嶅姟鍣�
+//        String spkStr = "screen.mirror";//浜у搧spk
+//        String macStr = "AA00000000000100";//璁惧鍞竴MAC鍦板潃
+//        String secret = "e186beeb7974998e";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+
+        String mac_key = stringToMD5(stringToMD5(macStr + secret));
+        String versionString = "HDL_V1.0.1";//
+        String time = String.valueOf(System.currentTimeMillis());
+        HDLLinkConfig.getInstance().getDeviceInfoBean().setDeviceMAC(macStr);
+
+        //1.璁剧疆璁よ瘉淇℃伅
+        AuthenticateRequest.RequestBean requestBean = new AuthenticateRequest.RequestBean();
+        requestBean.setMAC(macStr);
+        requestBean.setSupplier("WISE");
+        requestBean.setFirmwareVersion(versionString);
+        requestBean.setHardwareModel("1956F");
+        AuthenticateRequest.AuthBean authbean = new AuthenticateRequest.AuthBean();
+        authbean.setSpk(spkStr);
+        authbean.setMACKey(mac_key);
+        authbean.setRequest(requestBean);
+        //HDLLinkConfig.getInstance().getDeviceInfoBean()杩欎釜鍒濆鍖栫殑鏃跺�欒鍏堣缃ソ
+        AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, HDLLinkConfig.getInstance().getDeviceInfoBean(), authbean);
+        HDLLink.getInstance().startAuthenticateRequest(request, new HDLLinkCallBack() {
+            @Override
+            public void onError(HDLLinkException e) {
+//                tv.setText("璁よ瘉澶辫触");
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError: 璁よ瘉澶辫触" + e.getMsg());
+            }
+
+            @Override
+            public void onSuccess(String msg) {
+//                tv.setText("璁よ瘉鎴愬姛");
+//                responseTv.setText(msg.toString());
+                Log.i("TAG", "onSuccess: 璁よ瘉鎴愬姛" + msg.toString());
+            }
+        });
+    }
 
     String stringToMD5(String text) {
         byte[] hash;
@@ -352,15 +357,16 @@
         HDLLink.getInstance().searchGatewayBroadcast(new HDLAuthSocket.SearchGatewayCallBack() {
             @Override
             public void onError(HDLLinkException e) {
-                tv.setText("缃戝叧涓嶅湪绾�");
-                responseTv.setText(e.getMsg());
+//                tv.setText("缃戝叧涓嶅湪绾�");
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "缃戝叧涓嶅湪绾�" + e.getMsg());
             }
 
             @Override
             public void onSuccess(GatewaySearchBean gatewaySearchBean) {
-                tv.setText("缃戝叧鍦ㄧ嚎");
-                responseTv.setText("鎼滅储鎴愬姛 缃戝叧id锛�" + gatewaySearchBean.getGatewayId());
-//                                LogUtils.i("TAG", "onSuccess: 鎼滅储鎴愬姛锛�"+gatewaySearchBean.getGatewayId());
+//                tv.setText("缃戝叧鍦ㄧ嚎");
+//                responseTv.setText("鎼滅储鎴愬姛 缃戝叧id锛�" + gatewaySearchBean.getGatewayId());
+                Log.i("TAG", "onSuccess: 鎼滅储鎴愬姛锛�"+gatewaySearchBean.getGatewayId());
             }
         });
     }
@@ -374,13 +380,15 @@
         HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() {
             @Override
             public void onError(HDLLinkException error) {
-                tv.setText(error.getMsg());
+//                tv.setText(error.getMsg());
+                Log.i("TAG", "onError 鑾峰彇鍔熻兘鍒楄〃澶辫触" + error.getMsg());
             }
 
             @Override
             public void onSuccess(String data) {
-                tv.setText("鑾峰彇鍔熻兘鍒楄〃鎴愬姛");
-                responseTv.setText(data);
+//                tv.setText("鑾峰彇鍔熻兘鍒楄〃鎴愬姛");
+//                responseTv.setText(data);
+                Log.i("TAG", "onSuccess 鑾峰彇鍔熻兘鍒楄〃鎴愬姛" + data.toString());
             }
         });
     }
@@ -396,12 +404,14 @@
         HDLLink.getInstance().getFunctionAttribute(sids, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                responseTv.setText(msg);
+//                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess 鍔熻兘灞炴�ц鍙栨垚鍔�" + msg.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鑾峰彇鍔熻兘鍒楄〃澶辫触" + e.getMsg());
             }
         });
     }
@@ -417,20 +427,22 @@
         HDLLink.getInstance().propertyRead(list, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String data) {
-                tv.setText("璇诲彇鎴愬姛");
-                responseTv.setText(data);
+//                tv.setText("璇诲彇鎴愬姛");
+//                responseTv.setText(data);
+                Log.i("TAG", "onSuccess 璇诲彇璁惧鐘舵�佹垚鍔�" + data.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                tv.setText("璇诲彇澶辫触");
-                responseTv.setText(e.getMsg());
+//                tv.setText("璇诲彇澶辫触");
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 璇诲彇璁惧鐘舵�佸け璐�" + e.getMsg());
             }
         });
     }
 
     /**
-     * 鎺у埗澶辫触
+     * 鎺у埗璁惧
      * 鍥炲鍝嶅簲code涓�200 浠h〃鎵ц鎴愬姛
      */
     void controlDecide() {
@@ -449,12 +461,14 @@
         HDLLink.getInstance().propertyDown(requestList, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String data) {
-                responseTv.setText(data);
+//                responseTv.setText(data);
+                Log.i("TAG", "onSuccess 鎺у埗璁惧鎴愬姛" + data.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鎺у埗璁惧澶辫触" + e.getMsg());
             }
         });
     }
@@ -467,12 +481,14 @@
         HDLLink.getInstance().getSceneList(new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                responseTv.setText(msg);
+//                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess 鑾峰彇鍦烘櫙鍒楄〃鎴愬姛" + msg.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鑾峰彇鍦烘櫙鍒楄〃澶辫触" + e.getMsg());
             }
         });
     }
@@ -497,21 +513,23 @@
         HDLLink.getInstance().controlScene(sids, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                responseTv.setText(msg);
+//                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess 鍦烘櫙鎺у埗鎴愬姛" + msg.toString());
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError 鍦烘櫙鎺у埗澶辫触" + e.getMsg());
             }
         });
     }
 
 
-    void startDevicesListActivity() {
+/*    void startDevicesListActivity() {
         Intent intent = new Intent(this, DevicesListActivity.class);
         startActivity(intent);
-    }
+    }*/
 
     /**
      * TCP鍙戦�� 鍙彂涓�娆★紝涓嶇洃鍚洖澶嶏紝涓嶉噸鍙�
@@ -565,13 +583,14 @@
         HDLLink.getInstance().udpSendMsg(propertyDownTopic, bodyStr, new HDLLinkResponseCallBack() {
             @Override
             public void onSuccess(LinkResponse msg) {
-                Log.i("udpSendWithCallback", "udpSendWithCallback");
-                responseTv.setText(GsonConvert.getGson().toJson(msg));
+                Log.i("TAG", "onSuccess UDP鍙戦�佹垚鍔�" + GsonConvert.getGson().toJson(msg));
+//                responseTv.setText(GsonConvert.getGson().toJson(msg));
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError UDP鍙戦�佸け璐�" + e.getMsg());
             }
         });
     }
@@ -586,13 +605,14 @@
         HDLLink.getInstance().tcpSendMsg(propertyDownTopic, bodyStr, new HDLLinkCallBack() {
             @Override
             public void onSuccess(String msg) {
-                Log.i("tcpSendWithCallback", "tcpSendWithCallback");
-                responseTv.setText(msg);
+                Log.i("TAG", "onSuccess TCP鍙戦�佹垚鍔�" + msg);
+//                responseTv.setText(msg);
             }
 
             @Override
             public void onError(HDLLinkException e) {
-                responseTv.setText(e.getMsg());
+//                responseTv.setText(e.getMsg());
+                Log.i("TAG", "onError TCP鍙戦�佸け璐�");
             }
         });
     }
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/DevicesListActivity.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/DevicesListActivity.java
deleted file mode 100644
index c53f88c..0000000
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/DevicesListActivity.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.hdl.hdlsdk.device;
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.OrientationHelper;
-import androidx.recyclerview.widget.RecyclerView;
-
-import android.annotation.SuppressLint;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.google.gson.reflect.TypeToken;
-import com.hdl.hdlsdk.R;
-import com.hdl.sdk.common.exception.HDLLinkException;
-import com.hdl.sdk.common.utils.gson.GsonConvert;
-import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.LinkResponse;
-import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
-import com.hdl.sdk.connect.callback.HDLLinkCallBack;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DevicesListActivity extends AppCompatActivity {
-
-    private static final String TAG = "DevicesListActivity";
-    private List<FunctionBean> devicesList = new ArrayList<>();
-    private DevicesListAdapter mDevicesListAdapter;
-    private RecyclerView mRecyclerView;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_devices_list);
-
-        initView();
-        initData();
-    }
-
-    @SuppressLint("WrongConstant")
-    private void initView() {
-        mRecyclerView = findViewById(R.id.device_list_rv);
-        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
-        mDevicesListAdapter = new DevicesListAdapter(this, devicesList);
-        mRecyclerView.setAdapter(mDevicesListAdapter);
-    }
-
-    private void initData() {
-        getFunctionList();
-    }
-
-    /**
-     * 鑾峰彇鍔熻兘鍒楄〃
-     */
-    void getFunctionList(){
-
-        HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() {
-            @Override
-            public void onError(HDLLinkException error) {
-                Log.e(TAG,error.getMsg());
-            }
-
-            @Override
-            public void onSuccess(String data) {
-                Log.i(TAG, "鑾峰彇璁惧鍒楄〃鎴愬姛");
-                handelFunList(data);
-            }
-        });
-    }
-
-    void handelFunList(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());
-          mDevicesListAdapter.notifyDataSetChanged();
-      }catch (Exception e){
-          Log.e(TAG, "handelFunList: " + e.getMessage());
-      }
-
-    }
-}
\ No newline at end of file
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/DevicesListAdapter.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/DevicesListAdapter.java
deleted file mode 100644
index d352b7c..0000000
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/DevicesListAdapter.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.hdl.hdlsdk.device;
-
-import android.content.Context;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.CompoundButton;
-import android.widget.Switch;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
-import com.chad.library.adapter.base.viewholder.BaseViewHolder;
-import com.hdl.hdlsdk.DemoBean;
-import com.hdl.hdlsdk.R;
-import com.hdl.sdk.common.config.TopicConstant;
-import com.hdl.sdk.common.exception.HDLLinkException;
-import com.hdl.sdk.common.utils.IdUtils;
-import com.hdl.sdk.common.utils.LogUtils;
-import com.hdl.sdk.common.utils.gson.GsonConvert;
-import com.hdl.sdk.connect.HDLLink;
-import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
-import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
-import com.hdl.sdk.connect.callback.HDLLinkCallBack;
-import com.hdl.sdk.connect.config.HDLLinkConfig;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DevicesListAdapter extends RecyclerView.Adapter<DevicesListAdapter.ViewHolder> {
-
-    private LayoutInflater mInflater;
-    private List<FunctionBean> mList = null;
-
-    public DevicesListAdapter(Context context, List<FunctionBean> devicesList) {
-        this.mInflater = LayoutInflater.from(context);
-        this.mList = devicesList;
-    }
-
-    /**
-     * item鏄剧ず绫诲瀷
-     *
-     * @param parent
-     * @param viewType
-     * @return
-     */
-    @Override
-    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        View view = mInflater.inflate(R.layout.item_devices_list, parent, false);
-        ViewHolder viewHolder = new ViewHolder(view);
-        return viewHolder;
-    }
-
-    /**
-     * 鏁版嵁鐨勭粦瀹氭樉绀�
-     *
-     * @param holder
-     * @param position
-     */
-    @Override
-    public void onBindViewHolder(ViewHolder holder, int position) {
-        holder.item_tv.setText(mList.get(position).getName());
-        holder.device_on_off_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
-                propertyDown(mList.get(position), isChecked);
-            }
-        });
-    }
-
-    @Override
-    public int getItemCount() {
-        return mList.size();
-    }
-
-    //鑷畾涔夌殑ViewHolder锛屾寔鏈夋瘡涓狪tem鐨勭殑鎵�鏈夌晫闈㈠厓绱�
-    public static class ViewHolder extends RecyclerView.ViewHolder {
-        public TextView item_tv;
-        public Switch device_on_off_switch;
-
-        public ViewHolder(View view) {
-            super(view);
-            item_tv = (TextView) view.findViewById(R.id.device_title_tv);
-            device_on_off_switch = view.findViewById(R.id.device_on_off_switch);
-        }
-    }
-
-    private void propertyDown(FunctionBean functionBean, Boolean isOn){
-        List<DeviceControlRequest> requestList = new ArrayList<>();
-        DeviceControlRequest request = new DeviceControlRequest();
-        request.setSid(functionBean.getSid());
-        List<DeviceControlRequest.StatusBean>  statusBeanList= new ArrayList<>();
-        DeviceControlRequest.StatusBean bean =  new DeviceControlRequest.StatusBean();
-        bean.setKey("on_off");
-        bean.setValue(isOn ? "on" : "off");
-        statusBeanList.add(bean);
-        request.setStatus(statusBeanList);
-        requestList.add(request);
-        String time = String.valueOf(System.currentTimeMillis());
-
-        HDLLink.getInstance().propertyDown(requestList, new HDLLinkCallBack() {
-            @Override
-            public void onSuccess(String data) {
-                Log.i("propertyDown",data);
-            }
-
-            @Override
-            public void onError(HDLLinkException e) {
-                Log.e("propertyDown", "ERROR :"+ e.getMsg());
-            }
-        });
-
-    }
-}
\ No newline at end of file
diff --git a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/FunctionBean.java b/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/FunctionBean.java
deleted file mode 100644
index 232b657..0000000
--- a/HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/device/FunctionBean.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.hdl.hdlsdk.device;
-
-import com.chad.library.adapter.base.entity.MultiItemEntity;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Created by jlchen on 12/7/21.
- */
-public class FunctionBean implements Serializable {
-    private String sid;
-    private String oid;
-    private String name;
-    private String spk;
-    private String omodel;
-    private String src;
-    private String online;
-    private List<FunctionStatus> status;
-
-    public String getSid() {
-        return sid;
-    }
-
-    public void setSid(String sid) {
-        this.sid = sid;
-    }
-
-    public String getOid() {
-        return oid;
-    }
-
-    public void setOid(String oid) {
-        this.oid = oid;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getSpk() {
-        return spk;
-    }
-
-    public void setSpk(String spk) {
-        this.spk = spk;
-    }
-
-    public String getOmodel() {
-        return omodel;
-    }
-
-    public void setOmodel(String omodel) {
-        this.omodel = omodel;
-    }
-
-    public String getSrc() {
-        return src;
-    }
-
-    public void setSrc(String src) {
-        this.src = src;
-    }
-
-    public String getOnline() {
-        return online;
-    }
-
-    public void setOnline(String online) {
-        this.online = online;
-    }
-
-    public List<FunctionStatus> getStatus() {
-        return status;
-    }
-
-    public void setStatus(List<FunctionStatus> status) {
-        this.status = status;
-    }
-
-    public class FunctionStatus implements Serializable {
-        private String key;
-        private String value;
-
-        public String getKey() {
-            return key;
-        }
-
-        public void setKey(String key) {
-            this.key = key;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-        public void setValue(String value) {
-            this.value = value;
-        }
-    }
-
-}

--
Gitblit v1.8.0