初步增加airkiss配网

This commit is contained in:
Lihongda 2024-02-23 06:25:59 +08:00
parent 6788ff18d1
commit b6f1aeaeb6
1 changed files with 21 additions and 8 deletions

View File

@ -46,10 +46,12 @@ public class AirKissUtil {
receiveSubscribe.unsubscribe();
}
AirKissEncoder airKissEncoder = new AirKissEncoder(ssid, password);
//发送AirKiss
sendSubscribe = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("start");
byte[] sendBuffer = new byte[1500];
try (DatagramSocket sendSocket = new DatagramSocket()) {
// 创建一个新的DatagramSocket对象此时系统会随机分配一个可用的UDP端口号
@ -76,6 +78,7 @@ public class AirKissUtil {
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
final ProgressDialog mDialog = new ProgressDialog(activity);
@Override
public void onCompleted() {
LogUtils.d("LHD onCompleted");
@ -90,23 +93,35 @@ public class AirKissUtil {
@Override
public void onNext(String string) {
LogUtils.d("LHD send onNext =" + string);
mDialog.setTitle("配网");
mDialog.setMessage("发送配网信息...");
mDialog.setCancelable(false);
mDialog.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//发送配网ssid pwd,因为字节发送需要时间比较久此处只是设置比较短的提示但实际上后台线程还在发送中
mDialog.dismiss();
receiveUDPPackage(activity);
}
}, 5000);
}
});
receiveUDPPackage(activity);
// receiveUDPPackage(activity);
}
public void receiveUDPPackage(AppCompatActivity activity) {
ProgressDialog mDialog = new ProgressDialog(activity);
//接收udp包
receiveSubscribe = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
byte[] buffer = new byte[15000];
DatagramSocket udpServerSocket = null;
try {
udpServerSocket = new DatagramSocket(9954);
try (DatagramSocket udpServerSocket = new DatagramSocket(9954)) {
udpServerSocket.setSoTimeout(1000 * 60);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
while (true) {
@ -134,14 +149,12 @@ public class AirKissUtil {
e.printStackTrace();
} finally {
LogUtils.d("LHD received finally: ");
if (udpServerSocket != null) {
udpServerSocket.close();
}
}
}
}).subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {
final ProgressDialog mDialog = new ProgressDialog(activity);
@Override
public void onStart() {
super.onStart();