編輯:關於Android編程
一些需求需要獲取運營商和網絡類型,下面對運營商和網絡類型做分析。
先拋出一些廢話的定義:
GSM:全球移動通訊系統Global System of Mobile communication就是眾所周知的GSM,是當前應用最為廣泛的移動電話標准。
CDMA:碼分多址(CDMA)是在數字技術的分支--擴頻通信技術上發展起來的一種嶄新而成熟的無線通信技術。可見,這兩者是技術標准,和網絡類型及制式無關。
進入正題。
這個可以通過方法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相關的東西,平時不常遇到。
TelephonyManager#getSimOperator用於獲取SIM卡運營商ID,比如移動是46002
TelephonyManager#getSimOperatorName方法獲取運營商名字,比如移動是CMCC
TelephonyManager#getSimCountryIso獲取SIM卡國家,比如中國是cn
TelephonyManager#getSimState獲取SIM卡狀態
重點來了。
TelephonyManager#getNetworkType方法獲取網絡類型。
想要確切的顯示出手機當前的網絡,比如“聯通3G”,需要的就是這個。
在網上找了一些代碼,看見一些代碼在一些網絡類型後面標明:“移動2G”,我只想說“呵呵”。
原因就是,從單一的網絡類型是無法判斷這點的。
回到正題,開始分析返回值。
GPRS是一種制式,相當於2.5G,它獨立於話機類型而存在,雖然移動是GSM話機,聯通是CDMA話機,但是他們都可以有這種制式,
拿移動2G舉例,我所在城市是EDGE網絡。但是在之前,移動和聯通可能有同時使用GPRS的時候,
同時也不排除部分地區移動仍然部署了GPRS的可能性,所以比較不贊同在代碼後面標“移動2G”的這位前輩。
EDGE應該算是2.75G。據我所知,聯通好像沒有升級2G網絡到這個制式。而移動當前是在用這個。
UMTS定義是一種3G移動電話技術,使用WCDMA作為底層標准,WCDMA向下兼容GSM網絡。
目前中國也就只有聯通了,這個確實可以唯一判斷運營商及其網絡類型。
CDMA的定義是一種技術標准,有其2代、2.5代、3代技術。被認為是3代移動技術的首選,包含的標准有
WCDMA、CDMA2000、TD-SCDMA。這裡CDMA指代CDMA2代技術標准的制式,中國電信在用。
在CDMA2000中,通常被認為是2.5G或2.75G,速率只有其他3G的幾分之一,電信可能使用。
兩者都是CDMA2000標准中的版本,屬於3G,電信可能使用。
一種通信協議,建立在WCDMA上,相當於3.5G,聯通可能使用。
對應准4G,各個運營商都可能使用。
這個值是隱藏的,值為16,暫時不知道什麼卡會出現。猜想應該是對應GSM標准的最早期制式,沒有驗證。
也是隱藏的,值為17,使用移動3G時是這個值。
結論:判斷哪個運營商那種網絡不應該只根據NetworkType判斷。
運營商單獨獲取,而NetworkType可以進一步知道是2G還是3G。
其他中國不存在的制式就先不判斷了。
對於android版本低的設備,不包含一些類型的定義,所以最好在自己的類中重新定義這些網絡類型變量
Android自帶音頻均衡器MusicFx分析 種種原因,我要簡單分析一個Android中built-in的音頻均衡器MusicFx。重點是它的默認Í
Android中UI特效 android經典開源代碼分享 本文原始網址 作者為23code,歡迎給作者投稿 其它UI相關的網址: https://github.co
一、 JNI基礎介紹JNI is the Java Native Interface. It defines a way for managed code (writte
一、獲取屏幕寬高1、android界面簡單介紹要獲取屏幕寬高,我們可以先從android的界面構成了解 android的界面主要由三部分構成:1、狀態欄 2、標