Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android運營商和網絡類型分析

android運營商和網絡類型分析

編輯:關於Android編程

一些需求需要獲取運營商和網絡類型,下面對運營商和網絡類型做分析。

先拋出一些廢話的定義:

 

GSM:全球移動通訊系統Global System of Mobile communication就是眾所周知的GSM,是當前應用最為廣泛的移動電話標准。
CDMA:碼分多址(CDMA)是在數字技術的分支--擴頻通信技術上發展起來的一種嶄新而成熟的無線通信技術。
可見,這兩者是技術標准,和網絡類型及制式無關。

 

進入正題。

1.獲取話機類型

這個可以通過方法TelephonyManager#getPhoneType來獲得,下面是返回類型。

 

/**
     * 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,比如移動是46002

TelephonyManager#getSimOperatorName方法獲取運營商名字,比如移動是CMCC

TelephonyManager#getSimCountryIso獲取SIM卡國家,比如中國是cn

TelephonyManager#getSimState獲取SIM卡狀態

 

3.獲取網絡類型

重點來了。

TelephonyManager#getNetworkType方法獲取網絡類型。

想要確切的顯示出手機當前的網絡,比如“聯通3G”,需要的就是這個。

在網上找了一些代碼,看見一些代碼在一些網絡類型後面標明:“移動2G”,我只想說“呵呵”。

原因就是,從單一的網絡類型是無法判斷這點的。

回到正題,開始分析返回值。

 

1)NETWORK_TYPE_GPRS

GPRS是一種制式,相當於2.5G,它獨立於話機類型而存在,雖然移動是GSM話機,聯通是CDMA話機,但是他們都可以有這種制式,

拿移動2G舉例,我所在城市是EDGE網絡。但是在之前,移動和聯通可能有同時使用GPRS的時候,

同時也不排除部分地區移動仍然部署了GPRS的可能性,所以比較不贊同在代碼後面標“移動2G”的這位前輩。

 

2)NETWORK_TYPE_EDGE

EDGE應該算是2.75G。據我所知,聯通好像沒有升級2G網絡到這個制式。而移動當前是在用這個。

 

3)NETWORK_TYPE_UMTS

UMTS定義是一種3G移動電話技術,使用WCDMA作為底層標准,WCDMA向下兼容GSM網絡。

目前中國也就只有聯通了,這個確實可以唯一判斷運營商及其網絡類型。

 

4)NETWORK_TYPE_CDMA

CDMA的定義是一種技術標准,有其2代、2.5代、3代技術。被認為是3代移動技術的首選,包含的標准有

WCDMA、CDMA2000、TD-SCDMA。這裡CDMA指代CDMA2代技術標准的制式,中國電信在用。

 

5)NETWORK_TYPE_1xRTT

在CDMA2000中,通常被認為是2.5G或2.75G,速率只有其他3G的幾分之一,電信可能使用。

 

6)NETWORK_TYPE_EVDO_0、NETWORK_TYPE_EVDO_A、NETWORK_TYPE_EVDO_B

兩者都是CDMA2000標准中的版本,屬於3G,電信可能使用。

 

7)NETWORK_TYPE_HSDPA

一種通信協議,建立在WCDMA上,相當於3.5G,聯通可能使用。

 

8)NETWORK_TYPE_LTE

對應准4G,各個運營商都可能使用。

 

9)NETWORK_TYPE_GSM

這個值是隱藏的,值為16,暫時不知道什麼卡會出現。猜想應該是對應GSM標准的最早期制式,沒有驗證。

 

10)NETWORK_TYPE_TD_SCDMA

也是隱藏的,值為17,使用移動3G時是這個值。

 

結論:判斷哪個運營商那種網絡不應該只根據NetworkType判斷。

運營商單獨獲取,而NetworkType可以進一步知道是2G還是3G。

其他中國不存在的制式就先不判斷了。

 

4.關於android版本兼容

對於android版本低的設備,不包含一些類型的定義,所以最好在自己的類中重新定義這些網絡類型變量


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved