Add NetworkMonitor
[rtmpclient.git] / app / src / main / java / ai / suanzi / rtmpclient / NetworkMonitor.java
diff --git a/app/src/main/java/ai/suanzi/rtmpclient/NetworkMonitor.java b/app/src/main/java/ai/suanzi/rtmpclient/NetworkMonitor.java
new file mode 100644 (file)
index 0000000..7d51b62
--- /dev/null
@@ -0,0 +1,64 @@
+package ai.suanzi.rtmpclient;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.util.Log;
+import org.apache.log4j.Logger;
+import android.net.ConnectivityManager;
+import android.widget.Toast;
+
+import java.lang.ref.WeakReference;
+
+public class NetworkMonitor extends BroadcastReceiver {
+
+    private Logger gLogger = Logger.getLogger("NetworkMonitor");
+    private NetworkListener mListener;
+
+    public NetworkMonitor(NetworkListener listener) {
+        mListener = listener;
+    }
+
+    @Override
+    public void onReceive (Context context, Intent intent) {
+
+        //获得ConnectivityManager对象
+        ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        NetworkInfo wifiNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+
+        //NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
+        if(wifiNetworkInfo.isConnected()){
+            Toast.makeText(context, "Wifi Connected", Toast.LENGTH_SHORT).show();
+            gLogger.error("Wifi Connected");
+            mListener.onWifiConnected();
+        } else {
+            Toast.makeText(context, "Wifi Disconnected", Toast.LENGTH_SHORT).show();
+            gLogger.error("Wifi Disconnected");
+            mListener.onWifiDisconnected();
+        }
+    }
+
+    public static boolean isNetworkAvailable(Context context){
+        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        if (connectivity != null) {
+            NetworkInfo info = connectivity.getActiveNetworkInfo();
+            if (info != null && info.isConnected()) {
+                if (info.getState() == NetworkInfo.State.CONNECTED) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    public interface NetworkListener {
+        void onWifiConnected();
+        void onWifiDisconnected();
+        void onWifiEnabled();
+        void onWifiDisabled();
+    }
+}