4G手机变22g 3g 4g网络区别怎回事?

Android Network --判断网络状态(网络的连接,改变,和判断2G/3G/4G)
现在app大多都需要从网络上获得数据。所以访问网络是在所难免。但是再访问网络之前,我们应该先做一下网络的状态判断。其实在访问网络之前我们要做一些状态判断,对应一些状态判断来做处理,并不是直接使用Http访问网络即可。很多人在开发就经常把网络这块直接跳过,直接访问网络,可以一断网,各种体验效果不好,不是说app没法用,只是体验效果差。还有,就是我们可能为用户考虑,因为现在一般连网是wifi和手机流量,都知道后者收费是比较高的。假如我们的app加载的图片或者有大的数据操作,可是用户的本意是要是在流量下的话就不要操作这些很费流量的的操作,这样就必须要我们做一些连网状态的判断。网络是否连接良好,连接的wifi还是流量,断网或者网络改变了的时候怎么做,这都是一些细节,但是要注意处理。
我们在做访问的时候都得进行判断是否连网。判断连网也比较简单,就用到了两个类。ConnectivityManager和NetworkInfo。
只要执行下面的代码就可以了。
ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean isWifiConn = networkInfo.isConnected();
networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
boolean isMobileConn = networkInfo.isConnected();
只要有一个连接就是有网,NetworkInfo就是网络的信息。还有一种更简便的判断是否连网的方法。
ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
在一个就是监听网络变化,就是设置一个广播。
注册广播,监听ConnectivityManager.CONNECTIVITY_ACTION这个action
IntentFilter filter = new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION);
receiver = new NetworkReceiver();
context.registerReceiver(receiver, filter);
再实现一个广播类就可以了。这样网络一变化,就会受到广播,然后执行对应操作了。
public class NetworkReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.i(&TAG&, &intent============&&&&& + intent.toString());
下面就是来说一下判断手机网络的类型了,2G,3G,4G
关于网络类型,在得到networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);这个后,确定是手机网络后,通过networkInfo.getSubtype()会得到网络的类型,用networkInfo.getSubtypeName()会得到网络的名字。
我们通过这个networkInfo.getSubtype()得到的类型来判断当前是什么网络。
其实,的Api中已经定义了各种网络状态,不是在ConnectivityManager里面定义的,而是在TelephonyManager里面的定义的。通过不同的api版本的修改,目前增加到了14个状态值:
下面是通过自己查资料,和看别人查资料实验得来的。整理如下:
--------------------Added in API level 1---------------------
public static final int NETWORK_TYPE_UNKNOWN
Network type is unknown
Constant Value: 0 (0x)
(不知道网络类型)
public static final int NETWORK_TYPE_GPRS
Current network is GPRS
Constant Value: 1 (0x)
(2.5G)移动和联通
public static final int NETWORK_TYPE_EDGE
Current network is EDGE
Constant Value: 2 (0x)
(2.75G)2.5G到3G的过渡
移动和联通
public static final int NETWORK_TYPE_UMTS
Current network is UMTS
Constant Value: 3 (0x)
-----------------Added in API level 4---------------------
public static final int NETWORK_TYPE_CDMA
Current network is CDMA: Either IS95A or IS95B
Constant Value: 4 (0x)
public static final int NETWORK_TYPE_EVDO_0
Current network is EVDO revision 0
Constant Value: 5 (0x)
( 3G )电信
public static final int NETWORK_TYPE_EVDO_A
Current network is EVDO revision A
Constant Value: 6 (0x)
(3.5G) 属于3G过渡
public static final int NETWORK_TYPE_1xRTT
Current network is 1xRTT
Constant Value: 7 (0x)
---------------------Added in API level 5--------------------
public static final int NETWORK_TYPE_HSDPA
Current network is HSDPA
Constant Value: 8 (0x)
public static final int NETWORK_TYPE_HSUPA
Current network is HSUPA
Constant Value: 9 (0x)
public static final int NETWORK_TYPE_HSPA
Current network is HSPA
Constant Value: 10 (0x0000000a)
( 3G )联通
--------------------------Added in API level 8-------------------------
public static final int NETWORK_TYPE_IDEN
Current network is iDen
Constant Value: 11 (0x0000000b)
--------------------------Added in API level 9-------------------------
public static final int NETWORK_TYPE_EVDO_B
Current network is EVDO revision B
Constant Value: 12 (0x0000000c)
--------------------------Added in API level 11------------------------
public static final int NETWORK_TYPE_LTE
Current network is LTE
Constant Value: 13 (0x0000000d)
public static final int NETWORK_TYPE_EHRPD
Current network is eHRPD
Constant Value: 14 (0x0000000e)
3G(3G到4G的升级产物)
--------------------------Added in API level 13---------------------------
public static final int NETWORK_TYPE_HSPAP
Current network is HSPA+
Constant Value: 15 (0x0000000f)
所以我们可以networkInfo.getSubtype()得到值和上面的进行对应,就知道目前是几G网络了。由于手里的手机卡有限,所以有些不全,欢迎大家补充,共享。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'奇怪啦!!电信买的4G手机,一用移动卡,就变2G网络了~~~_九江旅游文娱-爱微帮
&& &&& 奇怪啦!!电信买的4G手机,一用移动卡,…
近日,市民杨女士向我们栏目反映,说在10月18号,她在中国电信手机卖场花了一千二百多块钱买了一部手机,但用了一个月后,却发现这手机并不是自己想买的4G手机。杨女士告诉记者,因为孩子读书需要用手机查资料,所以她打算更换一部4G手机。但是一个月后,通过一位朋友的提醒,她才知道自己的手机网络并不是4G的。【市民 杨女士】我看着不对头,我是移动卡,它是中国电信的。用电信卡它才是4G网,我用移动只有2G。记者看到,杨女士的这款手机运营商是中国移动,左上角网络显示确实是2G。但是杨女士说,当时去购买手机时自己明确表示要购买的是4G手机。【市民 杨女士】我就是要用4G的,我说我是移动卡,她说移动和电信都是通用的。她说没有区别的,我不懂。得知新买的手机使用移动卡只有2G网络,杨女士便前往中国电信手机卖场进行更换,但是遭到了拒绝。【市民 杨女士】她把我手机拿过去一看,有一道划痕,她说你手机有损伤不能换。电信:电信买的手机,使用移动卡就是2G网络那究竟杨女士的手机能不能更换呢,随后,记者陪同杨女士一起来到了浔阳路中国电信手机卖场。【中国电信九江分公司 工作人员】在移动买的是全网通的,那就是上我们电信是2G。(我不知道啊,知道我就不会拿,她说是一样的。)记者协调 问题解决这位工作人员告诉记者,杨女士这款手机是全网通,可以使用电信的卡也可以使用移动的卡,但是在电信买的手机,使用移动卡的话则只能用2G的网络。如果杨女士手机买回去15天以内,发现问题,是可以更换的,但是杨女士的手机已经用了二十天,而且有明显刮痕,所以不能更换。最后在记者调解下,杨女士支付了一百元折旧费,更换了一部4G移动的同款手机。通过这件事也提醒了广大消费者,在购物的时候一定要先了解清楚商品的性能,如果发现有什么问题,要在三保规定的时间内去找商家退货。-----------------------------------------亲~~如果您想知道更多信息,一定要随时关注我们的微信公众账号哦!!联系热线:8229933新闻热线:8239888(九江零距离)8968899(政法直播间)新浪微博:@九江旅游文娱频道@九江政法频道微信公众号:九江旅游文娱温馨提示:1、点击右上角按钮即可—分享到朋友圈-发送给朋友-分享到腾讯微博;2、欢迎点击“通讯录”右上角“+”号—“添加朋友”—“查找公众号”—输入“九江旅游文娱”—点击搜索,关注我们的微信吧!微信二维码
点击展开全文
微信扫描右侧二维码关注后
可阅读原文和更多同类文章
还可知道有多少人阅读过此篇文章哦
【九江三套】【九江四套】——频道推广、活动推广、生活娱乐等
您的【关注和订阅】是作者不断前行的动力
本站文章来自网友的提交收录,如需删除可发送邮件到 bang@ 或联系QQ ,
(C)2014&&版权所有&&&|&&&
京ICP备号-2&&&&京公网安备34}

我要回帖

更多关于 移动4g卡只能用2g网络 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信