android 获取手机GSM/CDMA信号信息,并获得基站信息的方法
程序员文章站
2024-03-03 21:09:34
在android中我们常用的轻松获取wifi信号列表,那如何获取cdma或者gsm的手机信号呢?
系统提供了telephonymanager类,此类非常丰富,基本你所需要...
在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() { @override public void oncelllocationchanged(celllocation location) { // todo auto-generated method stub if (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 @override public void onservicestatechanged(servicestate servicestate) { // todo auto-generated method stub super.onservicestatechanged(servicestate); } @override public void onsignalstrengthschanged(signalstrength signalstrength) { // todo auto-generated method stub int asu=signalstrength.getgsmsignalstrength(); lastsignal=-113+2*asu; //信号强度 super.onsignalstrengthschanged(signalstrength); } }; }// end initphonestatelistener
以上就是小编为大家带来的android 获取手机gsm/cdma信号信息,并获得基站信息的方法全部内容了,希望大家多多支持~
上一篇: java中输出pdf文件代码分享