| | |
| | | //初始化SDK
|
| | | HDLSdk.getInstance().init(this);
|
| | | //控制SDK日志打印
|
| | | HDLSdk.getInstance().setLogEnabled(false);
|
| | | HDLSdk.getInstance().setLogEnabled(true);
|
| | |
|
| | | }
|
| | |
|
| | |
| | | rv.setLayoutManager(new LinearLayoutManager(this)); |
| | | |
| | | checkIfCertified(); |
| | | |
| | | registerAllTopicsListener(); |
| | | |
| | | ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() { |
| | |
| | | void getFunctionList(){ |
| | | tv.setText("获取功能列表中..."); |
| | | responseTv.setText(""); |
| | | HDLSocket.getInstance().getFunctionList(new HDLLinkCallBack() { |
| | | HDLLink.getInstance().getFunctionList(new HDLLinkCallBack() { |
| | | @Override |
| | | public void onError(HDLLinkException error) { |
| | | tv.setText(error.getMsg()); |
| | |
| | | tv.setText("功能属性读取"); |
| | | List<String> sids = new ArrayList<>(); |
| | | sids.add(testLightSid); |
| | | HDLSocket.getInstance().getFunctionAttribute(sids, new HDLLinkCallBack() { |
| | | HDLLink.getInstance().getFunctionAttribute(sids, new HDLLinkCallBack() { |
| | | @Override |
| | | public void onSuccess(String msg) { |
| | | responseTv.setText(msg); |
| | |
| | | tv.setText("读取状态中..."); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(testLightSid);//要读取设备的sid |
| | | HDLSocket.getInstance().propertyRead(list, new HDLLinkCallBack() { |
| | | HDLLink.getInstance().propertyRead(list, new HDLLinkCallBack() { |
| | | @Override |
| | | public void onSuccess(String data) { |
| | | tv.setText("读取成功"); |
| | |
| | | HDL_SEND_ERROR(-2003,"发送失败"), |
| | | HDL_TIMEOUT_ERROR(-2004,"超时"), |
| | | HDL_UNAUTHORIZED_ERROR(-2005,"未认证,请先认证"), |
| | | HDL_AUTH_ERROR_GATEWAY_NOT_REGISTERED(-2006,"认证失败,网关未注册到云端"), |
| | | HDL_GET_DEVICE_LIST_ERROR(-2100,"获取设备列表失败"), |
| | | HDL_GET_FUNCTION_LIST_ERROR(-2101,"获取功能列表失败"), |
| | | HDL_GET_FUNCTION_PROPERTIES_ERROR(-2102,"获取功能属性失败"), |
| | |
| | | * instance |
| | | */ |
| | | private volatile static HDLLinkConfig instance; |
| | | |
| | | /** |
| | | * getInstance |
| | | * |
| | |
| | | |
| | | /** |
| | | * 保存配置 |
| | | * |
| | | * @param localSecret |
| | | * @param gatewayId |
| | | * @param ipAddress |
| | |
| | | |
| | | /** |
| | | * 检测是否已经认证过 |
| | | * |
| | | * @return |
| | | */ |
| | | public boolean checkIfCertified(){ |
| | |
| | | |
| | | public void setCurrentGateway(GatewaySearchBean currentGateway) { |
| | | this.currentGateway = currentGateway; |
| | | if (this.currentGateway != null && !TextUtils.isEmpty(this.currentGateway.getIp_address())) { |
| | | if (!this.ipAddress.equals(this.currentGateway.getIp_address())) { |
| | | //如果IP地址有变化则更新 |
| | | this.ipAddress = this.currentGateway.getIp_address(); |
| | | SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 判断当前主题数据是否需要加密 |
| | | * |
| | | * @param topicStr 当前主题 |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 拼接网关ID获取完整的主题 |
| | | * |
| | | * @param topicStr |
| | | * @return |
| | | */ |
| | |
| | | String localSecret = bean.getAuth().getLocalSecret(); |
| | | String gatewayId = bean.getObjects().getGatewayID(); |
| | | String ipAddress = bean.getObjects().getIPAddress(); |
| | | //判断网关是否已经注册到云端 |
| | | if(TextUtils.isEmpty(localSecret) ||TextUtils.isEmpty(gatewayId)){ |
| | | //认证失败,网关未注册到云端 |
| | | callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_AUTH_ERROR_GATEWAY_NOT_REGISTERED)); |
| | | }else{ |
| | | HDLLinkConfig.getInstance().saveConfig(localSecret,gatewayId,ipAddress); |
| | | callBack.onSuccess("认证成功"); |
| | | } |
| | | }else{ |
| | | callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR)); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |