Android如何检测网络的类型为3G、2G、wap、wifi
来源:互联网 发布:mac电脑屏幕正常磨损 编辑:程序博客网 时间:2024/05/05 04:11
转载来源http://blog.csdn.net/nanzhiwen666/article/details/8288433 http://blog.csdn.net/pi9nc/article/details/12228027
关于Android如何检测网络的类型,网上代码很多,但是有用的精品不多,前段时间,因为做项目需要涉及到具体网络类型的检查,特别是区分2G网络是为wap,还是net,类型,因为wap类型,需要配置代理上网,基于此,我将自己实现的过程代码记录下来:
1、定义常量来标识几种网络类型
- /** 没有网络 */
- public static final int NETWORKTYPE_INVALID = 0;
- /** wap网络 */
- public static final int NETWORKTYPE_WAP = 1;
- /** 2G网络 */
- public static final int NETWORKTYPE_2G = 2;
- /** 3G和3G以上网络,或统称为快速网络 */
- public static final int NETWORKTYPE_3G = 3;
- /** wifi网络 */
- public static final int NETWORKTYPE_WIFI = 4;
2、判断是否是FastMobileNetWork,将3G或者3G以上的网络称为快速网络
- private static boolean isFastMobileNetwork(Context context) {
- elephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
- switch (telephonyManager.getNetworkType()) {
- case TelephonyManager.NETWORK_TYPE_1xRTT:
- return false; // ~ 50-100 kbps
- case TelephonyManager.NETWORK_TYPE_CDMA:
- return false; // ~ 14-64 kbps
- case TelephonyManager.NETWORK_TYPE_EDGE:
- return false; // ~ 50-100 kbps
- case TelephonyManager.NETWORK_TYPE_EVDO_0:
- return true; // ~ 400-1000 kbps
- case TelephonyManager.NETWORK_TYPE_EVDO_A:
- return true; // ~ 600-1400 kbps
- case TelephonyManager.NETWORK_TYPE_GPRS:
- return false; // ~ 100 kbps
- case TelephonyManager.NETWORK_TYPE_HSDPA:
- return true; // ~ 2-14 Mbps
- case TelephonyManager.NETWORK_TYPE_HSPA:
- return true; // ~ 700-1700 kbps
- case TelephonyManager.NETWORK_TYPE_HSUPA:
- return true; // ~ 1-23 Mbps
- case TelephonyManager.NETWORK_TYPE_UMTS:
- return true; // ~ 400-7000 kbps
- case TelephonyManager.NETWORK_TYPE_EHRPD:
- return true; // ~ 1-2 Mbps
- case TelephonyManager.NETWORK_TYPE_EVDO_B:
- return true; // ~ 5 Mbps
- case TelephonyManager.NETWORK_TYPE_HSPAP:
- return true; // ~ 10-20 Mbps
- case TelephonyManager.NETWORK_TYPE_IDEN:
- return false; // ~25 kbps
- case TelephonyManager.NETWORK_TYPE_LTE:
- return true; // ~ 10+ Mbps
- case TelephonyManager.NETWORK_TYPE_UNKNOWN:
- return false;
- default:
- return false;
- }
- }
3、获取网络类型是否是2G、3G、wap、wifi等
- /**
- * 获取网络状态,wifi,wap,2g,3g.
- *
- * @param context 上下文
- * @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G}, *{@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}* <p>{@link #NETWORKTYPE_WIFI}
- */
- public static int getNetWorkType(Context context) {
- ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo networkInfo = manager.getActiveNetworkInfo();
- if (networkInfo != null && networkInfo.isConnected()) {
- String type = networkInfo.getTypeName();
- if (type.equalsIgnoreCase("WIFI")) {
- mNetWorkType = NETWORKTYPE_WIFI;
- } else if (type.equalsIgnoreCase("MOBILE")) {
- String proxyHost = android.net.Proxy.getDefaultHost();
- mNetWorkType = TextUtils.isEmpty(proxyHost)
- ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G)
- : NETWORKTYPE_WAP;
- }
- } else {
- mNetWorkType = NETWORKTYPE_INVALID;
- }
- return mNetWorkType;
- }
0 0
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi .
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- 4.2.2.5 Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android网络类型判断(2g、3g、wifi)
- Android网络类型判断(2g、3g、wifi) .
- Android网络类型判断(2g、3g、wifi)
- Android网络类型判断(2g、3g、wifi)
- Android网络类型判断(2g、3g、wifi)
- Android网络类型判断(2g、3g、wifi)
- android如何判断当前网络类型(联网,2g,3g,wifi等)
- android如何判断当前网络类型(联网,2g,3g,wifi等)
- Android判断当前网络类型2G/3G/4G/WIFI
- Android 判断网络类型 wifi,2G,3G,4G
- This ScrollView layout or its FrameLayout parent is useless; transfer the background attribute to th
- 单词倒排
- java swing 点击关闭按钮最小化到系统托盘的实现
- 使用viewpager+fragment,在activity启动模式为singleTask,跳转到当前页面重新加载数据fragment数据不更新
- JSP 自定义标签 BodyTagSupport
- Android如何检测网络的类型为3G、2G、wap、wifi
- android DialogFragment底部弹出,自定义大小
- 画三角形1
- Monkey测试log简单分析
- 【Bash百宝箱】xargs
- 玩转WebDriver
- 面试题(Android 基础部分)
- AFNetWorking3.0内存泄漏问题,xcode检测内存泄漏。
- recover database using backup controlfile