android开发获取网络状态,wifi,wap,2g,3g.工具类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发获取网络状态,wifi,wap,2g,3g.工具类相关的知识,希望对你有一定的参考价值。

android开发获取网络状态整理:

 1 package com.gzcivil.utils;
 2 
 3 import android.content.Context;
 4 import android.net.ConnectivityManager;
 5 import android.net.NetworkInfo;
 6 import android.telephony.TelephonyManager;
 7 import android.text.TextUtils;
 8 
 9 public class NetworkUtils {
10 
11     /** 没有网络 */
12     public static final int NETWORKTYPE_INVALID = 0;
13     /** wap网络 */
14     public static final int NETWORKTYPE_WAP = 1;
15     /** 2G网络 */
16     public static final int NETWORKTYPE_2G = 2;
17     /** 3G和3G以上网络,或统称为快速网络 */
18     public static final int NETWORKTYPE_3G = 3;
19     /** USB网络 */
20     public static final int NETWORKTYPE_USB = 4;
21     /** wifi网络 */
22     public static final int NETWORKTYPE_WIFI = 5;
23 
24     /**
25      * 获取网络状态,wifi,wap,2g,3g.
26      * 
27      * @param context
28      *            上下文
29      * @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G}, *
30      *         {@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}*
31      *         <p>
32      *         {@link #NETWORKTYPE_WIFI}
33      */
34     public static int getNetWorkType(Context context) {
35         ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
36         NetworkInfo networkInfo = manager.getActiveNetworkInfo();
37         int mNetWorkType = 0;
38         if (networkInfo != null && networkInfo.isConnected()) {
39             String type = networkInfo.getTypeName();
40             if (type.equalsIgnoreCase("WIFI")) {
41                 mNetWorkType = NETWORKTYPE_WIFI;
42             } else if (type.equalsIgnoreCase("usb")) {
43                 mNetWorkType = NETWORKTYPE_USB;
44             } else if (type.equalsIgnoreCase("MOBILE")) {
45                 @SuppressWarnings("deprecation")
46                 String proxyHost = android.net.Proxy.getDefaultHost();
47                 mNetWorkType = TextUtils.isEmpty(proxyHost) ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G) : NETWORKTYPE_WAP;
48             }
49         } else {
50             mNetWorkType = NETWORKTYPE_INVALID;
51         }
52         return mNetWorkType;
53     }
54     
55     private static boolean isFastMobileNetwork(Context context) {
56         TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
57         switch (telephonyManager.getNetworkType()) {
58         case TelephonyManager.NETWORK_TYPE_1xRTT:
59             return false; // ~ 50-100 kbps
60         case TelephonyManager.NETWORK_TYPE_CDMA:
61             return false; // ~ 14-64 kbps
62         case TelephonyManager.NETWORK_TYPE_EDGE:
63             return false; // ~ 50-100 kbps
64         case TelephonyManager.NETWORK_TYPE_EVDO_0:
65             return true; // ~ 400-1000 kbps
66         case TelephonyManager.NETWORK_TYPE_EVDO_A:
67             return true; // ~ 600-1400 kbps
68         case TelephonyManager.NETWORK_TYPE_GPRS:
69             return false; // ~ 100 kbps
70         case TelephonyManager.NETWORK_TYPE_HSDPA:
71             return true; // ~ 2-14 Mbps
72         case TelephonyManager.NETWORK_TYPE_HSPA:
73             return true; // ~ 700-1700 kbps
74         case TelephonyManager.NETWORK_TYPE_HSUPA:
75             return true; // ~ 1-23 Mbps
76         case TelephonyManager.NETWORK_TYPE_UMTS:
77             return true; // ~ 400-7000 kbps
78         case TelephonyManager.NETWORK_TYPE_EHRPD:
79             return true; // ~ 1-2 Mbps
80         case TelephonyManager.NETWORK_TYPE_EVDO_B:
81             return true; // ~ 5 Mbps
82         case TelephonyManager.NETWORK_TYPE_HSPAP:
83             return true; // ~ 10-20 Mbps
84         case TelephonyManager.NETWORK_TYPE_IDEN:
85             return false; // ~25 kbps
86         case TelephonyManager.NETWORK_TYPE_LTE:
87             return true; // ~ 10+ Mbps
88         case TelephonyManager.NETWORK_TYPE_UNKNOWN:
89             return false;
90         default:
91             return false;
92         }
93     }
94 }

 

以上是关于android开发获取网络状态,wifi,wap,2g,3g.工具类的主要内容,如果未能解决你的问题,请参考以下文章

Android网络状态判断与处理

Android 通过广播获取网络状态

android获取系统wifi状态等

如何在android上获取网络状态变化? [复制]

android -------- WIFI 详解

Android开发 网络状态与信息工具类