Android如何检测网络的类型为3G 2G wap wifi

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

               
 

[置顶] Android如何检测网络的类型为3G、2G、wap、wifi

分类: 移动开发 、Android、2G、3G、wifi   762人阅读  评论(0)  收藏  举报

       关于Android如何检测网络的类型,网上代码很多,但是有用的精品不多,前段时间,因为做项目需要涉及到具体网络类型的检查,特别是区分2G网络是为wap,还是net,类型,因为wap类型,需要配置代理上网,基于此,我将自己实现的过程代码记录下来:

  1、定义常量来标识几种网络类型

 

[java]  view plain copy print ?
  1. /** 没有网络 */  
  2. public static final int NETWORKTYPE_INVALID = 0;  
  3. /** wap网络 */  
  4. public static final int NETWORKTYPE_WAP = 1;  
  5. /** 2G网络 */  
  6. public static final int NETWORKTYPE_2G = 2;  
[java]  view plain copy print ?
  1. /** 3G和3G以上网络,或统称为快速网络 */  
  2. public static final int NETWORKTYPE_3G = 3;  
[java]  view plain copy print ?
  1. /** wifi网络 */  
  2. public static final int NETWORKTYPE_WIFI = 4;  


2、判断是否是FastMobileNetWork,将3G或者3G以上的网络称为快速网络

[java]  view plain copy print ?
  1. private static boolean isFastMobileNetwork(Context context) {  
  2. elephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);  
  3. switch (telephonyManager.getNetworkType()) {  
  4.        case TelephonyManager.NETWORK_TYPE_1xRTT:  
  5.            return false// ~ 50-100 kbps  
  6.        case TelephonyManager.NETWORK_TYPE_CDMA:  
  7.            return false// ~ 14-64 kbps  
  8.        case TelephonyManager.NETWORK_TYPE_EDGE:  
  9.            return false// ~ 50-100 kbps  
  10.        case TelephonyManager.NETWORK_TYPE_EVDO_0:  
  11.            return true// ~ 400-1000 kbps  
  12.        case TelephonyManager.NETWORK_TYPE_EVDO_A:  
  13.            return true// ~ 600-1400 kbps  
  14.        case TelephonyManager.NETWORK_TYPE_GPRS:  
  15.            return false// ~ 100 kbps  
  16.        case TelephonyManager.NETWORK_TYPE_HSDPA:  
  17.            return true// ~ 2-14 Mbps  
  18.        case TelephonyManager.NETWORK_TYPE_HSPA:  
  19.            return true// ~ 700-1700 kbps  
  20.        case TelephonyManager.NETWORK_TYPE_HSUPA:  
  21.            return true// ~ 1-23 Mbps  
  22.        case TelephonyManager.NETWORK_TYPE_UMTS:  
  23.            return true// ~ 400-7000 kbps  
  24.        case TelephonyManager.NETWORK_TYPE_EHRPD:  
  25.            return true// ~ 1-2 Mbps  
  26.        case TelephonyManager.NETWORK_TYPE_EVDO_B:  
  27.            return true// ~ 5 Mbps  
  28.        case TelephonyManager.NETWORK_TYPE_HSPAP:  
  29.            return true// ~ 10-20 Mbps  
  30.        case TelephonyManager.NETWORK_TYPE_IDEN:  
  31.            return false// ~25 kbps  
  32.        case TelephonyManager.NETWORK_TYPE_LTE:  
  33.            return true// ~ 10+ Mbps  
  34.        case TelephonyManager.NETWORK_TYPE_UNKNOWN:  
  35.            return false;  
  36.        default:  
  37.            return false;  
  38.     }  
  39. }  


 3、获取网络类型是否是2G、3G、wap、wifi等

[java]  view plain copy print ?
  1. /** 
  2.      * 获取网络状态,wifi,wap,2g,3g. 
  3.      * 
  4.      * @param context 上下文 
  5.      * @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G},          *{@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}* <p>{@link #NETWORKTYPE_WIFI} 
  6.      */  
  7.   
  8.     public static int getNetWorkType(Context context) {  
  9.   
  10.         ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  11.         NetworkInfo networkInfo = manager.getActiveNetworkInfo();  
  12.   
  13.         if (networkInfo != null && networkInfo.isConnected()) {  
  14.             String type = networkInfo.getTypeName();  
  15.   
  16.             if (type.equalsIgnoreCase("WIFI")) {  
  17.                 mNetWorkType = NETWORKTYPE_WIFI;  
  18.             } else if (type.equalsIgnoreCase("MOBILE")) {  
  19.                 String proxyHost = android.net.Proxy.getDefaultHost();  
  20.   
  21.                 mNetWorkType = TextUtils.isEmpty(proxyHost)  
  22.                         ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G)  
  23.                         : NETWORKTYPE_WAP;  
  24.             }  
  25.         } else {  
  26.             mNetWorkType = NETWORKTYPE_INVALID;  
  27.         }  
  28.   
  29.         return mNetWorkType;  
  30.     }   
           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值