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 }
时间: 2024-08-06 19:47:46

android开发获取网络状态,wifi,wap,2g,3g.工具类(一)的相关文章

iOS开发 - 检测网络状态(WIFI、2G/3G/4G)

检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是 让用户了解自己的网络状态,防止一些误会(比如怪应用无能) 根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态 https://developer.apple.com/library/ios/samplecode/Reachability/Rea

android ConnectivityManager获取网络状态

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /**    * 测试ConnectivityManager    * ConnectivityManager主要管理和网络连接相关的操作    * 相关的TelephonyManager则管理和手机.运营商等的相关信息:WifiManager则管理和wifi相关的信息.    

Android安卓获取网络状态

首先在AndroidManifest.xml添加权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1,判断是否有网络连接 public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConnectivityManager = (Conne

android如何判断当前网络类型(联网,2g,3g,wifi等)

一般对网络的判断都是判断是否联网,不过有时候我们需要知道具体的网络类型,比如在3g网络下,百度地图的定位功能存在很大的偏差,这就需要提前判断网络类型针对3g网络情况做特殊的处理. 关于Android如何检测网络的类型,网上代码很多,但是有用的不多,真正解决了问题的我只找到一篇(见文章末尾网址),为了更好的方便自己理解,对这片文章做了解释和整理. 在android中判断网络需要用到ConnectivityManager,下面的方法演示了如何用ConnectivityManager判断当前是否联网:

Android编程 获取网络连接状态 及调用网络配置界面

获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager 类,用于网络连接状态的检测. Android开发文档这样描述ConnectivityManager的作用: Class that answers queries about the state of network connectivity. It also notifies applic

Android获取网络状态

Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html Overview 在做Android app的时候,网络的状态可能会经常的变化,当用户当前没有网络的时候,我们要保证程序不崩溃,而在当用户使用流量的话,则需要确保,在进行耗流量的操

Android开发之网络

很多初学Android开发的人员对网络这一点感觉很高大上,现在我就和大家分享一下我的学习心得. 就目前的Android手机来说,可能存在5种网络状态: ----无网络(这种状态可能是因为手机停机,网络没有开启,信号不好等原因) ----使用WIFI上网 ----CMWAP(中国移动代理) ----CMNET上网 ----2G/3G/4G上网 很多时候我们需要判断用户是否开启网络设置,通常通过ConnectivityManager类来判断网络连接是否存在. 获取网络状态: 那到底如何使用这个类呢?

android 监听网络状态的变化及实战

android 监听网络状态的变化及实际应用 转载请注明博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/53008266 平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 - 没有网络的错误 - 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到

React Native之Fetch简单封装、获取网络状态

1.Fetch的使用 fetch的使用非常简单,只需传入请求的url fetch('https://facebook.github.io/react-native/movies.json'); 当然是否请求成功与数据的处理,我们还需处理成功与失败的回调 function getMoviesFromApiAsync() { return fetch('https://facebook.github.io/react-native/movies.json') .then((response) =>