android 运营商和网络类型分析2015-05-23 2 个评论 来源:LiteHeaven 的专栏收藏 我要投稿一些需求需要获取运营商和网络类型,下面对运营商和网络类型做分析。
先抛出一些废话的定义:?1GSM :全球移动通讯系统Global System of Mobile communication 就是众所周知的G 1 信技术。
可见,这两者是技术标准,和网络类型及制式无关。
进入正题。
1.获取话机类型这个可以通过方法TelephonyManager#getPhoneType 来获得,下面是返回类型。
?123456789 /** * Returns a constant indicating the device phone type. This * indicates the type of radio used to transmit voice calls. * * @see #PHONE_TYPE_NONE * @see #PHONE_TYPE_GSM * @see #PHONE_TYPE_CDMA * @see #PHONE_TYPE_SIP */常用话机类型就是GSM 类型和CDMA 类型,SIP 是和VOIP 相关的东西,平时不常遇到。
2.获取运营商TelephonyManager#getSimOperator用于获取SIM卡运营商ID,比如移动是46002TelephonyManager#getSimOperatorName方法获取运营商名字,比如移动是CMCCTelephonyManager#getSimCountryIso获取SIM卡国家,比如中国是cnTelephonyManager#getSimState获取SIM卡状态3.获取网络类型重点来了。
TelephonyManager#getNetworkType方法获取网络类型。
想要确切的显示出手机当前的网络,比如“联通3G”,需要的就是这个。
在网上找了一些代码,看见一些代码在一些网络类型后面标明:“移动2G”,我只想说“呵呵”。
原因就是,从单一的网络类型是无法判断这点的。
回到正题,开始分析返回值。
1)NETWORK_TYPE_GPRS 1---移动联通GPRS是一种制式,相当于2.5G,它独立于话机类型而存在,虽然移动是GSM 话机,联通是CDMA话机,但是他们都可以有这种制式,拿移动2G举例,我所在城市是EDGE网络。
但是在之前,移动和联通可能有同时使用GPRS的时候,同时也不排除部分地区移动仍然部署了GPRS的可能性,所以比较不赞同在代码后面标“移动2G”的这位前辈。
2)NETWORK_TYPE_EDGE 2--移动EDGE应该算是2.75G。
据我所知,联通好像没有升级2G网络到这个制式。
而移动当前是在用这个。
3)NETWORK_TYPE_UMTS 3-联通WCDMA 46006UMTS定义是一种3G移动电话技术,使用WCDMA作为底层标准,WCDMA向下兼容GSM网络。
目前中国也就只有联通了,这个确实可以唯一判断运营商及其网络类型。
4)NETWORK_TYPE_CDMA 4-电信CDMA的定义是一种技术标准,有其2代、2.5代、3代技术。
被认为是3代移动技术的首选,包含的标准有WCDMA、CDMA2000、TD-SCDMA。
这里CDMA指代CDMA2代技术标准的制式,中国电信在用。
5)NETWORK_TYPE_1xRTT 7--电信在CDMA2000中,通常被认为是2.5G或2.75G,速率只有其他3G的几分之一,电信可能使用。
6)NETWORK_TYPE_EVDO_0、NETWORK_TYPE_EVDO_A、NETWORK_TYPE_EVDO_B ··5-6-12 -电信两者都是CDMA2000标准中的版本,属于3G,电信可能使用。
7)NETWORK_TYPE_HSDPA -8----联通 46006一种通信协议,建立在WCDMA上,相当于3.5G,联通可能使用。
8)NETWORK_TYPE_LTE -13-移动、联通、电信--4G 对应准4G,各个运营商都可能使用。
139)NETWORK_TYPE_GSM--这个值是隐藏的,值为16,暂时不知道什么卡会出现。
猜想应该是对应GSM标准的最早期制式,没有验证。
10)NETWORK_TYPE_TD_SCDMA -也是隐藏的,值为17,使用移动3G时是这个值。
结论:判断哪个运营商那种网络不应该只根据NetworkType判断。
运营商单独获取,而NetworkType可以进一步知道是2G还是3G。
其他中国不存在的制式就先不判断了。
case NETWORK_TYPE_GPRS: 1 —移动联通case NETWORK_TYPE_EDGE: 2—移动case NETWORK_TYPE_CDMA: 4 -电信case NETWORK_TYPE_1xRTT: 7 -电信case NETWORK_TYPE_IDEN: 11return NETWORK_CLASS_2_G;case NETWORK_TYPE_UMTS: 3 -联通WCDMA 46006case NETWORK_TYPE_EVDO_0: 5 -电信case NETWORK_TYPE_EVDO_A: 6 -电信case NETWORK_TYPE_HSDPA: 8-联通 46006case NETWORK_TYPE_HSUPA: 9case NETWORK_TYPE_HSPA: 10case NETWORK_TYPE_EVDO_B: 12 -电信case NETWORK_TYPE_EHRPD: 14case NETWORK_TYPE_HSPAP: 15return NETWORK_CLASS_3_G;case NETWORK_TYPE_LTE: 13 —移动、联通、电信--4Greturn NETWORK_CLASS_4_G;default:return NETWORK_CLASS_UNKNOWN;--------------------Added in API level 1---------------------public static final int NETWORK_TYPE_UNKNOWNNetwork type is unknownConstant Value: 0(0x00000000)(不知道网络类型)public static final int NETWORK_TYPE_GPRSCurrent network is GPRSConstant Value: 1(0x00000001)(2.5G)移动和联通public static final int NETWORK_TYPE_EDGECurrent network is EDGEConstant Value: 2(0x00000002)(2.75G)2.5G到3G的过渡移动和联通public static final int NETWORK_TYPE_UMTSCurrent network is UMTSConstant Value: 3(0x00000003)(3G)联通-----------------Added in API level 4---------------------public static final int NETWORK_TYPE_CDMACurrent network is CDMA: Either IS95A or IS95BConstant Value: 4(0x00000004)(2G 电信)public static final int NETWORK_TYPE_EVDO_0Current network is EVDO revision 0Constant Value: 5(0x00000005)( 3G )电信public static final int NETWORK_TYPE_EVDO_ACurrent network is EVDO revision AConstant Value: 6(0x00000006)(3.5G) 属于3G过渡public static final int NETWORK_TYPE_1xRTTCurrent network is 1xRTTConstant Value: 7(0x00000007)( 2G )---------------------Added in API level 5--------------------public static final int NETWORK_TYPE_HSDPACurrent network is HSDPAConstant Value: 8(0x00000008)(3.5G )public static final int NETWORK_TYPE_HSUPACurrent network is HSUPAConstant Value: 9(0x00000009)( 3.5G )public static final int NETWORK_TYPE_HSPACurrent network is HSPAConstant Value: 10(0x0000000a)( 3G )联通--------------------------Added in API level 8-------------------------public static final int NETWORK_TYPE_IDENCurrent network is iDenConstant Value: 11(0x0000000b)(2G )--------------------------Added in API level 9-------------------------public static final int NETWORK_TYPE_EVDO_BCurrent network is EVDO revision BConstant Value: 12(0x0000000c)3G-3.5G--------------------------Added in API level 11------------------------public static final int NETWORK_TYPE_LTECurrent network is LTEConstant Value: 13(0x0000000d)(4G)public static final int NETWORK_TYPE_EHRPDCurrent network is eHRPDConstant Value: 14(0x0000000e)3G(3G到4G的升级产物)--------------------------Added in API level13---------------------------public static final int NETWORK_TYPE_HSPAPCurrent network is HSPA+Constant Value: 15(0x0000000f)( 3G )。