4.2.2.5 Android如何检测网络的类型为3G、2G、wap、wifi
16lz
2021-01-23
Android如何检测网络的类型为3G、2G、wap、wifi
2013-10-02 00:34 8727人阅读 评论(1) 收藏 举报 分类: 实习android开发之路(298)[置顶]Android如何检测网络的类型为3G、2G、wap、wifi
分类:移动开发 、Android、2G、3G、wifi 2012-12-12 22:30 762人阅读 评论(0) 收藏 举报关于Android如何检测网络的类型,网上代码很多,但是有用的精品不多,前段时间,因为做项目需要涉及到具体网络类型的检查,特别是区分2G网络是为wap,还是net,类型,因为wap类型,需要配置代理上网,基于此,我将自己实现的过程代码记录下来:
1、定义常量来标识几种网络类型
[java] view plain copy
- /**没有网络*/
- publicstaticfinalintNETWORKTYPE_INVALID=0;
- /**wap网络*/
- publicstaticfinalintNETWORKTYPE_WAP=1;
- /**2G网络*/
- publicstaticfinalintNETWORKTYPE_2G=2;
- /**3G和3G以上网络,或统称为快速网络*/
- publicstaticfinalintNETWORKTYPE_3G=3;
- /**wifi网络*/
- publicstaticfinalintNETWORKTYPE_WIFI=4;
2、判断是否是FastMobileNetWork,将3G或者3G以上的网络称为快速网络
- privatestaticbooleanisFastMobileNetwork(Contextcontext){
- elephonyManagertelephonyManager=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
- switch(telephonyManager.getNetworkType()){
- caseTelephonyManager.NETWORK_TYPE_1xRTT:
- returnfalse;//~50-100kbps
- caseTelephonyManager.NETWORK_TYPE_CDMA:
- returnfalse;//~14-64kbps
- caseTelephonyManager.NETWORK_TYPE_EDGE:
- returnfalse;//~50-100kbps
- caseTelephonyManager.NETWORK_TYPE_EVDO_0:
- returntrue;//~400-1000kbps
- caseTelephonyManager.NETWORK_TYPE_EVDO_A:
- returntrue;//~600-1400kbps
- caseTelephonyManager.NETWORK_TYPE_GPRS:
- returnfalse;//~100kbps
- caseTelephonyManager.NETWORK_TYPE_HSDPA:
- returntrue;//~2-14Mbps
- caseTelephonyManager.NETWORK_TYPE_HSPA:
- returntrue;//~700-1700kbps
- caseTelephonyManager.NETWORK_TYPE_HSUPA:
- returntrue;//~1-23Mbps
- caseTelephonyManager.NETWORK_TYPE_UMTS:
- returntrue;//~400-7000kbps
- caseTelephonyManager.NETWORK_TYPE_EHRPD:
- returntrue;//~1-2Mbps
- caseTelephonyManager.NETWORK_TYPE_EVDO_B:
- returntrue;//~5Mbps
- caseTelephonyManager.NETWORK_TYPE_HSPAP:
- returntrue;//~10-20Mbps
- caseTelephonyManager.NETWORK_TYPE_IDEN:
- returnfalse;//~25kbps
- caseTelephonyManager.NETWORK_TYPE_LTE:
- returntrue;//~10+Mbps
- caseTelephonyManager.NETWORK_TYPE_UNKNOWN:
- returnfalse;
- default:
- returnfalse;
- }
- }
3、获取网络类型是否是2G、3G、wap、wifi等
- /**
- *获取网络状态,wifi,wap,2g,3g.
- *
- *@paramcontext上下文
- *@returnint网络状态{@link#NETWORKTYPE_2G},{@link#NETWORKTYPE_3G},*{@link#NETWORKTYPE_INVALID},{@link#NETWORKTYPE_WAP}*<p>{@link#NETWORKTYPE_WIFI}
- */
- publicstaticintgetNetWorkType(Contextcontext){
- ConnectivityManagermanager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfonetworkInfo=manager.getActiveNetworkInfo();
- if(networkInfo!=null&&networkInfo.isConnected()){
- Stringtype=networkInfo.getTypeName();
- if(type.equalsIgnoreCase("WIFI")){
- mNetWorkType=NETWORKTYPE_WIFI;
- }elseif(type.equalsIgnoreCase("MOBILE")){
- StringproxyHost=android.net.Proxy.getDefaultHost();
- mNetWorkType=TextUtils.isEmpty(proxyHost)
- ?(isFastMobileNetwork(context)?NETWORKTYPE_3G:NETWORKTYPE_2G)
- :NETWORKTYPE_WAP;
- }
- }else{
- mNetWorkType=NETWORKTYPE_INVALID;
- }
- returnmNetWorkType;
- }
更多相关文章
- android 开发中判断网络是否连接的代码
- 用网络adb连接调试Android
- Android实现透明式状态栏
- Android:ImageView如何显示网络图片
- Android开发实践 网络通信 URL、URLConnection、HttpClient