管灌系统巡查员智能手机App
zuoxiao
2024-12-09 a2a1bd40089d81286f8257ca4c61ce49155b6af3
app/src/main/java/com/dayu/pipirrapp/net/MqttManager.java
@@ -2,9 +2,6 @@
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.util.Log;
import com.dayu.pipirrapp.utils.CommonKeyName;
@@ -49,7 +46,27 @@
            connectOptions.setKeepAliveInterval(60); // 设置保持连接的时间
            connectOptions.setAutomaticReconnect(true);  // 启用自动重连
            connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            checkNetwork();
//            LiveEventBus.get(CommonKeyName.NetworkCallback).observeForever(new Observer<Object>() {
//                @Override
//                public void onChanged(Object o) {
//                    switch ((int) o) {
//                        case NetUtils.Available:
//                            MyLog.i("MqttManager>>>Available");
//                            isHasNet = true;
//                            reconnect();
//                            break;
//                        case NetUtils.Lost:
//                            MyLog.i("MqttManager>>>Lost");
//                            isHasNet = false;
//                            try {
//                                mqttClient.disconnect();
//                            } catch (MqttException e) {
//                                e.printStackTrace();
//                            }
//                            break;
//                    }
//                }
//            });
        } catch (MqttException e) {
            e.printStackTrace();
        }
@@ -156,47 +173,18 @@
                Log.d("MqttManager", "Reconnected to MQTT broker! isHasNet=true");
            } else {
                Log.d("MqttManager", "isHasNet is false");
                Thread.sleep(5000);
                reconnect();
//                Thread.sleep(5000);
//                reconnect();
            }
        } catch (MqttException | InterruptedException e) {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException ex) {
                e.printStackTrace();
            }// 每 5 秒重试一次
            reconnect();
//            try {
//                Thread.sleep(5000);
//            } catch (InterruptedException ex) {
//                e.printStackTrace();
//            }// 每 5 秒重试一次
//            reconnect();
        }
    }
    public void checkNetwork() {
        NetworkRequest request = new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)  // 必须具备互联网能力
                .build();
        connectivityManager.registerNetworkCallback(request, new ConnectivityManager.NetworkCallback() {
            @Override
            public void onAvailable(Network network) {
                super.onAvailable(network);
                // 网络可用时的处理逻辑
                Log.d("MqttManager", "Network is available.");
                isHasNet = true;
                reconnect();
            }
            @Override
            public void onLost(Network network) {
                super.onLost(network);
                // 网络丢失时的处理逻辑
                Log.d("MqttManager", "Network is lost.");
                isHasNet = false;
                try {
                    mqttClient.disconnect();
                } catch (MqttException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}