| | |
| | | |
| | | 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; |
| | |
| | | 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(); |
| | | } |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |