package com.hdl.hdlsdk;
|
|
import androidx.activity.result.ActivityResultCallback;
|
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.contract.ActivityResultContracts;
|
import androidx.annotation.NonNull;
|
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import android.Manifest;
|
import android.os.Bundle;
|
import android.util.Log;
|
import android.view.View;
|
import android.widget.TextView;
|
|
import com.chad.library.adapter.base.BaseQuickAdapter;
|
import com.chad.library.adapter.base.listener.OnItemClickListener;
|
import com.hdl.sdk.connect.config.HDLLinkConfig;
|
import com.hdl.sdk.connect.socket.HDLAuthSocket;
|
import com.hdl.sdk.connect.socket.HDLSocket;
|
import com.hdl.sdk.connect.bean.DeviceControlRequest;
|
import com.hdl.sdk.connect.protocol.LinkMessageDecoder;
|
import com.hdl.sdk.connect.protocol.LinkMessageEncoder;
|
import com.hdl.sdk.socket.SocketOptions;
|
import com.hdl.sdk.socket.codec.MessagePipeLine;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
|
public class MainActivity extends AppCompatActivity {
|
|
private DemoAdapter demoAdapter;
|
private RecyclerView rv;
|
private TextView tv;
|
private TextView responseTv;
|
boolean isOn;
|
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_main);
|
responseTv = findViewById(R.id.response_tv);
|
tv = findViewById(R.id.state_tv);
|
rv = findViewById(R.id.rv);
|
rv.setLayoutManager(new LinearLayoutManager(this));
|
HDLLinkConfig.getInstance().setLocalEncrypt(true);
|
HDLLinkConfig.getInstance().setLocalSecret("5648d9b9cafd30dd");
|
|
ActivityResultLauncher<String[]> launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback<Map<String, Boolean>>() {
|
@Override
|
public void onActivityResult(Map<String, Boolean> result) {
|
|
}
|
});
|
|
launcher.launch(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE});
|
|
final List<DemoBean> beans = new ArrayList<>();
|
beans.add(new DemoBean("搜索网关"));
|
beans.add(new DemoBean("获取功能列表"));
|
beans.add(new DemoBean("功能属性读取"));
|
beans.add(new DemoBean("设备控制"));
|
beans.add(new DemoBean("状态上报"));
|
beans.add(new DemoBean("读取状态"));
|
beans.add(new DemoBean("入网认证"));
|
demoAdapter = new DemoAdapter(beans);
|
rv.setAdapter(demoAdapter);
|
|
|
final SocketOptions options = new SocketOptions();
|
|
MessagePipeLine pipeLine = new MessagePipeLine();
|
pipeLine.add(new LinkMessageDecoder());
|
pipeLine.add(new LinkMessageEncoder());
|
options.setHandleMessage(pipeLine);
|
options.setEnabledHeartbeat(false);
|
|
demoAdapter.setOnItemClickListener(new OnItemClickListener() {
|
@Override
|
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
|
switch (position) {
|
case 0:
|
tv.setText("搜索网关中");
|
responseTv.setText("");
|
|
HDLSocket.getInstance().searchGateway(new HDLSocket.CallBack() {
|
@Override
|
public void onError(String error) {
|
tv.setText("网关获取失败");
|
}
|
|
@Override
|
public void onResponse(String data) {
|
tv.setText("获取网关成功");
|
responseTv.setText(data);
|
}
|
});
|
|
break;
|
case 1:
|
|
tv.setText("获取功能列表中");
|
responseTv.setText("");
|
HDLSocket.getInstance().getFunctionList(new HDLSocket.CallBack() {
|
@Override
|
public void onError(String error) {
|
tv.setText(error);
|
}
|
|
@Override
|
public void onResponse(String data) {
|
tv.setText("获取功能列表成功");
|
responseTv.setText(data);
|
}
|
});
|
break;
|
case 2:
|
//功能属性读取
|
// HDLSocket.getInstance().getFunctionAttribute();
|
|
break;
|
case 3:
|
//设备控制
|
isOn = !isOn;
|
List<DeviceControlRequest> requestList = new ArrayList<>();
|
DeviceControlRequest request = new DeviceControlRequest();
|
request.setSid("000101B847C71B02020100010101");
|
List<DeviceControlRequest.StatusBean> statusBeanList= new ArrayList<>();
|
DeviceControlRequest.StatusBean bean = new DeviceControlRequest.StatusBean();
|
bean.setKey("on_off");
|
bean.setValue(isOn ? "on" : "off");
|
statusBeanList.add(bean);
|
request.setStatus(statusBeanList);
|
requestList.add(request);
|
HDLAuthSocket.getInstance().propertyDown(requestList,null);
|
|
|
break;
|
case 4:
|
//状态上报
|
//HDLSocket.getInstance().propertyUp();
|
break;
|
case 5:
|
//读取状态
|
// HDLSocket.getInstance().propertyRead();
|
break;
|
case 6:
|
//入网认证
|
HDLAuthSocket.getInstance().sendAuthenticateRequest(new HDLAuthSocket.CallBack() {
|
@Override
|
public void onError(String error) {
|
Log.i("TAG", "onError: 认证失败");
|
// tv.setText("认证失败");
|
// responseTv.setText(error);
|
}
|
|
@Override
|
public void onSuccess(String data) {
|
tv.setText("认证成功");
|
responseTv.setText(data);
|
}
|
});
|
|
// HDLAuthSocket.getInstance().searchGateway("1406844230123372545", new HDLAuthSocket.SearchGatewayCallBack() {
|
// @Override
|
// public void onEnd(String error) {
|
//
|
// }
|
//
|
// @Override
|
// public void onSuccess(GatewaySearchBean gatewaySearchBean) {
|
// Log.i("TAG", "onSuccess: 搜索成功:"+gatewaySearchBean.getGatewayId());
|
// }
|
// });
|
|
|
break;
|
}
|
}
|
});
|
}
|
|
}
|