龙岗网站建设推广报价,安装网站模版视频,微信分销商城,怎么发布信息到百度本文转自#xff1a;http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表#xff0c;那如何获取CDMA或者GSM的手机信号呢#xff1f;系统提供了TelephonyManager类#xff0c;此类非常丰富#xff0c;基本你所…本文转自http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表那如何获取CDMA或者GSM的手机信号呢系统提供了TelephonyManager类此类非常丰富基本你所需要的手机信息都能获取到那下面就来看看我们所需要的CDMA与GSM信号是如何获取的吧。 1 private TelephonyManager telephonyManager;2 private PhoneStateListener phoneStateListener;3 首先声明两个变量4 5 6 7 8 在onCreate()方法中初始化变量9 InitPhoneStateListener();10 telephonyManager (TelephonyManager) this.ctx.getSystemService(Context.TELEPHONY_SERVICE);11 telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);12 telephonyManager.listen(phoneStateListener,PhoneStateListener.LISTEN_CELL_LOCATION);13 if(telephonyManager.getCellLocation()!null){14 //获取当前基站信息15 phoneStateListener.onCellLocationChanged(telephonyManager.getCellLocation());16 }17 18 19 20 21 /** 初始化PhoneStateListener */22 private void InitPhoneStateListener() {23 phoneStateListener new PhoneStateListener() {24 Override25 public void onCellLocationChanged(CellLocation location) {26 // TODO Auto-generated method stub27 if (location instanceof GsmCellLocation) {// gsm网络28 phoneType 1;29 GsmCell gsmCell new GsmCell();30 gsmCell.lac ((GsmCellLocation) location).getLac();31 gsmCell.cid ((GsmCellLocation) location).getCid();32 /** 获取mccmnc */33 String mccMnctelephonyManager.getNetworkOperator();34 if(mccMnc!nullmccMnc.length()5){35 gsmCell.mcc mccMnc.substring(0, 3);36 gsmCell.mnc mccMnc.substring(3, 5);37 }38 gsmCell.signallastSignal;39 gsmCell.time System.currentTimeMillis();40 if (gsmCell.lac ! -1 gsmCell.cid ! -1) {41 gsmCells.add(0, gsmCell);42 // Collections.sort(gsmCells);43 // /**最多保存近3个基站信息*/44 // if (gsmCells.size() 3)45 // gsmCells.remove(3);46 }47 //获取相邻基站信息48 List neighboringListtelephonyManager.getNeighboringCellInfo();49 for(NeighboringCellInfo ni:neighboringList){50 GsmCell gb new GsmCell();51 gb.mncmccMnc.substring(3, 5);52 gb.lacni.getLac();53 gb.cidni.getCid();54 gb.signal-1332*ni.getRssi();55 gb.timeSystem.currentTimeMillis();56 gsmCells.add(gb);57 }58 } else {// 其他CDMA等网络59 try {60 Class cdmaClass Class.forName(android.telephony.cdma.CdmaCellLocation);61 phoneType 2;62 CdmaCellLocation cdma (CdmaCellLocation) location;63 CdmaCell cdmaCell new CdmaCell();64 cdmaCell.stationId cdma.getBaseStationId() 0 ?65 cdma.getBaseStationId(): cdmaCell.stationId;66 cdmaCell.networkId cdma.getNetworkId() 0 ? cdma67 .getNetworkId() : cdmaCell.networkId;68 cdmaCell.systemId cdma.getSystemId() 0 ? cdma69 .getSystemId() : cdmaCell.systemId;70 /** 获取mccmnc */71 String mccMnctelephonyManager.getNetworkOperator();72 if(mccMnc!nullmccMnc.length()5){73 cdmaCell.mcc mccMnc.substring(0, 3);74 cdmaCell.mnc mccMnc.substring(3, 5);75 }76 cdmaCell.signallastSignal;77 cdmaCell.time System.currentTimeMillis();78 int lat cdma.getBaseStationLatitude();79 int lon cdma.getBaseStationLongitude();80 if (lat Integer.MAX_VALUE lon Integer.MAX_VALUE) {81 cdmaCell.lat lat;82 cdmaCell.lon lon;83 }84 if (cdmaCell.stationId ! -1 cdmaCell.networkId ! -1 cdmaCell.systemId ! -1) {85 cdmaCells.add(0, cdmaCell);86 }87 List neighboringListtelephonyManager.getNeighboringCellInfo();88 for(NeighboringCellInfo ni:neighboringList){89 CdmaCell cdmaBean new CdmaCell();90 cdmaBean.systemIdcdmaCell.systemId;91 cdmaBean.lacni.getLac();92 cdmaBean.cellidni.getCid();93 cdmaBean.signal-1132*ni.getRssi();94 cdmaCells.add(cdmaBean);95 }96 } catch (ClassNotFoundException classnotfoundexception) {97 }98 }// end CDMA网络99 super.onCellLocationChanged(location);
100 }// end onCellLocationChanged
101
102
103
104
105 Override
106 public void onServiceStateChanged(ServiceState serviceState) {
107 // TODO Auto-generated method stub
108 super.onServiceStateChanged(serviceState);
109 }
110 Override
111 public void onSignalStrengthsChanged(SignalStrength signalStrength) {
112 // TODO Auto-generated method stub
113 int asusignalStrength.getGsmSignalStrength();
114 lastSignal-1132*asu; //信号强度
115 super.onSignalStrengthsChanged(signalStrength);
116 }
117 };
118 }// end InitPhoneStateListener 其实很简单只要写好了监听类一切信号都可以获取得到。这样我们很轻松的就获取到了手机信号及周围基站的信号强度了当然需要的读取手机状态等的权限就在这里不说了。 作者sojexEmail:w.sojexgmail.com 转载于:https://www.cnblogs.com/qingblog/archive/2012/07/19/2598871.html