19412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddpackage com.bumptech.glide.manager;
29412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
39412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddimport android.content.BroadcastReceiver;
49412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddimport android.content.Context;
59412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddimport android.content.Intent;
69412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddimport android.content.IntentFilter;
79412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddimport android.net.ConnectivityManager;
89412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddimport android.net.NetworkInfo;
99412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
109412ff8e84d057afc4f44af62f618eefb744b7c1Sam Juddclass DefaultConnectivityMonitor implements ConnectivityMonitor {
119412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private final Context context;
129412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private final ConnectivityListener listener;
139412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
149412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private boolean isConnected;
159412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private boolean isRegistered;
169412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
179412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private final BroadcastReceiver connectivityReceiver = new BroadcastReceiver() {
189412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        @Override
199412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        public void onReceive(Context context, Intent intent) {
209412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            boolean wasConnected = isConnected;
219412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            isConnected = isConnected(context);
229412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            if (wasConnected != isConnected) {
239412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd                listener.onConnectivityChanged(isConnected);
249412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            }
259412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        }
269412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    };
279412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
289412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    public DefaultConnectivityMonitor(Context context, ConnectivityListener listener) {
299412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        this.context = context.getApplicationContext();
309412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        this.listener = listener;
319412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
329412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
339412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    @Override
349412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    public void register() {
359412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        if (isRegistered) {
369412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            return;
379412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        }
389412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
399412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        isConnected = isConnected(context);
409412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        context.registerReceiver(connectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
419412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        isRegistered = true;
429412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
439412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
449412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    @Override
459412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    public void unregister() {
469412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        if (!isRegistered) {
479412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            return;
489412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        }
499412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
509412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        context.unregisterReceiver(connectivityReceiver);
519412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        isRegistered = false;
529412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
539412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
549412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private boolean isConnected(Context context) {
559412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
569412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
579412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        return networkInfo != null && networkInfo.isConnected();
589412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
599412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd}
60