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
3382c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    private void register() {
349412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        if (isRegistered) {
359412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            return;
369412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        }
379412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
389412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        isConnected = isConnected(context);
399412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        context.registerReceiver(connectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
409412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        isRegistered = true;
419412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
429412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
4382c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    private void unregister() {
449412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        if (!isRegistered) {
459412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd            return;
469412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        }
479412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
489412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        context.unregisterReceiver(connectivityReceiver);
499412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        isRegistered = false;
509412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
519412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd
529412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    private boolean isConnected(Context context) {
53fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd        ConnectivityManager connectivityManager =
54fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
559412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
569412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd        return networkInfo != null && networkInfo.isConnected();
579412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd    }
5882c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd
5982c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    @Override
6082c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    public void onStart() {
6182c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd        register();
6282c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    }
6382c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd
6482c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    @Override
6582c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    public void onStop() {
6682c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd        unregister();
6782c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    }
6882c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd
6982c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    @Override
7082c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    public void onDestroy() {
7182c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd        // Do nothing.
7282c18a181dc6f7867c76b1b8c469c6be88b85177Sam Judd    }
739412ff8e84d057afc4f44af62f618eefb744b7c1Sam Judd}
74