package com.distantfuture.videos.misc; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; import de.greenrobot.event.EventBus; public class ConnectionMonitor { Context mContext; ConnectivityManager mConnectivityManager; boolean mConnected = true; // assume we have a connection, send event if not connected public ConnectionMonitor(Context context) { mContext = context.getApplicationContext(); mConnectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { boolean debug = false; if (debug) { boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON); boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false); DUtils.log("noConnectivity: " + (noConnectivity ? "true" : "false")); DUtils.log("reason: " + reason); DUtils.log("isFailover: " + (isFailover ? "true" : "false")); } boolean isConnected = hasNetworkConnection(); if (mConnected != isConnected) { mConnected = isConnected; EventBus.getDefault().post(new BusEvents.ConnectionChanged()); } } }; mContext.registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); } public boolean hasNetworkConnection() { NetworkInfo activeNetwork = mConnectivityManager.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); // could add this later (from dev sample) // if (isConnected) { // boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI; // // Debug.log("got wifi"); // } return isConnected; } }