Android系统信息获取 之六:网络连接状态信息获取

来源:互联网 发布:stm32 3轴控制算法 编辑:程序博客网 时间:2024/06/05 05:59

Android系统可以通过WIFI和移动网络来连接互联网,系统网络连接状态是通过ConnectivityManager 类来获取的。关键代码如下:

[java] view plain copy
  1. ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);  

对于网络状态的判断,Android提供了大量的API,我们只要善于利用这些API就能很很容易获取各种网络的状态信息。总结的各种网络状态接口如下:


[java] view plain copy
  1. // API都有只不过是将其进行综合并作为自己工程中的工具函数使用,很方便的。  
  2. /** 
  3.  * 获取当前网络状态的类型 * 
  4.  *  
  5.  * @param mContext 
  6.  * @return 返回网络类型 
  7.  */  
  8. public static final int NETWORK_TYPE_NONE = -0x1// 断网情况  
  9. public static final int NETWORK_TYPE_WIFI = 0x1// WIFI模式  
  10. public static final int NETWOKR_TYPE_MOBILE = 0x2// GPRS模式  
  11.   
  12. public static int getCurrentNetType(Context mContext) {  
  13.     ConnectivityManager connManager = (ConnectivityManager) mContext  
  14.             .getSystemService(Context.CONNECTIVITY_SERVICE);  
  15.     NetworkInfo wifi = connManager  
  16.             .getNetworkInfo(ConnectivityManager.TYPE_WIFI); // WIFI  
  17.     NetworkInfo gprs = connManager  
  18.             .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); // GPRS  
  19.   
  20.     if (wifi != null && wifi.getState() == State.CONNECTED) {  
  21.         Log.d(TAG, "Current net type:  WIFI.");  
  22.         return NETWORK_TYPE_WIFI;  
  23.     } else if (gprs != null && gprs.getState() == State.CONNECTED) {  
  24.         Log.d(TAG, "Current net type:  GPRS.");  
  25.         return NETWOKR_TYPE_MOBILE;  
  26.     }  
  27.     Log.e(TAG, "Current net type:  NONE.");  
  28.     return NETWORK_TYPE_NONE;  
  29. }  
  30.   
  31. /** 
  32.  * 判断Android客户端网络是否连接 
  33.  * 只能判断是否有可用的连接,而不能判断是否能连网 
  34.  * @param context 
  35.  * @return true/false 
  36.  */  
  37. public static boolean checkNet(Context context) {  
  38.     try {  
  39.         ConnectivityManager connectivity = (ConnectivityManager) context  
  40.                 .getSystemService(Context.CONNECTIVITY_SERVICE);  
  41.         if (connectivity != null) {  
  42.             NetworkInfo info = connectivity.getActiveNetworkInfo();  
  43.             if (info != null && info.isConnected()) {  
  44.                 if (info.getState() == NetworkInfo.State.CONNECTED) {  
  45.                     return true;  
  46.                 }  
  47.             }  
  48.         }  
  49.     } catch (Exception e) {  
  50.         return false;  
  51.     }  
  52.     return false;  
  53. }  
  54.   
  55. /** 
  56.  * 检验网络连接 并toast提示  
  57.  * @return 
  58.  */  
  59. public boolean noteIntentConnect(Context context) {  
  60.     ConnectivityManager con = (ConnectivityManager) context  
  61.             .getSystemService(Context.CONNECTIVITY_SERVICE);  
  62.     NetworkInfo networkinfo = con.getActiveNetworkInfo();  
  63.     if (networkinfo == null || !networkinfo.isAvailable()) {  
  64.         // 当前网络不可用  
  65.         Toast.makeText(context.getApplicationContext(), "请先连接Internet!",  
  66.                 Toast.LENGTH_SHORT).show();  
  67.         return false;  
  68.     }  
  69.     boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI)  
  70.             .isConnectedOrConnecting();  
  71.     if (!wifi) { // 提示使用WIFI  
  72.         Toast.makeText(context.getApplicationContext(), "建议您使用WIFI以减少流量!",  
  73.                 Toast.LENGTH_SHORT).show();  
  74.     }  
  75.     return true;  
  76.   
  77. }  
  78.   
  79. /** 
  80.  * 判断网络连接是否可用 
  81.  *  
  82.  * @param context 
  83.  * @return 
  84.  */  
  85. public static boolean isNetworkAvailable(Context context) {  
  86.     ConnectivityManager cm = (ConnectivityManager) context  
  87.             .getSystemService(Context.CONNECTIVITY_SERVICE);  
  88.     if (cm == null) {  
  89.     } else {  
  90.         // 如果仅仅是用来判断网络连接  
  91.         // 则可以使用 cm.getActiveNetworkInfo().isAvailable();  
  92.         NetworkInfo[] info = cm.getAllNetworkInfo();  
  93.         if (info != null) {  
  94.             for (int i = 0; i < info.length; i++) {  
  95.                 if (info[i].getState() == NetworkInfo.State.CONNECTED) {  
  96.                     return true;  
  97.                 }  
  98.             }  
  99.         }  
  100.     }  
  101.     return false;  
  102. }  
  103.   
  104.    /** 
  105.    * 判断网络状态是否可用 
  106.    * @return true: 网络可用 ; false: 网络不可用 
  107.    */  
  108. public boolean isConnectInternet(Context mContext) {  
  109.     ConnectivityManager conManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);  
  110.     NetworkInfo networkInfo = conManager.getActiveNetworkInfo();  
  111.     if (networkInfo != null) { // 注意,这个判断一定要的,要不然会出错  
  112.         return networkInfo.isAvailable();  
  113.     }  
  114.     return false;  
  115. }  
  116.   
  117. /** 
  118.  * 判断GPS是否打开 
  119.  *  
  120.  * @param context 
  121.  * @return 
  122.  */  
  123. public static boolean isGpsEnabled(Context context) {  
  124.     LocationManager lm = ((LocationManager) context  
  125.             .getSystemService(Context.LOCATION_SERVICE));  
  126.     List<String> accessibleProviders = lm.getProviders(true);  
  127.     return accessibleProviders != null && accessibleProviders.size() > 0;  
  128. }  
  129.   
  130. /** 
  131.  * 判断WIFI是否打开 
  132.  *  
  133.  * @param context 
  134.  * @return 
  135.  */  
  136. public static boolean isWifiEnabled(Context context) {  
  137.     ConnectivityManager mgrConn = (ConnectivityManager) context  
  138.             .getSystemService(Context.CONNECTIVITY_SERVICE);  
  139.     TelephonyManager mgrTel = (TelephonyManager) context  
  140.             .getSystemService(Context.TELEPHONY_SERVICE);  
  141.     return ((mgrConn.getActiveNetworkInfo() != null && mgrConn  
  142.             .getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel  
  143.             .getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);  
  144. }  
  145.   
  146. /** 
  147.  * 判断是否是3G网络 
  148.  *  
  149.  * @param context 
  150.  * @return 
  151.  */  
  152. public static boolean is3gNet(Context context) {  
  153.     ConnectivityManager cm = (ConnectivityManager) context  
  154.             .getSystemService(Context.CONNECTIVITY_SERVICE);  
  155.     NetworkInfo networkINfo = cm.getActiveNetworkInfo();  
  156.     if (networkINfo != null  
  157.             && networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {  
  158.         return true;  
  159.     }  
  160.     return false;  
  161. }  
  162.   
  163. /** 
  164.  * 判断是否是WIFI网络 
  165.  *  
  166.  * @param context 
  167.  * @return 
  168.  */  
  169. public static boolean isWifiNet(Context context) {  
  170.     ConnectivityManager cm = (ConnectivityManager) context  
  171.             .getSystemService(Context.CONNECTIVITY_SERVICE);  
  172.     NetworkInfo networkINfo = cm.getActiveNetworkInfo();  
  173.     if (networkINfo != null  
  174.             && networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {  
  175.         return true;  
  176.     }  
  177.     return false;  
  178. }  
0 0
原创粉丝点击