Tesis 1.0.0
Loading...
Searching...
No Matches
ConnectionMonitor.java
Go to the documentation of this file.
1package com.example.food_front.utils;
2
3import android.content.Context;
4import android.net.ConnectivityManager;
5import android.net.Network;
6import android.net.NetworkCapabilities;
7import android.net.NetworkRequest;
8import android.util.Log;
9
10import androidx.annotation.NonNull;
11
16public class ConnectionMonitor {
17 private static final String TAG = "ConnectionMonitor";
18 private final ConnectivityManager connectivityManager;
19 private final ConnectivityListener listener;
20 private final Context context;
21 private boolean isRegistered = false;
22
26 public interface ConnectivityListener {
29 }
30
36 public ConnectionMonitor(Context context, ConnectivityListener listener) {
37 this.context = context;
38 this.connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
39 this.listener = listener;
40 }
41
45 public void startMonitoring() {
46 if (isRegistered) {
47 return;
48 }
49
50 NetworkRequest networkRequest = new NetworkRequest.Builder()
51 .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
52 .build();
53
54 if (connectivityManager != null) {
55 try {
56 connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
57 isRegistered = true;
58 Log.d(TAG, "Monitoreo de conexión iniciado");
59
60 // Verificar estado actual
61 if (NetworkUtils.isNetworkAvailable(context)) {
62 if (listener != null) {
63 listener.onConnected();
64 }
65 } else {
66 if (listener != null) {
67 listener.onDisconnected();
68 }
69 }
70 } catch (Exception e) {
71 Log.e(TAG, "Error al registrar callback de red", e);
72 }
73 }
74 }
75
79 public void stopMonitoring() {
80 if (!isRegistered) {
81 return;
82 }
83
84 try {
85 connectivityManager.unregisterNetworkCallback(networkCallback);
86 isRegistered = false;
87 Log.d(TAG, "Monitoreo de conexión detenido");
88 } catch (Exception e) {
89 Log.e(TAG, "Error al detener monitoreo", e);
90 }
91 }
92
96 private final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
97 @Override
98 public void onAvailable(@NonNull Network network) {
99 super.onAvailable(network);
100 Log.d(TAG, "Red disponible");
101 if (listener != null) {
102 listener.onConnected();
103 }
104 }
105
106 @Override
107 public void onLost(@NonNull Network network) {
108 super.onLost(network);
109 Log.d(TAG, "Red perdida");
110 if (listener != null) {
111 listener.onDisconnected();
112 }
113 }
114 };
115}
ConnectionMonitor(Context context, ConnectivityListener listener)
static boolean isNetworkAvailable(Context context)