Add NetworkMonitor
[rtmpclient.git] / app / src / main / java / ai / suanzi / rtmpclient / NetworkMonitor.java
1 package ai.suanzi.rtmpclient;
2
3 import android.content.BroadcastReceiver;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.net.NetworkInfo;
7 import android.net.wifi.WifiInfo;
8 import android.net.wifi.WifiManager;
9 import android.util.Log;
10 import org.apache.log4j.Logger;
11 import android.net.ConnectivityManager;
12 import android.widget.Toast;
13
14 import java.lang.ref.WeakReference;
15
16 public class NetworkMonitor extends BroadcastReceiver {
17
18     private Logger gLogger = Logger.getLogger("NetworkMonitor");
19     private NetworkListener mListener;
20
21     public NetworkMonitor(NetworkListener listener) {
22         mListener = listener;
23     }
24
25     @Override
26     public void onReceive (Context context, Intent intent) {
27
28         //获得ConnectivityManager对象
29         ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
30
31         NetworkInfo wifiNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
32
33         //NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
34         if(wifiNetworkInfo.isConnected()){
35             Toast.makeText(context, "Wifi Connected", Toast.LENGTH_SHORT).show();
36             gLogger.error("Wifi Connected");
37             mListener.onWifiConnected();
38         } else {
39             Toast.makeText(context, "Wifi Disconnected", Toast.LENGTH_SHORT).show();
40             gLogger.error("Wifi Disconnected");
41             mListener.onWifiDisconnected();
42         }
43     }
44
45     public static boolean isNetworkAvailable(Context context){
46         ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
47         if (connectivity != null) {
48             NetworkInfo info = connectivity.getActiveNetworkInfo();
49             if (info != null && info.isConnected()) {
50                 if (info.getState() == NetworkInfo.State.CONNECTED) {
51                     return true;
52                 }
53             }
54         }
55         return false;
56     }
57
58     public interface NetworkListener {
59         void onWifiConnected();
60         void onWifiDisconnected();
61         void onWifiEnabled();
62         void onWifiDisabled();
63     }
64 }