判断是否联网_检测网络的类型为3G、2G、wap、wifi
2015-01-31 13:09
441 查看
判断是否联网_检测网络的类型为3G、2G、wap、wifi
判断是否联网:
一般对网络的判断都是判断是否联网,不过有时候我们需要知道具体的网络类型,比如在3g网络下,百度地图的定位功能存在很大的偏差,这就需要提前判断网络类型针对3g网络情况做特殊的处理。
关于Android如何检测网络的类型,网上代码很多,但是有用的不多,真正解决了问题的我只找到一篇(见文章末尾网址),为了更好的方便自己理解,对这片文章做了解释和整理。
在android中判断网络需要用到ConnectivityManager,下面的方法演示了如何用ConnectivityManager判断当前是否联网:
其中有个疑问,
上面只是判断是否联网,跟我们的目的还有很大的差距,为了获得具体的网络类型需要对
ConnectivityManager.TYPE_MOBILE,
ConnectivityManager.TYPE_WIFI,
ConnectivityManager.TYPE_WIMAX,
ConnectivityManager.TYPE_ETHERNET,
ConnectivityManager.TYPE_BLUETOOTH
五种,其中只有ConnectivityManager.TYPE_MOBILE, ConnectivityManager.TYPE_WIFI是跟互联网有关的,可见ConnectivityManager并不是专门管理互联网连接的,还负责蓝牙等连接。
先定义一些整形变量代表不同的网络:
这些常量将在后面用到。
下面我们通过一个方法来实现判断是wifi还是移动网络,如果是移动网络再通过其他方法进一步分析是3g还是2g:
其中为了区别是3g还是2g我们定义了
整个过程可总结为:第一步通过ConnectivityManager判断是wifi还是mobile网络,在通过TelephonyManager判断移动网络的类型。
参考:http://blog.csdn.net/nanzhiwen666/article/details/8288433#
判断是否联网:
/*** * judge Internet is available * * @author wei-spring * @return */ public boolean isHasNet() { ConnectivityManager cwjManager = (ConnectivityManager) mActivity .getSystemService(Context.CONNECTIVITY_SERVICE); if (cwjManager.getActiveNetworkInfo() != null) { return cwjManager.getActiveNetworkInfo().isAvailable(); } else { return false; } }
一般对网络的判断都是判断是否联网,不过有时候我们需要知道具体的网络类型,比如在3g网络下,百度地图的定位功能存在很大的偏差,这就需要提前判断网络类型针对3g网络情况做特殊的处理。
关于Android如何检测网络的类型,网上代码很多,但是有用的不多,真正解决了问题的我只找到一篇(见文章末尾网址),为了更好的方便自己理解,对这片文章做了解释和整理。
在android中判断网络需要用到ConnectivityManager,下面的方法演示了如何用ConnectivityManager判断当前是否联网:
isConnectedOrConnecting()从字面上看是是否连接或者正在连接,如果正在连接的是一个不可用的网络,那应该算不联网的吧 ,所以我觉得还是改成isConnected()好些,根据个人的需求吧。
上面只是判断是否联网,跟我们的目的还有很大的差距,为了获得具体的网络类型需要对
NetworkInfo中的信息进一步分解,
NetworkInfo的getTypeName()方法可以判断出是wifi还是mobile网络,与getTypeName()方法对应的是getType方法,返回的是代表连接类型的整形常量,api中标明的有
ConnectivityManager.TYPE_MOBILE,
ConnectivityManager.TYPE_WIFI,
ConnectivityManager.TYPE_WIMAX,
ConnectivityManager.TYPE_ETHERNET,
ConnectivityManager.TYPE_BLUETOOTH
五种,其中只有ConnectivityManager.TYPE_MOBILE, ConnectivityManager.TYPE_WIFI是跟互联网有关的,可见ConnectivityManager并不是专门管理互联网连接的,还负责蓝牙等连接。
先定义一些整形变量代表不同的网络:
下面我们通过一个方法来实现判断是wifi还是移动网络,如果是移动网络再通过其他方法进一步分析是3g还是2g:
isFastMobileNetwork(context)方法,主要用到了
TelephonyManager:
参考:http://blog.csdn.net/nanzhiwen666/article/details/8288433#
相关文章推荐
- 4.2.2.5 Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- Android如何检测网络的类型为3G、2G、wap、wifi .
- Android 判断网络是否可用、网络类型WIFI/2G/3G/4G及获取IP
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- IOS判断运营商网络类型2G/3G/4G/WIFI/是否有网络
- Android如何检测网络的类型为3G、2G、wap、wifi
- android如何判断当前网络类型(联网,2g,3g,wifi等)
- Android如何检测网络的类型为3G、2G、wap、wifi
- Android如何检测网络的类型为3G、2G、wap、wifi
- android如何判断当前网络类型(联网,2g,3g,wifi等)
- Android 判断网络类型 wifi,2G,3G,4G
- 一个判断网络类型的工具类(wifi 2g 3g 4g)
- Android网络类型判断(2g、3g、wifi)
- iphone最牛判断当前手机网络连接类型wifi-2G-3G-4G-5G
- Android网络类型判断(2g、3g、wifi)