android 擷取手機GSM/CDMA訊號資訊,並獲得基站資訊的方法_Android

來源:互聯網
上載者:User

在Android中我們常用的輕鬆擷取WIFI訊號列表,那如何擷取CDMA或者GSM的手機訊號呢?

系統提供了TelephonyManager類,此類非常豐富,基本你所需要的手機資訊都能擷取到,那下面就來看看我們所需要的CDMA與GSM訊號是如何擷取的吧。

private TelephonyManager telephonyManager;
private PhoneStateListener phoneStateListener;

首先聲明兩個變數

在onCreate()方法中初始設定變數

InitPhoneStateListener();telephonyManager = (TelephonyManager) this.ctx.getSystemService(Context.TELEPHONY_SERVICE);telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CELL_LOCATION);if(telephonyManager.getCellLocation()!=null){//擷取當前基站資訊phoneStateListener.onCellLocationChanged(telephonyManager.getCellLocation());}/** 初始化PhoneStateListener */private void InitPhoneStateListener() {phoneStateListener = new PhoneStateListener() {@Overridepublic void onCellLocationChanged(CellLocation location) {// TODO Auto-generated method stubif (location instanceof GsmCellLocation) {// gsm網路phoneType = 1;GsmCell gsmCell = new GsmCell();gsmCell.lac = ((GsmCellLocation) location).getLac();gsmCell.cid = ((GsmCellLocation) location).getCid();/** 擷取mcc,mnc */String mccMnc=telephonyManager.getNetworkOperator();if(mccMnc!=null&&mccMnc.length()>=5){gsmCell.mcc = mccMnc.substring(0, 3);gsmCell.mnc = mccMnc.substring(3, 5);}gsmCell.signal=lastSignal;gsmCell.time = System.currentTimeMillis();if (gsmCell.lac != -1 && gsmCell.cid != -1) {gsmCells.add(0, gsmCell);// Collections.sort(gsmCells);// /**最多儲存近3個基站資訊*/// if (gsmCells.size() >3)// gsmCells.remove(3);}//擷取相鄰基站資訊List neighboringList=telephonyManager.getNeighboringCellInfo();for(NeighboringCellInfo ni:neighboringList){GsmCell gb = new GsmCell();gb.mnc=mccMnc.substring(3, 5);gb.lac=ni.getLac();gb.cid=ni.getCid();gb.signal=-133+2*ni.getRssi();gb.time=System.currentTimeMillis();gsmCells.add(gb);}} else {// 其他CDMA等網路try {Class cdmaClass = Class.forName("android.telephony.cdma.CdmaCellLocation");phoneType = 2;CdmaCellLocation cdma = (CdmaCellLocation) location;CdmaCell cdmaCell = new CdmaCell();cdmaCell.stationId = cdma.getBaseStationId() >= 0 ?cdma.getBaseStationId(): cdmaCell.stationId;cdmaCell.networkId = cdma.getNetworkId() >= 0 ? cdma.getNetworkId() : cdmaCell.networkId;cdmaCell.systemId = cdma.getSystemId() >= 0 ? cdma.getSystemId() : cdmaCell.systemId;/** 擷取mcc,mnc */String mccMnc=telephonyManager.getNetworkOperator();if(mccMnc!=null&&mccMnc.length()>=5){cdmaCell.mcc = mccMnc.substring(0, 3);cdmaCell.mnc = mccMnc.substring(3, 5);}cdmaCell.signal=lastSignal;cdmaCell.time = System.currentTimeMillis();int lat = cdma.getBaseStationLatitude();int lon = cdma.getBaseStationLongitude();if (lat <Integer.MAX_VALUE&& lon <Integer.MAX_VALUE) {cdmaCell.lat = lat;cdmaCell.lon = lon;}if (cdmaCell.stationId != -1&& cdmaCell.networkId != -1&& cdmaCell.systemId != -1) {cdmaCells.add(0, cdmaCell);}List neighboringList=telephonyManager.getNeighboringCellInfo();for(NeighboringCellInfo ni:neighboringList){CdmaCell cdmaBean = new CdmaCell();cdmaBean.systemId=cdmaCell.systemId;cdmaBean.lac=ni.getLac();cdmaBean.cellid=ni.getCid();cdmaBean.signal=-113+2*ni.getRssi();cdmaCells.add(cdmaBean);}} catch (ClassNotFoundException classnotfoundexception) {}}// end CDMA網路super.onCellLocationChanged(location);}// end onCellLocationChanged@Overridepublic void onServiceStateChanged(ServiceState serviceState) {// TODO Auto-generated method stubsuper.onServiceStateChanged(serviceState);}@Overridepublic void onSignalStrengthsChanged(SignalStrength signalStrength) {// TODO Auto-generated method stubint asu=signalStrength.getGsmSignalStrength();lastSignal=-113+2*asu; //訊號強度super.onSignalStrengthsChanged(signalStrength);}};}// end InitPhoneStateListener

以上就是小編為大家帶來的android 擷取手機GSM/CDMA訊號資訊,並獲得基站資訊的方法全部內容了,希望大家多多支援雲棲社區~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.