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.app.Instrumentation; 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.google.gson.JsonObject; import com.hdl.sdk.common.config.AuthenticateConfig; import com.hdl.sdk.common.config.TopicConstant; import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.IpUtils; import com.hdl.sdk.connect.HDLAuthSocket; import com.hdl.sdk.connect.HDLSocket; import com.hdl.sdk.connect.bean.DeviceControlRequest; import com.hdl.sdk.connect.bean.GatewaySearchBean; import com.hdl.sdk.connect.bean.LinkRequest; import com.hdl.sdk.connect.protocol.LinkMessageDecoder; 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.UdpClient; import com.hdl.sdk.socket.codec.MessagePipeLine; import java.io.UnsupportedEncodingException; 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)); AuthenticateConfig.getInstance().setLocalEncrypt(true); AuthenticateConfig.getInstance().setLocalSecret("5648d9b9cafd30dd"); ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback>() { @Override public void onActivityResult(Map result) { } }); launcher.launch(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}); final List 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 requestList = new ArrayList<>(); DeviceControlRequest request = new DeviceControlRequest(); request.setSid("000101B847C71B02020100010101"); List 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; } } }); } }