android 获取手机GSMCDMA信号信息,并获得基站信息的方法

android 获取手机GSMCDMA信号信息,并获得基站信息的方法,第1张

概述在Android中我们常用的轻松获取WIFI信号列表,那如何获取CDMA或者GSM的手机信号呢?

在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信号信息,并获得基站信息的方法全部内容了,希望大家多多支持编程小技巧~

总结

以上是内存溢出为你收集整理的android 获取手机GSM/CDMA信号信息,并获得基站信息的方法全部内容,希望文章能够帮你解决android 获取手机GSM/CDMA信号信息,并获得基站信息的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存