makcar/app/src/main/java/com/aros/apron/callback/MqttActionCallBack.java

61 lines
2.1 KiB
Java
Raw Normal View History

2026-01-30 11:47:32 +08:00
package com.aros.apron.callback;
import android.os.Handler;
import com.aros.apron.constant.AMSConfig;
import com.aros.apron.tools.LogUtil;
import com.aros.apron.tools.ToastUtil;
import org.eclipse.paho.android.service.MqttAndroidClient;
import org.eclipse.paho.client.mqttv3.IMqttActionListener;
import org.eclipse.paho.client.mqttv3.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
public class MqttActionCallBack implements IMqttActionListener {
private final String TAG = "MqttActionCallBack";
private MqttAndroidClient mqttAndroidClient;
private MqttConnectOptions options;
public MqttActionCallBack(MqttAndroidClient mqttAndroidClient, MqttConnectOptions options) {
this.mqttAndroidClient = mqttAndroidClient;
this.options = options;
}
@Override
public void onSuccess(IMqttToken asyncActionToken) {
LogUtil.log(TAG, "MQtt连接成功-------");
2026-04-29 15:44:05 +08:00
// 异步显示Toast避免Binder IPC阻塞当前主线程消息导致ANR
new Handler().post(() -> ToastUtil.showToast("MQtt连接成功"));
2026-01-30 11:47:32 +08:00
try {
mqttAndroidClient.subscribe(AMSConfig.DOWN_UAV_SERVICES, 1);//订阅主题:注册
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
LogUtil.log(TAG, "MQtt连接失败:" + exception.toString());
try {
if (!mqttAndroidClient.isConnected()){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
mqttAndroidClient.connect(options, null, MqttActionCallBack.this); // 再次尝试连接
} catch (MqttException e) {
LogUtil.log(TAG,"mqtt重连异常:"+e.toString());
e.printStackTrace();
}
}
},1500);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}