HDLSDK.zipBinary files differ
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -94,7 +94,7 @@ init(); checkIfCertified(); initDeviceInfo(); initDeviceInfo();//初始化基本信息,非常重要,认证时要用 registerAllTopicsListener(); ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() { @@ -272,7 +272,7 @@ infoBean.setDeviceModel("MCLog.431");//设备型号 infoBean.setAccessMode("WIFI"); infoBean.setIPGateway("192.168.1.1"); infoBean.setIPAddress("192.168.1.101"); infoBean.setIPAddress("192.168.1.102"); infoBean.setGateway_type("music.standard"); infoBean.setHw_version("HW2.0"); infoBean.setFw_version("Fw1.0"); @@ -289,14 +289,14 @@ //认证提交参数准备 //测试服务 String spkStr = "ir.module";//产品spk String macStr = "AA000000000000AF";//设备唯一MAC地址 String secret = "44b360eb74b7ba64";//通过spk和mac提交云端认证后分配的secret // String spkStr = "ir.module";//产品spk // String macStr = "AA000000000000AF";//设备唯一MAC地址 // String secret = "44b360eb74b7ba64";//通过spk和mac提交云端认证后分配的secret // //正式服务器 // String spkStr = "screen.mirror";//产品spk // String macStr = "AA000000000000AC";//设备唯一MAC地址 // String secret = "ee62124c151b737c";//通过spk和mac提交云端认证后分配的secret // 正式服务器 String spkStr = "screen.mirror";//产品spk String macStr = "AA000000000000AC";//设备唯一MAC地址 String secret = "ee62124c151b737c";//通过spk和mac提交云端认证后分配的secret String mac_key = stringToMD5(stringToMD5(macStr + secret)); String versionString = "HDL_V1.0.1";// HDLSDK/hdl-common/build.gradle
@@ -9,8 +9,8 @@ minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 2 versionName "1.0.7" versionName "1.0.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" } HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/HDLSdk.java
@@ -19,7 +19,7 @@ return version; } private String version="1.0.7"; private String version="1.0.8"; private HDLSdk() { } HDLSDK/hdl-common/src/main/java/com/hdl/sdk/common/event/EventDispatcher.java
@@ -27,7 +27,7 @@ private static final int MAIN_TYPE = 0; private static final int IO_TYPE = 1; private static final ExecutorService ioThread = ThreadToolUtils.getInstance().newFixedThreadPool(2); private static final ExecutorService ioThread = ThreadToolUtils.getInstance().newFixedThreadPool(3); private EventDispatcher() { } @@ -63,6 +63,8 @@ } public synchronized void remove(Object tag) { try { ioThread.execute(new Runnable() { @Override public void run() { @@ -80,9 +82,11 @@ } }); }catch (Exception e){} } public synchronized void remove(Object tag, EventListener listener) { try { ioThread.execute(new Runnable() { @Override public void run() { @@ -100,6 +104,7 @@ } }); }catch (Exception e){} } @@ -150,6 +155,7 @@ * @param listener */ public synchronized void removeAllTopicsListener(EventListener listener) { try { ioThread.execute(new Runnable() { @Override public void run() { @@ -164,6 +170,7 @@ } }); }catch (Exception e){} } public synchronized void clear() { HDLSDK/hdl-connect/build.gradle
@@ -9,7 +9,7 @@ minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 2 versionName "1.0.7" versionName "1.0.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkResponse.java
@@ -17,6 +17,16 @@ private String data; private int length; public String getSource_ipAddress() { return source_ipAddress; } public void setSource_ipAddress(String source_ipAddress) { this.source_ipAddress = source_ipAddress; } public String source_ipAddress; public String getTopic() { return topic; } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -119,7 +119,7 @@ @Override protected synchronized LinkResponse decoder(Object msg) throws Exception { protected synchronized LinkResponse decoder(Object msg,String ipaddress) throws Exception { if (msg instanceof byte[]) { bytes.addAll(ByteUtils.toByteList((byte[]) msg)); //如果多条命令打包在一条数据中,都需要处理完 @@ -157,6 +157,7 @@ bytes.add(recevieBytes[i]); } LinkResponse response = new LinkResponse(); response.setSource_ipAddress(ipaddress); response.setTopic(topic); if (HDLLinkConfig.getInstance().ifNeedEncrypt(response.getTopic())) { //需要解密 @@ -182,7 +183,8 @@ response.setData(bodyString); LogUtils.i( "接收到数据:" + response.getTopic() + "\r\n" + response.getData()); //非正常数据,返回 if (!(bodyString.startsWith("{") || bodyString.startsWith("["))) { if (!((bodyString.startsWith("{") &&bodyString.endsWith("}")) || (bodyString.startsWith("[")&&bodyString.endsWith("]")))) { continue; } //解析完成,topic发送一次 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -408,11 +408,11 @@ */ public void udpSendMsg(String topic, String bodyStr,boolean broadcast) { if (TextUtils.isEmpty(topic) || TextUtils.isEmpty(bodyStr)) { LogUtils.e("udpSendMsg", "参数不能为空"); LogUtils.e( "参数不能为空,不能发送UDP数据"); return; } if (!HDLLinkConfig.getInstance().checkIfCertified()) { LogUtils.e("udpSendMsg", "未认证,请先认证"); LogUtils.e("未认证,请先认证再调用UDP发送方法"); return; } LinkRequest message = new LinkRequest(topic, bodyStr); @@ -492,7 +492,8 @@ }.getType()); GatewaySearchBean searchBean = response.getObjects(); if (searchBean != null && !TextUtils.isEmpty(searchBean.getGatewayId())) { if (searchBean.getGatewayId().contains(searchGatewayId)) { searchBean.setIp_address(linkResponse.getSource_ipAddress()); if (searchBean.getGatewayId().contains(searchGatewayId)&&!TextUtils.isEmpty(searchGatewayId)) { removeSearchGatewayEvent();//移除搜索网关监听 isSearchGatewaySuccess.set(true);//搜索成功标记 searchGatewayCount.set(11);//次数标记 @@ -526,10 +527,14 @@ }.getType()); GatewaySearchBean gateway = response.getObjects(); if (gateway != null && !TextUtils.isEmpty(gateway.getGatewayId())) { //可能网关带过来的ip不对 gateway.setIp_address(linkResponse.getSource_ipAddress()); //主网关并且是当前绑定的网关 if ("true".equals(gateway.getMaster().toLowerCase()) && gateway.getGatewayId().equals(HDLLinkConfig.getInstance().getGatewayId())) { HDLLinkConfig.getInstance().setCurrentGateway(gateway);//设置当前网关 if(!TextUtils.isEmpty( gateway.getIp_address())) { HDLLinkConfig.getInstance().setIpAddress(gateway.getIp_address()); } //更新当前网关的信息 HDLLinkConfig.getInstance().reSaveConfig(); } @@ -582,9 +587,11 @@ } if (!isSearchGatewaySuccess.get()) { try { LogUtils.e("搜索网关", "搜索10次,指定网关都没回复,回调超时"); //搜索10次,指定网关都没回复,回调超时 callBackSearchGatewayTimeout(); LogUtils.e("搜索网关", "搜索10次,指定网关都没回复,回调超时"); }catch (Exception e){} } } }).start(); HDLSDK/hdl-socket/build.gradle
@@ -9,7 +9,7 @@ minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 2 versionName "1.0.7" versionName "1.0.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/TcpClient.java
@@ -119,7 +119,7 @@ byte []bytes = new byte[len]; System.arraycopy(readBuffer,0,bytes,0,len); //完整的数据才回调 handleMessage.read(bytes); handleMessage.read(bytes,ip); } } } HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/client/UdpClient.java
@@ -154,7 +154,7 @@ if (handleMessage != null) { byte[] data = new byte[receivePacket.getLength()]; System.arraycopy(receivePacket.getData(), 0, data, 0, data.length); handleMessage.read(data); handleMessage.read(data,receivePacket.getAddress().getHostAddress()); } } catch (Exception e) { HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/ByteToMessageDecoder.java
@@ -5,12 +5,12 @@ */ public abstract class ByteToMessageDecoder<T> implements IHandleFlow<T> { protected abstract T decoder(Object msg) protected abstract T decoder(Object msg,String ipaddress) throws Exception; @Override public final T read(Object data) throws Exception { return decoder(data); public final T read(Object data,String ipaddress) throws Exception { return decoder(data,ipaddress); } @Override HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/IHandleFlow.java
@@ -5,7 +5,7 @@ */ public interface IHandleFlow<T> { T read(Object data) throws Exception; T read(Object data,String ipaddress) throws Exception; byte[] write(byte[] data) throws Exception; HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/IHandleMessage.java
@@ -4,7 +4,7 @@ * Created by Tong on 2021/9/27. */ public interface IHandleMessage { void read(byte[] data) throws Exception; void read(byte[] data,String ipaddress) throws Exception; byte[] write(byte[] data) throws Exception; } HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessagePipeLine.java
@@ -22,11 +22,11 @@ } @Override public void read(byte[] data) throws Exception { public void read(byte[] data,String ipaddress) throws Exception { Object out = data; for (int i = 0; i < queue.size(); i++) { IHandleFlow flow = queue.get(i); Object read = flow.read(out); Object read = flow.read(out,ipaddress); try { out = Objects.requireNonNull(read); } catch (Exception ignored) { HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/codec/MessageToByteEncoder.java
@@ -11,7 +11,7 @@ throws Exception; @Override public final Object read(Object data) { public final Object read(Object data,String ipaddress) { return data; } HDLSDK_DEMO.zipBinary files differ
HDLSDK_DEMO/app/libs/hdl-common-V1.0.3.aarBinary files differ
HDLSDK_DEMO/app/libs/hdl-common-V1.0.8.aarBinary files differ
HDLSDK_DEMO/app/libs/hdl-connect-V1.0.3.aarBinary files differ
HDLSDK_DEMO/app/libs/hdl-connect-V1.0.8.aarBinary files differ
HDLSDK_DEMO/app/libs/hdl-socket-V1.0.3.aarBinary files differ
HDLSDK_DEMO/app/libs/hdl-socket-V1.0.8.aarBinary files differ
HDLSDK_DEMO/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -75,19 +75,69 @@ 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.102"); 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");//每个设备的sid都要不一样 HDLLinkConfig.getInstance().setDeviceInfoBean(infoBean); } /** * 入网认证 */ void sendAuthenticateRequest() { tv.setText("开始入网认证..."); //认证提交参数准备 // // //测试服务 // String spkStr = "ir.module";//产品spk // String macStr = "AA000000000000AF";//设备唯一MAC地址 // String secret = "44b360eb74b7ba64";//通过spk和mac提交云端认证后分配的secret // 正式服务器 String spkStr = "screen.mirror";//产品spk String macStr = "AA000000000000AC";//设备唯一MAC地址 String secret = "ee62124c151b737c";//通过spk和mac提交云端认证后分配的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()); } }); } @@ -101,7 +151,7 @@ rv.setLayoutManager(new LinearLayoutManager(this)); checkIfCertified(); initDeviceInfo(); initDeviceInfo();//初始化 registerAllTopicsListener(); ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() { @@ -269,55 +319,7 @@ HDLLink.getInstance().removeAllTopicsListener(allTopicsListener); } /** * 入网认证 */ void sendAuthenticateRequest() { tv.setText("开始入网认证..."); //认证提交参数准备 //测试服务 String spkStr = "ir.module";//产品spk String macStr = "AA000000000000BB";//设备唯一MAC地址 String secret = "87ae414b7a853f65";//通过spk和mac提交云端认证后分配的secret // //正式服务器 // String spkStr = "screen.mirror";//产品spk // String macStr = "AA000000000000AC";//设备唯一MAC地址 // String secret = "ee62124c151b737c";//通过spk和mac提交云端认证后分配的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("raysgem"); 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()); } }); } String stringToMD5(String text) { byte[] hash;