From 7c8ce9b9a7d3fc1aaa4a621e86415b25ad10a34f Mon Sep 17 00:00:00 2001
From: panlili2024 <14743743+panlili2024@user.noreply.gitee.com>
Date: 星期三, 19 三月 2025 09:36:28 +0800
Subject: [PATCH] 添加source屏扫码流程
---
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 244 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 210 insertions(+), 34 deletions(-)
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 56a047d..2147f3e 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,16 +1,12 @@
package com.hdl.sdk.connect.socket;
-import static com.hdl.sdk.connect.config.HDLLinkConfig.AUTHENTICATE_IS_DEVICEINFO_KEY;
-
import android.os.Build;
import android.text.TextUtils;
-import android.util.Log;
import androidx.annotation.RequiresApi;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
-import com.hdl.sdk.common.HDLSdk;
import com.hdl.sdk.common.config.TopicConstant;
import com.hdl.sdk.common.event.EventDispatcher;
import com.hdl.sdk.common.event.EventListener;
@@ -18,34 +14,30 @@
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.SPUtils;
import com.hdl.sdk.common.utils.ThreadToolUtils;
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.LoginRequest;
-import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
import com.hdl.sdk.connect.bean.request.BroadcastRequest;
import com.hdl.sdk.connect.bean.request.DeviceAuthRequest;
-import com.hdl.sdk.connect.bean.request.GatewayInfoRequest;
+import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
+import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest;
import com.hdl.sdk.connect.bean.request.ListOidRequest;
import com.hdl.sdk.connect.bean.request.ListOidRequest2;
import com.hdl.sdk.connect.bean.request.ListSidRequest;
import com.hdl.sdk.connect.bean.request.ListUploadRequest;
-import com.hdl.sdk.connect.bean.response.AuthenticateResponse;
+import com.hdl.sdk.connect.bean.request.LogicEnableRequest;
+import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
import com.hdl.sdk.connect.bean.response.BaseLocalCodeResponse;
import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
-import com.hdl.sdk.connect.bean.request.DeviceControlRequest;
-import com.hdl.sdk.connect.bean.request.FunctionAttributeRequest;
-import com.hdl.sdk.connect.bean.LinkRequest;
-import com.hdl.sdk.connect.bean.LinkResponse;
-import com.hdl.sdk.connect.bean.request.PropertyReadRequest;
import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
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.protocol.LinkMessageDecoder;
import com.hdl.sdk.connect.protocol.LinkMessageEncoder;
-import com.hdl.sdk.connect.utils.AesUtil;
import com.hdl.sdk.socket.SocketBoot;
import com.hdl.sdk.socket.SocketOptions;
import com.hdl.sdk.socket.client.IHeartbeat;
@@ -54,8 +46,8 @@
import com.hdl.sdk.socket.listener.ConnectStatusListener;
import com.hdl.sdk.socket.listener.SendListener;
+import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.Base64;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -110,9 +102,12 @@
while (true) {
try {
Thread.sleep(5000);
-// LogUtils.i("checkIfCertified=" + HDLLink.getInstance().checkIfCertified() + " getTcp().connected=" + getTcp().connected);
try {
- if (!HDLLink.getInstance().checkIfCertified() || (!TextUtils.isEmpty(getTcpIp()) && getTcp().connected)) {
+ if (!HDLLink.getInstance().checkIfCertified()) {
+ continue;
+ }
+
+ if (!TextUtils.isEmpty(getTcpIp()) && getTcp().connected) {
continue;
}
} catch (Exception e) {
@@ -473,8 +468,8 @@
}
}
- public synchronized SocketBoot getTcp() throws RuntimeException {
- String gatewayIpAddress=getTcpIp();
+ public synchronized SocketBoot getTcp() throws RuntimeException {
+ String gatewayIpAddress = getTcpIp();
if (TextUtils.isEmpty(gatewayIpAddress)) {
LogUtils.e("璇锋悳绱㈢綉鍏�");
throw new RuntimeException("璇锋悳绱㈢綉鍏�");
@@ -486,25 +481,30 @@
@Override
public void heartbeat() {
- if (HDLLinkConfig.getInstance().getDeviceInfoBean() == null || HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) {
- LogUtils.i("DeviceInfoBean涓虹┖锛岄渶瑕佽缃墠鑳芥甯稿績璺�");
- return;
- }
-
String time = String.valueOf(System.currentTimeMillis());
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("id", IdUtils.getUUId());
jsonObject.addProperty("time_stamp", time);
+ if (HDLLinkConfig.getInstance().getDeviceInfoBean().getOID() == null) {
+ //涓嶈蛋浠庢満鍏ョ綉锛岄�氳繃gatewayId鍙戦��
+ if (HDLLinkConfig.getInstance().getGatewayId() == null) {
+ return;
+ }
+ String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getGatewayId());
+ LinkRequest message = new LinkRequest(topic,
+ jsonObject.toString());
+ sendMsg(message.getSendBytes(), null, null, null);
- if (HDLLinkConfig.getInstance().getRequestBean() != null) {
- jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC());
+ } else {
+ if (HDLLinkConfig.getInstance().getRequestBean() != null) {
+ jsonObject.addProperty("mac", HDLLinkConfig.getInstance().getRequestBean().getMAC());
+ }
+ //璧颁粠鏈哄叆缃戯紝閫氳繃oid鍙戦��
+ String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
+ LinkRequest message = new LinkRequest(topic,
+ jsonObject.toString());
+ sendMsg(message.getSendBytes(), null, null, null);
}
-
- String topic = String.format(TopicConstant.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
-
- LinkRequest message = new LinkRequest(topic,
- jsonObject.toString());
- sendMsg(message.getSendBytes(), null, null, null);
}
});
}
@@ -554,7 +554,7 @@
}
/**
- * 鑾峰彇鍦烘櫙鍒楄〃
+ * 鑾峰彇鍦烘櫙璇︽儏
*/
public void getScene(List<String> sids, HDLLinkCallBack callBack) {
if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
@@ -664,7 +664,7 @@
data.setTime_stamp(time);
//2023.10.18淇敼锛屼笂鎶id鍒楄〃澧炲姞parentOid
- if (request!=null && !TextUtils.isEmpty(HDLLinkConfig.getInstance().getParentOid())) {
+ if (request != null && !TextUtils.isEmpty(HDLLinkConfig.getInstance().getParentOid())) {
request.setParentOid(HDLLinkConfig.getInstance().getParentOid());
}
@@ -1175,4 +1175,180 @@
}
}
+ /**
+ * 鑾峰彇鎴块棿鍒楄〃
+ */
+ public void getRoomList(HDLLinkCallBack callBack) {
+ if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
+ String time = String.valueOf(System.currentTimeMillis());
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("id", IdUtils.getUUId());
+ jsonObject.addProperty("time_stamp", time);
+
+ String topic = String.format(TopicConstant.ROOM_LIST_GET, getGatewayId());
+
+ LinkRequest message = new LinkRequest(topic,
+ jsonObject.toString());
+ String replyTopic = topic + "_reply";
+ try {
+ sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() {
+ @Override
+ public void onSucceed() {
+
+ }
+
+ @Override
+ public void onError() {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
+ }
+ }
+ });
+ } catch (Exception e) {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
+ }
+ }
+ } else {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
+ }
+ }
+ }
+
+ /**
+ * 鎴块棿缁戝畾鍏崇郴鍒楄〃鑾峰彇
+ */
+ public void getRoomBindList(List<String> uid, HDLLinkCallBack callBack) {
+ if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
+ String time = String.valueOf(System.currentTimeMillis());
+ final BaseLocalResponse<List<String>> data = new BaseLocalResponse<>();
+ data.setId(IdUtils.getUUId());
+ data.setTime_stamp(time);
+
+ data.setObjects(uid);
+
+ String topic = String.format(TopicConstant.ROOM_BIND_LIST_GET, getGatewayId());
+ LinkRequest message = new LinkRequest(topic,
+ GsonConvert.getGson().toJson(data));
+
+ String replyTopic = topic + "_reply";
+ try {
+ sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() {
+ @Override
+ public void onSucceed() {
+
+ }
+
+ @Override
+ public void onError() {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
+ }
+ }
+ });
+ } catch (Exception e) {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
+ }
+ }
+ } else {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
+ }
+ }
+ }
+
+ /**
+ * 鑾峰彇鑷姩鍖栧垪琛�
+ */
+ public void getLogicList(HDLLinkCallBack callBack) {
+ if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
+ String time = String.valueOf(System.currentTimeMillis());
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("id", IdUtils.getUUId());
+ jsonObject.addProperty("time_stamp", time);
+
+ String topic = String.format(TopicConstant.LOGIC_LIST_GET, getGatewayId());
+
+ LinkRequest message = new LinkRequest(topic,
+ jsonObject.toString());
+ String replyTopic = topic + "_reply";
+ try {
+ sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() {
+ @Override
+ public void onSucceed() {
+
+ }
+
+ @Override
+ public void onError() {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
+ }
+ }
+ });
+ } catch (Exception e) {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_GET_FUNCTION_LIST_ERROR));
+ }
+ }
+ } else {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UNAUTHORIZED_ERROR));
+ }
+ }
+ }
+
+ /**
+ * 饩冨姩鍖栧惎饨ょ饨�
+ *
+ * @param sid 鑷姩鍖杝id
+ * @param enable true=鍚饯 false=绂佲饯
+ * @param callBack 鍥炶皟
+ */
+ public void editEnableLogic(String sid, boolean enable, HDLLinkCallBack callBack) {
+ if (!TextUtils.isEmpty(getGatewayId()) && !TextUtils.isEmpty(getTcpIp())) {
+ String time = String.valueOf(System.currentTimeMillis());
+ final BaseLocalResponse<List<LogicEnableRequest>> data = new BaseLocalResponse<>();
+ data.setId(IdUtils.getUUId());
+ data.setTime_stamp(time);
+
+ List<LogicEnableRequest> list = new ArrayList<>();
+ LogicEnableRequest request = new LogicEnableRequest(sid, enable);
+ list.add(request);
+
+ data.setObjects(list);
+
+ String topic = String.format(TopicConstant.EDIT_LOGIC_ENABLE, getGatewayId());
+ LinkRequest message = new LinkRequest(topic,
+ GsonConvert.getGson().toJson(data));
+
+ String replyTopic = topic + "_reply";
+ try {
+ sendMsg(message.getSendBytes(), replyTopic, callBack, new SendListener() {
+ @Override
+ public void onSucceed() {
+
+ }
+
+ @Override
+ public void onError() {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+ }
+ }
+ });
+ } catch (Exception e) {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+ }
+ }
+ } else {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+ }
+ }
+ }
+
}
--
Gitblit v1.8.0