From af2cbc2a24b3724e7fc3e6b42e134b21a3144c75 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期四, 17 二月 2022 15:33:19 +0800
Subject: [PATCH] 过滤掉非json数据不传给三方使用
---
HDLSDK/hdl-common/build.gradle | 2
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java | 2
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/config/TopicConstant.java | 8 +
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/utils/IpUtils.java | 30 ++--
HDLSDK/hdl-socket/build.gradle | 2
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/IHeartbeat.java | 8 +
HDLSDK/app/build.gradle | 2
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java | 14 +
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java | 51 ++++++++
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java | 92 +++++++++-----
HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | 43 ++++---
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkRequest.java | 6
HDLSDK/hdl-connect/build.gradle | 2
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java | 2
HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java | 11 +
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java | 8
HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java | 4
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | 54 ++++-----
18 files changed, 224 insertions(+), 117 deletions(-)
diff --git a/HDLSDK/app/build.gradle b/HDLSDK/app/build.gradle
index 22b041f..399b7ea 100644
--- a/HDLSDK/app/build.gradle
+++ b/HDLSDK/app/build.gradle
@@ -6,7 +6,7 @@
compileSdk 31
defaultConfig {
- applicationId "com.hdl.hdlsdk"
+ applicationId "com.hdl.hdlsdk1"
minSdk 21
targetSdk 31
versionCode 1
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 aed7414..571b025 100644
--- a/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
+++ b/HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -4,12 +4,14 @@
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;
@@ -27,6 +29,7 @@
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;
@@ -45,15 +48,18 @@
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 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,10 +77,12 @@
super.onDestroy();
removeAllTopicsListener();
}
-void init(){
- HDLLinkConfig.getInstance().setLocalSecret("7d04c4e3c2b7d600");
- HDLLinkConfig.getInstance().setGatewayId("1473119283609321473");
+void init() {
+// HDLLinkConfig.getInstance().setLocalSecret("7d04c4e3c2b7d600");
+// HDLLinkConfig.getInstance().setGatewayId("1473119283609321473");
+// HDLLinkConfig.getInstance().setLocalEncrypt(true);
}
+ @RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -83,6 +91,7 @@
tv = findViewById(R.id.state_tv);
rv = findViewById(R.id.rv);
rv.setLayoutManager(new LinearLayoutManager(this));
+
init();
checkIfCertified();
initDeviceInfo();
@@ -257,18 +266,18 @@
void initDeviceInfo()
{
AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
- infoBean.setDeviceMAC("123456789");
- infoBean.setIPMAC("12345678900");
+ 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.100");
+ infoBean.setIPGateway("192.168.1.1");
+ infoBean.setIPAddress("192.168.1.101");
infoBean.setGateway_type("music.standard");
infoBean.setHw_version("HW2.0");
infoBean.setFw_version("Fw1.0");
- infoBean.setOID("010105000000FE08");
- infoBean.setSid("010105000000FE08110100000000");
+ infoBean.setOID("010105000000FE10");//姣忎釜璁惧oid閮借涓嶄竴鏍�
+ infoBean.setSid("110105000000FE08110100000000");//姣忎釜璁惧鐨剆id閮借涓嶄竴鏍�
HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
}
@@ -281,8 +290,8 @@
//娴嬭瘯鏈嶅姟
String spkStr = "ir.module";//浜у搧spk
- String macStr = "AA000000000000BB";//璁惧鍞竴MAC鍦板潃
- String secret = "87ae414b7a853f65";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
+ String macStr = "AA000000000000AF";//璁惧鍞竴MAC鍦板潃
+ String secret = "44b360eb74b7ba64";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
// //姝e紡鏈嶅姟鍣�
// String spkStr = "screen.mirror";//浜у搧spk
@@ -292,35 +301,20 @@
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("raysgem");
+ 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);
-
- //2.璁剧疆璁惧淇℃伅
- AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
- infoBean.setDeviceMAC(macStr);
- infoBean.setIPMAC(macStr);
- infoBean.setDeviceName("绾㈠瀹�");//璁惧鍚嶅瓧
- infoBean.setDeviceModel("HDL");//
- infoBean.setAccessMode("WIFI");
- infoBean.setIPGateway("192.168.88.1");
- infoBean.setIPAddress(IpUtils.getIP(this));//鏍规嵁鐪熷疄鐨処P鍦板潃濉啓
-
- infoBean.setOID("010105000000FE08");
- infoBean.setSid("010105000000FE08110100000000");
- infoBean.setHw_version("1.0");
- infoBean.setFw_version("1.0");
-// infoBean.set
-
- AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, infoBean, authbean);
+ //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) {
diff --git a/HDLSDK/hdl-common/build.gradle b/HDLSDK/hdl-common/build.gradle
index 3a82524..ae48686 100644
--- a/HDLSDK/hdl-common/build.gradle
+++ b/HDLSDK/hdl-common/build.gradle
@@ -9,7 +9,7 @@
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode 2
- versionName "1.0.5"
+ versionName "1.0.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
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 30fe78c..3c11a89 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
@@ -11,6 +11,16 @@
private Context context;
+ /**
+ * 鑾峰彇褰撳墠鐗堟湰
+ * @return
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ private String version="1.0.6";
+
private HDLSdk() {
}
@@ -24,6 +34,7 @@
public void init(Context context) {
this.context = context.getApplicationContext();
+ LogUtils.i("Version:" + version);
}
public Context getContext() {
diff --git a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/config/TopicConstant.java b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
index 9f4a148..4046a29 100644
--- a/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
+++ b/HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
@@ -87,4 +87,12 @@
*/
public static final String BROADCAST_REPLY="/user/all/custom/gateway/broadcast_reply";
+ /**
+ * 蹇冭烦妫�娴�
+ */
+ public static final String HEARTBEAT="/user/%s/custom/gateway/heartbeat";
+ /**
+ * 蹇冭烦妫�娴嬪洖澶�
+ */
+ public static final String HEARTBEAT_REPLY="/user/%s/custom/gateway/heartbeat_reply";
}
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 2f2f010..97620f2 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
@@ -19,21 +19,21 @@
* @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();
- }
+// 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";
}
diff --git a/HDLSDK/hdl-connect/build.gradle b/HDLSDK/hdl-connect/build.gradle
index ce517bb..e9f6bea 100644
--- a/HDLSDK/hdl-connect/build.gradle
+++ b/HDLSDK/hdl-connect/build.gradle
@@ -9,7 +9,7 @@
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode 2
- versionName "1.0.5"
+ versionName "1.0.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
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 f3b663b..9a9b5ae 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
@@ -88,11 +88,13 @@
String headString = "Topic:" + getTopic() + "\r\n" + "Length:" + dataBytes.length + "\r\n" + "\r\n";
byte[] headBytes = headString.getBytes("utf-8");
byte[] sendBytes = ByteUtils.concatBytes(headBytes, dataBytes);
- LogUtils.i(headString + "\r\n" + data);
+ LogUtils.i("鍙戦�佹暟鎹細\r\n" + headString + "\r\n" + data);
return sendBytes;
} else {
- return this.toString().getBytes("utf-8");
+ String sendString = this.toString();
+ LogUtils.i("鍙戦�佹暟鎹細\r\n" + sendString);
+ return sendString.getBytes("utf-8");
}
} catch (Exception e) {
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/config/HDLLinkConfig.java
index 949b7e9..7988290 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
@@ -168,7 +168,7 @@
return (!topicStr.contains(TopicConstant.GATEWAY_AUTH_BROADCAST) //缃戝叧骞挎挱鍏ョ綉鎸囦护
&& !topicStr.contains(TopicConstant.DEIVCE_AUTH_REQUEST) //鍏ョ綉璁よ瘉
&& !topicStr.contains(TopicConstant.GATEWAY_SEARCH) //鎼滅储缃戝叧涓婚
- && !topicStr.equals(TopicConstant.BROADCAST)
+ && !topicStr.contains(TopicConstant.BROADCAST)
&& isLocalEncrypt//鍚敤鍔犲瘑鏍囧織
);
}
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 0d20188..31e03b1 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,6 +1,7 @@
package com.hdl.sdk.connect.protocol;
+import android.annotation.TargetApi;
import android.os.Build;
import android.util.Log;
@@ -116,7 +117,7 @@
}
}
- @RequiresApi(api = Build.VERSION_CODES.O)
+
@Override
protected synchronized LinkResponse decoder(Object msg) throws Exception {
if (msg instanceof byte[]) {
@@ -164,19 +165,24 @@
body = bodyBytes;
} else {
try {
- LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + Base64.getEncoder().encodeToString(body));
+ LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n");
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
+ LogUtils.e(Base64.getEncoder().encodeToString(body));
+ else {
+ LogUtils.e(new String(body, "utf-8"));
+ }
} catch (Exception e) {
}
}
}
String bodyString = new String(body, "utf-8");
+ response.setData(bodyString);
+ LogUtils.i( "鎺ユ敹鍒版暟鎹�:" + response.getTopic() + "\r\n" + response.getData());
//闈炴甯告暟鎹紝杩斿洖
if (!(bodyString.startsWith("{") || bodyString.startsWith("["))) {
continue;
}
- response.setData(bodyString);
- LogUtils.i( "LinkMessageDecoder->decoder:" + response.getTopic() + "\r\n" + response.getData());
//瑙f瀽瀹屾垚,topic鍙戦�佷竴娆�
EventDispatcher.getInstance().post(response.getTopic(), response);
}
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 3c8363f..908ed83 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
@@ -141,15 +141,15 @@
public void onMessage(Object msg) {
NetworkAccessBroadcastResponse bean = getNetworkAccessBroadcastResponse(msg);
if (bean != null) {
- LogUtils.i(TAG, "缃戝叧鍏ョ綉骞挎挱IP: " + bean.getIPAddress());
+ //绉婚櫎鐩戝惉
+ EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
+ LogUtils.i("缃戝叧鍏ョ綉骞挎挱IP: " + bean.getIPAddress());
String ipStr = bean.getIPAddress();
if (!TextUtils.isEmpty(ipStr)) {
sendAuthenticateRequest(ipStr, request, callBack);
}
}
- //绉婚櫎鐩戝惉
- EventDispatcher.getInstance().remove(TopicConstant.GATEWAY_AUTH_BROADCAST);
- LogUtils.i(TAG, "绉婚櫎鐩戝惉 authEvent");
+
}
});
}
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 dedba8a..57a322f 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
@@ -27,6 +27,7 @@
import com.hdl.sdk.connect.protocol.LinkMessageEncoder;
import com.hdl.sdk.socket.SocketBoot;
import com.hdl.sdk.socket.SocketOptions;
+import com.hdl.sdk.socket.client.IHeartbeat;
import com.hdl.sdk.socket.client.TcpClient;
import com.hdl.sdk.socket.codec.MessagePipeLine;
import com.hdl.sdk.socket.listener.ConnectStatusListener;
@@ -413,6 +414,27 @@
//濡傛灉娌℃湁鍒濆鍖栵紝鎴栬�呯綉鍏矷P鏇存敼浜嗭紝灏遍噸鏂板垵濮嬪寲
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) {
+ LogUtils.i("DeviceInfoBean涓虹┖锛岄渶瑕佽缃墠鑳芥甯稿績璺�");
+ return;
+ }
+
+ 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.HEARTBEAT, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
+
+ LinkRequest message = new LinkRequest(topic,
+ jsonObject.toString());
+ sendMsg(message.getSendBytes(), null, null, null);
+ }
+ });
}
return tcpBoot;
@@ -574,46 +596,48 @@
public void sendMsg(byte[] data, String eventTag, HDLLinkCallBack callBack, SendListener sendListener) {
try {
- final AtomicInteger sendCount = new AtomicInteger(0);
+ if(eventTag!=null) {
+ final AtomicInteger sendCount = new AtomicInteger(0);
- final ScheduledExecutorService threadPool = ThreadToolUtils.getInstance().newScheduledThreadPool(1);
- final EventListener eventListener = new EventListener() {
- @Override
- public void onMessage(Object msg) {
- if (msg instanceof LinkResponse) {
- LogUtils.i("sendMsg onSuccess");
- threadPool.shutdownNow();
- LogUtils.i("sendMsg eventListener remove");
- EventDispatcher.getInstance().remove(eventTag, this);
- if (callBack != null) {
- callBack.onSuccess(msg.toString());
+ final ScheduledExecutorService threadPool = ThreadToolUtils.getInstance().newScheduledThreadPool(1);
+ final EventListener eventListener = new EventListener() {
+ @Override
+ public void onMessage(Object msg) {
+ if (msg instanceof LinkResponse) {
+ LogUtils.i("sendMsg onSuccess");
+ threadPool.shutdownNow();
+ LogUtils.i("sendMsg eventListener remove");
+ EventDispatcher.getInstance().remove(eventTag, this);
+ if (callBack != null) {
+ callBack.onSuccess(msg.toString());
+ }
}
}
- }
- };
+ };
- threadPool.scheduleWithFixedDelay(new Runnable() {
- @Override
- public void run() {
- if (sendCount.get() < 3) {
- sendCount.set(sendCount.get() + 1);
- getTcp().sendMsg(data);
- } else {
- threadPool.shutdownNow();
- LogUtils.e("sendMsg eventListener remove");
- EventDispatcher.getInstance().remove(eventTag, eventListener);
- ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (callBack != null) {
- callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+ threadPool.scheduleWithFixedDelay(new Runnable() {
+ @Override
+ public void run() {
+ if (sendCount.get() < 3) {
+ sendCount.set(sendCount.get() + 1);
+ getTcp().sendMsg(data);
+ } else {
+ threadPool.shutdownNow();
+ LogUtils.e("sendMsg eventListener remove");
+ EventDispatcher.getInstance().remove(eventTag, eventListener);
+ ThreadToolUtils.getInstance().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (callBack != null) {
+ callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+ }
}
- }
- });
+ });
+ }
}
- }
- }, 1000, 500, TimeUnit.MILLISECONDS);
- EventDispatcher.getInstance().register(eventTag, eventListener);
+ }, 1000, 500, TimeUnit.MILLISECONDS);
+ EventDispatcher.getInstance().register(eventTag, eventListener);
+ }
//鍏堝彂閫佷竴娆�
getTcp().sendMsg(data, new SendListener() {
@Override
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 4bcc51e..7776163 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
@@ -21,7 +21,7 @@
*/
public class HdlSocketHelper {
- private static final Long DEF_SEND_TIMEOUT = 500L;
+ private static final Long DEF_SEND_TIMEOUT = 1000L;
private static final int DEF_MAX_RETRY = 4;
private static final int DEF_SEND_ONE = 1;
diff --git a/HDLSDK/hdl-socket/build.gradle b/HDLSDK/hdl-socket/build.gradle
index e4bdbc4..60ad903 100644
--- a/HDLSDK/hdl-socket/build.gradle
+++ b/HDLSDK/hdl-socket/build.gradle
@@ -9,7 +9,7 @@
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode 2
- versionName "1.0.5"
+ versionName "1.0.6"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
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 74e0940..5da2b6b 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
@@ -5,13 +5,18 @@
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.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.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingDeque;
@@ -29,8 +34,17 @@
private ExecutorService connectThread;
private ExecutorService sendThread;
private ExecutorService receiveThread;
+ private ExecutorService heartbeatThread;
private final IClient client;
+ private IHeartbeat iHeartbeat;
+ public void SetHeartbeat(IHeartbeat iHeartbeat){
+ this.iHeartbeat=iHeartbeat;
+ }
+ /**
+ * 褰撳墠鎺ユ敹鍒版暟鎹殑鏃堕棿
+ */
+ private static long time=System.currentTimeMillis();
/**
* tcp鏄惁宸茬粡杩炴帴
@@ -50,6 +64,7 @@
initConnectThread();
initReceiveThread();
initSendThread();
+ initHeartbeat();
}
/**
@@ -125,6 +140,7 @@
if (connected) {
//璇诲彇鏁版嵁
client.onHandleResponse();
+ time= System.currentTimeMillis();
} else {
try {
Thread.sleep(1000);
@@ -157,7 +173,7 @@
if (!connected) {
reconect();
}
- Thread.sleep(10*1000);
+ Thread.sleep(3*1000);
} catch (Exception e) {
}
@@ -166,6 +182,39 @@
});
}
}
+
+ /**
+ * 鍒濆鍖栭噸鏂板績璺崇嚎绋�
+ */
+ private void initHeartbeat() {
+ if (heartbeatThread == null) {
+ heartbeatThread = ThreadToolUtils.getInstance().newFixedThreadPool(1);
+ heartbeatThread.execute(new Runnable() {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ //10绉�
+ if (connected && 10 * 1000 < (System.currentTimeMillis() - time)) {
+ time = System.currentTimeMillis();
+ //蹇冭烦妫�娴�
+ try {
+ if (iHeartbeat != null)
+ iHeartbeat.heartbeat();
+ } catch (Exception e) {
+ }
+ }
+ Thread.sleep(1000);
+ } catch (Exception e) {
+
+ }
+ }
+ }
+ });
+ }
+ }
+
+
/**
* 閲嶆柊杩炴帴
*/
diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/IHeartbeat.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/IHeartbeat.java
new file mode 100644
index 0000000..a86a092
--- /dev/null
+++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/IHeartbeat.java
@@ -0,0 +1,8 @@
+package com.hdl.sdk.socket.client;
+
+/**
+ * Created by hxb on 2022/2/16.
+ */
+public interface IHeartbeat {
+ void heartbeat();
+}
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 db3bbcc..9bc8781 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
@@ -17,6 +17,7 @@
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
+import java.net.StandardSocketOptions;
import java.util.ArrayList;
import java.util.List;
@@ -75,7 +76,7 @@
mSocket.connect(new InetSocketAddress(ip, port), 3 * 1000);
mSocket.setTcpNoDelay(true);
mSocket.setReuseAddress(true);
- mSocket.setKeepAlive(true);
+// mSocket.setKeepAlive(true);
mSocket.setSoTimeout(20 * 1000);
tcpClientList.add(this);
@@ -117,7 +118,6 @@
if (handleMessage != null) {
byte []bytes = new byte[len];
System.arraycopy(readBuffer,0,bytes,0,len);
- LogUtils.i("鏀跺埌TCP鏁版嵁",new String(bytes));
//瀹屾暣鐨勬暟鎹墠鍥炶皟
handleMessage.read(bytes);
}
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 2033551..c5c8f1e 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
@@ -72,6 +72,25 @@
removeAllTopicsListener();
}
+ void initDeviceInfo()
+ {
+ AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
+ infoBean.setDeviceMAC("123456789");
+ infoBean.setIPMAC("12345678900");
+ infoBean.setDeviceName("闊充箰鎾斁鍣�");//璁惧鍚嶅瓧
+ infoBean.setDeviceModel("MCLog.431");//璁惧鍨嬪彿
+ infoBean.setAccessMode("WIFI");
+ infoBean.setIPGateway("192.168.88.1");
+ infoBean.setIPAddress("192.168.88.100");
+ infoBean.setGateway_type("music.standard");
+ infoBean.setHw_version("HW2.0");
+ infoBean.setFw_version("Fw1.0");
+ infoBean.setOID("010105000000FE08");
+ infoBean.setSid("010105000000FE08110100000000");
+ HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean);
+ }
+
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -82,7 +101,7 @@
rv.setLayoutManager(new LinearLayoutManager(this));
checkIfCertified();
-
+ initDeviceInfo();
registerAllTopicsListener();
ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
@@ -262,7 +281,7 @@
String macStr = "AA000000000000BB";//璁惧鍞竴MAC鍦板潃
String secret = "87ae414b7a853f65";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
- //姝e紡鏈嶅姟鍣�
+// //姝e紡鏈嶅姟鍣�
// String spkStr = "screen.mirror";//浜у搧spk
// String macStr = "AA000000000000AC";//璁惧鍞竴MAC鍦板潃
// String secret = "ee62124c151b737c";//閫氳繃spk鍜宮ac鎻愪氦浜戠璁よ瘉鍚庡垎閰嶇殑secret
@@ -270,6 +289,7 @@
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();
@@ -281,23 +301,8 @@
authbean.setSpk(spkStr);
authbean.setMACKey(mac_key);
authbean.setRequest(requestBean);
-
- //2.璁剧疆璁惧淇℃伅
- AuthenticateRequest.AuthenticateDeviceInfoBean infoBean = new AuthenticateRequest.AuthenticateDeviceInfoBean();
- infoBean.setDeviceMAC(macStr);
- infoBean.setIPMAC(macStr);
- infoBean.setDeviceName("绾㈠瀹�");//璁惧鍚嶅瓧
- infoBean.setDeviceModel("HDL");//
- infoBean.setAccessMode("WIFI");
- infoBean.setIPGateway("192.168.88.1");
- infoBean.setIPAddress(IpUtils.getIP(this));
-
- infoBean.setOID("010105000000FE08");
- infoBean.setSid("010105000000FE08110100000000");
-// infoBean.set
- AuthenticateRequest.VersionBean[] versionBeans = new AuthenticateRequest.VersionBean[]{new AuthenticateRequest.VersionBean("FW", versionString), new AuthenticateRequest.VersionBean("HW", "1956F")};
- infoBean.setVersions(versionBeans);
- AuthenticateRequest request = new AuthenticateRequest(IdUtils.getUUId(), time, infoBean, authbean);
+ //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) {
--
Gitblit v1.8.0