HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/AttributesInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkFunctionInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/StatusInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkTCallBack.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/LinkResponseUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HDLSDK/app/src/main/java/com/hdl/hdlsdk/App.java
@@ -19,18 +19,18 @@ public void onCreate() { super.onCreate(); //初始化SDK,如果不走从机入网,走app需要设置端口为8584 HDLSdk.getInstance().init(this, 8584); // HDLSdk.getInstance().init(this, 8584); //如果走从机入网,不需要设置端口 //HDLSdk.getInstance().init(this); HDLSdk.getInstance().init(this); //控制SDK日志打印 HDLSdk.getInstance().setLogEnabled(true); //source系统接口初始化 OsManager.init(this); //appkey:ryfElI3tVOT //appsecret:AKIn7s1A2YnNvAZRtL8FQxzp0R2KUpIY HDLLink.getInstance().initCloud(this, "Lstzip08fTl", "iSIr5TSz1Rzxc1QRQ3RgnGwGB2SeAAAA", HdlCloudApi.BASE_CHINA_URL); //appkey:ryfElI3tVOT Lstzip08fTl //appsecret:AKIn7s1A2YnNvAZRtL8FQxzp0R2KUpIY iSIr5TSz1Rzxc1QRQ3RgnGwGB2SeAAAA HDLLink.getInstance().initCloud(this, "FcRyUJlLJFF", "wz8wn75ABidx8vXcFGUotqhwFkTaYvvJ", HdlCloudApi.BASE_TEST_URL); //注册全局广播,刷新token GlobalBroadcastManager.registerGlobalBroadcast(this); HDLSDK/app/src/main/java/com/hdl/hdlsdk/MainActivity.java
@@ -38,6 +38,7 @@ import com.hdl.sdk.common.utils.SPUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.HDLLink; import com.hdl.sdk.connect.bean.LinkFunctionInfo; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.AttributesRequest; import com.hdl.sdk.connect.bean.request.AuthenticateRequest; @@ -50,6 +51,7 @@ import com.hdl.sdk.connect.bean.response.UpdateInfo; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack; import com.hdl.sdk.connect.callback.HDLLinkTCallBack; import com.hdl.sdk.connect.cloud.CallBackListener; import com.hdl.sdk.connect.cloud.CheckAppVersionListener; import com.hdl.sdk.connect.cloud.HDLException; @@ -81,8 +83,8 @@ private EventListener allTopicsListener; private String testLightSid = "020101A19B485D02020100010101"; private String secret = ""; private List<FunctionBean> devicesList = new ArrayList<>(); private List<FunctionBean> roomDevicesList = new ArrayList<>(); private List<LinkFunctionInfo> devicesList = new ArrayList<>(); private List<LinkFunctionInfo> roomDevicesList = new ArrayList<>(); private List<SceneBean> sceneList = new ArrayList<>(); private List<SceneDetailBean> sceneDetailList = new ArrayList<>(); private List<SceneDetailBean> roomSceneList = new ArrayList<>(); @@ -92,8 +94,8 @@ tv.setText("开始申请设备密钥..."); responseTv.setText(""); String supplier = "HIK KNX";//厂商 String mac = "FQ4895630";//设备唯一MAC地址 String supplier = "JINMAOYUN";//厂商 String mac = "f2c5d8bad48f";//设备唯一MAC地址 // String mac = editText.getText().toString(); String spk = "screen.touch";//产品spk @@ -228,7 +230,7 @@ selectnetwork(); checkIfCertified(); //initDeviceInfo();//不走从机入网的方式不需要初始化 initDeviceInfo();//不走从机入网的方式不需要初始化,走从机入网则需要初始化 registerAllTopicsListener(); HDLLink.getInstance().setDeleteNetworkListener(new DeleteNetworkListener() { @Override @@ -411,11 +413,12 @@ LinkResponse response = (LinkResponse) msg; Log.i("onMessage", "response.getTopic():" + response.getTopic()); String topic = String.format(TopicConstant.GATEWAY_LOGIN, HDLLinkConfig.getInstance().getGatewayId())+ "_reply";; HDLLinkConfig.getInstance().getGatewayId()) + "_reply"; ; if ("/user/all/custom/gateway/broadcast_reply".equals(response.getTopic())) { localSecret.setText("密钥:" + HDLLinkConfig.getInstance().getLocalSecret()); }else if (topic.equals(response.getTopic())){ } else if (topic.equals(response.getTopic())) { //tcp连接成功,处理业务逻辑 } } @@ -473,8 +476,8 @@ infoBean.setDeviceName("魔镜");//设备名字 infoBean.setDeviceModel("HDLSDK");//设备型号 infoBean.setAccessMode("WIFI"); infoBean.setIPGateway("192.168.31.1"); infoBean.setIPAddress("192.168.31.103"); infoBean.setIPGateway("192.168.1.1"); infoBean.setIPAddress("192.168.1.103"); infoBean.setGateway_type("screen.touch"); infoBean.setHw_version("HW2.0"); infoBean.setFw_version("Fw1.0"); @@ -507,7 +510,7 @@ //认证提交参数准备 //正式服务器 String spkStr = "screen.mirror";//产品spk String spkStr = "screen.touch";//产品spk String macStr = "f2c5d8bad48f";//设备唯一MAC地址 String mac_key = stringToMD5(stringToMD5(macStr + secret)); @@ -596,37 +599,23 @@ void getFunctionList() { tv.setText("获取设备列表中..."); responseTv.setText(""); HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() { HDLLink.getInstance().getFunctionInfoList(new HDLLinkTCallBack<List<LinkFunctionInfo>>() { @Override public void onSuccess(List<LinkFunctionInfo> data) { if (data != null && data.size() != 0) { devicesList.clear(); devicesList.addAll(data); tv.setText("获取设备列表成功"); responseTv.setText(data.toString()); } } @Override public void onError(HDLLinkException error) { tv.setText(error.getMsg()); } @Override public void onSuccess(String data) { tv.setText("获取设备列表成功"); responseTv.setText(data); handelFunctionList(data); } }); } void handelFunctionList(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()); Log.d(TAG, "handelFunList-----> " + devicesList.toString()); } catch (Exception e) { Log.e(TAG, "handelFunList: " + e.getMessage()); } } /** @@ -643,10 +632,12 @@ sids.add(testLightSid); } HDLLink.getInstance().getFunctionAttribute(sids, new HDLLinkCallBack() { HDLLink.getInstance().getFunctionAttributeInfo(sids, new HDLLinkTCallBack<List<LinkFunctionInfo>>() { @Override public void onSuccess(String msg) { responseTv.setText(msg); public void onSuccess(List<LinkFunctionInfo> data) { if (data != null && data.size() != 0) { responseTv.setText(data.toString()); } } @Override @@ -707,7 +698,7 @@ request.setStatus(statusBeanList); requestList.add(request); HDLLink.getInstance().propertyDown(requestList, new HDLLinkCallBack() { HDLLink.getInstance().propertyDownDevice(requestList, new HDLLinkTCallBack<String>() { @Override public void onSuccess(String data) { responseTv.setText(data); HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -45,7 +45,7 @@ } String mac_Oid_GatewayId = topics[2]; Log.d("panlili", "AllTopicManagerUtils.java:manager----->topic= " + topic); //Log.d("panlili", "AllTopicManagerUtils.java:manager----->topic= " + topic); if (!isLocalDevice(mac_Oid_GatewayId)) { LogUtils.i("不是当前设备的网关Id,Id是" + mac_Oid_GatewayId); HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/HDLLink.java
@@ -2,20 +2,26 @@ import android.content.Context; import com.google.gson.reflect.TypeToken; import com.hdl.hdlhttp.HxHttpConfig; import com.hdl.sdk.common.event.DeleteNetworkListener; import com.hdl.sdk.common.event.EventDispatcher; import com.hdl.sdk.common.event.EventListener; 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.bean.LinkFunctionInfo; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.AuthenticateRequest; import com.hdl.sdk.connect.bean.request.DeviceControlRequest; import com.hdl.sdk.connect.bean.request.ListSidRequest; import com.hdl.sdk.connect.bean.request.ListUploadRequest; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.callback.HDLLinkResponseCallBack; import com.hdl.sdk.connect.callback.HDLLinkTCallBack; import com.hdl.sdk.connect.cloud.CallBackListener; import com.hdl.sdk.connect.cloud.CheckAppVersionListener; import com.hdl.sdk.connect.cloud.HdlCloudApi; import com.hdl.sdk.connect.cloud.HdlCloudController; import com.hdl.sdk.connect.cloud.listener.GatewayListener; import com.hdl.sdk.connect.cloud.listener.SibichiListener; @@ -265,6 +271,33 @@ } /** * 获取设备列表 */ public void getFunctionInfoList(HDLLinkTCallBack<List<LinkFunctionInfo>> callBack) { getFunctionList(new HDLLinkCallBack() { @Override public void onSuccess(String msg) { LinkResponse linkResponse = GsonConvert.getGson().fromJson(msg, new TypeToken<LinkResponse>() { }.getType()); final BaseLocalResponse<List<LinkFunctionInfo>> listBaseLocalResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<List<LinkFunctionInfo>>>() { }.getType()); if (callBack != null) { callBack.onSuccess(listBaseLocalResponse.getObjects()); } } @Override public void onError(HDLLinkException e) { if (callBack != null) { callBack.onError(e); } } }); } /** * 获取设备功能属性 * * @param sids @@ -275,6 +308,35 @@ } /** * 获取设备功能属性 * * @param sids * @param callBack */ public void getFunctionAttributeInfo(List<String> sids, HDLLinkTCallBack<List<LinkFunctionInfo>> callBack) { getFunctionAttribute(sids, new HDLLinkCallBack() { @Override public void onSuccess(String msg) { LinkResponse linkResponse = GsonConvert.getGson().fromJson(msg, new TypeToken<LinkResponse>() { }.getType()); final BaseLocalResponse<List<LinkFunctionInfo>> listBaseLocalResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<List<LinkFunctionInfo>>>() { }.getType()); if (callBack != null) { callBack.onSuccess(listBaseLocalResponse.getObjects()); } } @Override public void onError(HDLLinkException e) { if (callBack != null) { callBack.onError(e); } } }); } /** * 设备控制 * * @param request 控制状态参数 @@ -285,6 +347,35 @@ } /** * 设备控制 * * @param request 控制状态参数 * @param callBack 结果回调 */ public void propertyDownDevice(List<DeviceControlRequest> request, HDLLinkTCallBack<String> callBack) { propertyDown(request, new HDLLinkCallBack() { @Override public void onSuccess(String msg) { LinkResponse linkResponse = GsonConvert.getGson().fromJson(msg, new TypeToken<LinkResponse>() { }.getType()); final BaseLocalResponse<String> listBaseLocalResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<BaseLocalResponse<String>>() { }.getType()); if (callBack != null) { callBack.onSuccess(listBaseLocalResponse.getObjects()); } } @Override public void onError(HDLLinkException e) { if (callBack != null) { callBack.onError(e); } } }); } /** * 读取状态 * * @param sids 请求参数 指定读取的设备sid列表 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/AttributesInfo.java
New file @@ -0,0 +1,73 @@ package com.hdl.sdk.connect.bean; import androidx.annotation.NonNull; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class AttributesInfo implements Serializable { private String key; private String data_type; private List<String> value = new ArrayList<>(); private String max; private String min; public List<String> getValue() { if (value == null) { return new ArrayList<>(); } return value; } public void setValue(@NonNull List<String> value) { this.value = value; } public String getMax() { return max == null ? "" : max; } public void setMax(String max) { this.max = max; } public String getMin() { return min == null ? "" : min; } public void setMin(String min) { this.min = min; } @NonNull public String getKey() { return key == null ? "" : key; } public void setKey(@NonNull String key) { this.key = key; } @NonNull public String getData_type() { return data_type == null ? "" : data_type; } public void setData_type(@NonNull String data_type) { this.data_type = data_type; } @Override public String toString() { return "AttributesInfo{" + "key='" + key + '\'' + ", data_type='" + data_type + '\'' + ", value=" + value + ", max='" + max + '\'' + ", min='" + min + '\'' + '}'; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/LinkFunctionInfo.java
New file @@ -0,0 +1,146 @@ package com.hdl.sdk.connect.bean; import androidx.annotation.NonNull; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class LinkFunctionInfo implements Serializable { private String sid;//功能的sid private String oid;//模块的oid private String name;//功能回路名字 private String spk;//spk private String omodel; private String src; private String online; private List<AttributesInfo> attributes = new ArrayList<>();//功能属性,需要单独发送功能属性读取的指令读回来 private List<StatusInfo> status = new ArrayList<>();//当前设备状态值,设备控制的时候才用到 private boolean templateFlag = false;//模板标记 /** * 1:展示 2:不展示 */ private String show; public String getShow() { return show == null ? "1" : show; } public void setShow(@NonNull String show) { this.show = show; } public boolean isTemplateFlag() { return templateFlag; } public void setTemplateFlag(boolean templateFlag) { this.templateFlag = templateFlag; } @NonNull public String getSid() { return sid == null ? "" : sid; } public void setSid(@NonNull String sid) { this.sid = sid; } @NonNull public String getOid() { return oid == null ? "" : oid; } public void setOid(@NonNull String oid) { this.oid = oid; } @NonNull public String getName() { return name == null ? "" : name; } public void setName(@NonNull String name) { this.name = name; } @NonNull public String getSpk() { return spk == null ? "" : spk; } public void setSpk(@NonNull String spk) { this.spk = spk; } @NonNull public String getOmodel() { return omodel == null ? "" : omodel; } public void setOmodel(@NonNull String omodel) { this.omodel = omodel; } @NonNull public String getSrc() { return src == null ? "" : src; } public void setSrc(@NonNull String src) { this.src = src; } @NonNull public String getOnline() { return online == null ? "" : online; } public void setOnline(@NonNull String online) { this.online = online; } public List<AttributesInfo> getAttributes() { if (attributes == null) { return new ArrayList<>(); } return attributes; } public void setAttributes(List<AttributesInfo> attributes) { this.attributes = attributes; } public List<StatusInfo> getStatus() { if (status == null) { return new ArrayList<>(); } return status; } public void setStatus(List<StatusInfo> status) { this.status = status; } @Override public String toString() { return "LinkFunctionInfo{" + "sid='" + sid + '\'' + ", oid='" + oid + '\'' + ", name='" + name + '\'' + ", spk='" + spk + '\'' + ", omodel='" + omodel + '\'' + ", src='" + src + '\'' + ", online='" + online + '\'' + ", attributes=" + attributes + ", status=" + status + ", templateFlag=" + templateFlag + ", show='" + show + '\'' + '}'; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/StatusInfo.java
New file @@ -0,0 +1,39 @@ package com.hdl.sdk.connect.bean; import androidx.annotation.NonNull; import java.io.Serializable; public class StatusInfo implements Serializable { private String key; private String value; @NonNull public String getKey() { return key == null ? "" : key; } public void setKey(@NonNull String key) { this.key = key; } @NonNull public String getValue() { return value == null ? "" : value; } public void setValue(@NonNull String value) { this.value = value; } @Override public String toString() { return "StatusInfo{" + "key='" + key + '\'' + ", value='" + value + '\'' + '}'; } } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/callback/HDLLinkTCallBack.java
New file @@ -0,0 +1,10 @@ package com.hdl.sdk.connect.callback; /** * 本地通信通用CallBack */ public interface HDLLinkTCallBack<T> extends BaseCallBack{ void onSuccess(T data); } HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/utils/LinkResponseUtils.java
New file @@ -0,0 +1,44 @@ package com.hdl.sdk.connect.utils; import android.text.TextUtils; import com.google.gson.reflect.TypeToken; import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.response.BaseLocalResponse; import java.lang.reflect.Type; public class LinkResponseUtils<T> { public Type getType() { return new TypeToken<BaseLocalResponse<T>>() { }.getType(); } /** * 转换提取LinkResponse里面的objects * * @param msg * @return */ public static <T> T convertLinkResponse(Object msg, Type type) { T bean = null; if (msg != null && msg instanceof LinkResponse) { LinkResponse linkResponse = (LinkResponse) msg; String data = linkResponse.getData(); if (!TextUtils.isEmpty(data)) { try { final BaseLocalResponse<T> response = GsonConvert.getGson().fromJson(data, type); if (response != null) { bean = response.getObjects(); } } catch (Exception e) { LogUtils.e("convertLinkResponse catch:" + e.getMessage()); } } } return bean; } }