From b1569b789eef12cf5d4252620ca7e7d2d9c8b93a Mon Sep 17 00:00:00 2001 From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com> Date: 星期四, 14 十一月 2024 14:26:03 +0800 Subject: [PATCH] sdk重连优化 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java | 105 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 90 insertions(+), 15 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java index 398429a..1908d0a 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java @@ -1,22 +1,28 @@ package com.hdl.sdk.common.utils; import android.text.TextUtils; +import android.util.Base64; +import android.util.Log; import com.google.gson.reflect.TypeToken; import com.hdl.sdk.common.config.TopicConstant; +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.request.GatewayRemoteEditRequest; +import com.hdl.sdk.connect.bean.response.DeviceDeleteResponse; import com.hdl.sdk.connect.bean.response.DeviceInfoResponse; +import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.config.HDLLinkConfig; +import com.hdl.sdk.connect.socket.HDLAuthSocket; import com.hdl.sdk.connect.socket.HDLSocket; - -import java.time.chrono.IsoChronology; +import com.hdl.sdk.connect.utils.AesUtil; /** * Created by hxb on 2023/9/14. */ -public class AllTopicManagerUtils { +public class AllTopicManagerUtils { /** * 鍏ㄥ眬涓婚澶勭悊鏂规硶锛屽彲浠ュ鐞嗘墍鏈夋帴鏀跺埌鐨勬暟鎹� @@ -25,6 +31,9 @@ */ public static void manager(LinkResponse linkResponse) { try { + if (linkResponse == null) { + return; + } String topic = linkResponse.getTopic(); if (TextUtils.isEmpty(topic)) { return; @@ -37,17 +46,21 @@ String mac_Oid_GatewayId = topics[2]; - if(!isLocalDevice(mac_Oid_GatewayId)){ - LogUtils.i("涓嶆槸褰撳墠璁惧鐨勭綉鍏矷d锛孖d鏄�"+mac_Oid_GatewayId); + if (!isLocalDevice(mac_Oid_GatewayId)) { + LogUtils.i("涓嶆槸褰撳墠璁惧鐨勭綉鍏矷d锛孖d鏄�" + mac_Oid_GatewayId); //闈炲綋鍓嶈澶囩殑鏁版嵁 return; } - if(isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE,topic)){ + if (isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE, topic)) { gatewayRemoteEditRequest(mac_Oid_GatewayId, linkResponse.getData()); + } else if (isSameTopic(TopicConstant.GATEWAY_SEARCH, topic)) { + HDLAuthSocket.getInstance().UploadGatewayInfo(null); + } else if (isSameTopic(TopicConstant.LINK_BROADCAST, topic)) { + managerLinkBroadcast(linkResponse.getData()); + } else if (isSameTopic(TopicConstant.DELETE_NOTIFY, topic)) { + managerDeleteNofity(linkResponse.getData()); } - - //TODO 閫氳繃澧炲姞if else 澧炲姞鍏跺畠涓婚绫讳技杩欐牱浣跨敤 } catch (Exception e) { LogUtils.e("鍏ㄥ眬澶勭悊妯″潡寮傚父锛�" + e.getMessage()); @@ -56,6 +69,7 @@ /** * 鏄惁褰撳墠鐨勮澶� + * * @param mac_Oid_GatewayId * @return */ @@ -64,19 +78,21 @@ return false; } String mac = HDLLinkConfig.getInstance().getDeviceInfoBean().getDeviceMAC(); - String oid = "123";//HDLLinkConfig.getInstance().getDeviceInfoBean().getOID(); + String oid = HDLLinkConfig.getInstance().getDeviceInfoBean().getOID(); String gatewayId = HDLLinkConfig.getInstance().getGatewayId(); + String all = "all"; - return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId); + return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId) || mac_Oid_GatewayId.toLowerCase().equals(all); } /** * 鏄惁鐩稿悓涓婚 + * * @param targetTopic 鐩爣鐨勪富棰� * @param sourceTopic 鎺ユ敹鐨勪富棰� * @return */ - private static boolean isSameTopic(String targetTopic,String sourceTopic) { + private static boolean isSameTopic(String targetTopic, String sourceTopic) { if (TextUtils.isEmpty(targetTopic) || TextUtils.isEmpty(sourceTopic)) { return false; } @@ -87,11 +103,11 @@ return false; } for (int i = 0; i < targetTopics.length; i++) { - if(i==2){ + if (i == 2) { //杩欎釜浣嶇疆涓嶅尮閰嶏紝鏄綉鍏砳d continue; } - if (!targetTopics[i] .equals( sourceTopics[i])) { + if (!targetTopics[i].equals(sourceTopics[i])) { return false; } } @@ -100,9 +116,10 @@ /** * 缃戝叧淇℃伅閰嶇疆 + * * @param body */ - private static void gatewayRemoteEditRequest(String mac_Oid_GatewayId,String body) { + private static void gatewayRemoteEditRequest(String mac_Oid_GatewayId, String body) { if (TextUtils.isEmpty(body)) { return; } @@ -118,4 +135,62 @@ HDLSocket.getInstance().gatewayRemoteEditReply(mac_Oid_GatewayId, gatewayRemoteEditRequest.getId(), null); } -} + + /** + * 鏇存柊瀵嗛挜 + * + * @param body + */ + private static void managerLinkBroadcast(String body) { + try { + DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(body, new TypeToken<DeviceInfoResponse>() { + }.getType()); + + if (deviceInfoResponse == null || deviceInfoResponse.getObjects() == null) { + return; + } + if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) { + byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP); + String mackey = ""; + if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) { + mackey = SPUtils.getString("auth_mackey_key", ""); + byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16)); + String localSecret = new String(bodyBytes, "utf-8"); + Log.d("panlili", "鏇存柊瀵嗛挜----->localSecret= " + localSecret); + HDLLinkConfig.getInstance().setLocalSecret(localSecret); + } + } + } catch (Exception e) { + LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage()); + } + } + + /** + * 閫�缃� + * + * @param body + */ + private static void managerDeleteNofity(String body) { + try { + DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(body, new TypeToken<DeviceDeleteResponse>() { + }.getType()); + + if (deviceDeleteResponse == null || deviceDeleteResponse.getObjects() == null) { + return; + } + HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() { + @Override + public void onSuccess(String msg) { + + } + + @Override + public void onError(HDLLinkException e) { + + } + }); + } catch (Exception e) { + LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage()); + } + } +} \ No newline at end of file -- Gitblit v1.8.0