android 获取手机GSM/CDMA信号信息,并获得基站信息
本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/
在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
转载于:https://www.cnblogs.com/umlzhang/p/5893073.html
android 获取手机GSM/CDMA信号信息,并获得基站信息相关推荐
- [转]android 获取手机GSM/CDMA信号信息
本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表,那如 ...
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://2402766.blog.51cto.com/2392766/1080837 为了 ...
- android 6.0获取手机imei,android获取手机信息大全,android获取大全,IMEI号,IESI号,...
android获取手机信息大全,android获取大全,IMEI号,IESI号, IMEI号,IESI号,手机型号: [java] view plaincopyprint?private void g ...
- android 获取已安装 错误代码,android获取手机已经安装的app信息
Android获取手机已安装APP(系统/非系统) 效果图 主体代码 private ListView mlistview; private ListpackageInfoList; private ...
- android获取手机sim卡信息,Android获取手机SIM卡运营商信息的方法
本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 ...
- android获取手机和系统版本等信息的代码,Android获取手机的版本号等信息的代码...
本文实例分享了Android获取手机系统版本等信息的方法,供大家参考,具体内容如下: 第一种代码: String phoneInfo = "Product: " + android ...
- android 获取手机运行的进程
今天,简单讲讲如何获取系统运行的进程. ActivityManager.RunningAppProcessInfo类与获取正在运行的应用程序 每一个应用程序都会运行在它独立的进程里,但是为了节省资源或 ...
- android 通过手机号码查询联系人,android获取手机通讯录联系人
android获取手机通讯录联系人信息 private void getPhoneContacts() { ContentResolver resolver = this.getContentReso ...
- 获取手机的总内存和可用的内存信息等
获取手机的总内存和可用的内存信息等(这里所值的手机的总内存指的是Ram内存,可用的内存指的是手机可用的rom内存信息) 思路: "/proc/meminfo"文件记录了androi ...
最新文章
- ftp服务器不能双向传输文件,实现文件双向传输搭建FTP服务器
- 【架构】学习余额宝背后的服务治理架构
- idea 提示接口注释信息
- 洛谷 P1396 营救
- Java动态规划走金字塔_【动态规划基础】数字金字塔
- educoder 使用线程锁(lock)实现线程同步_Java8并发包源码分析:重入锁ReentrantLock和Condition实现原理...
- lamp phpstudy mysql_Phpstudy 搭建服务器教程
- APEX 文件格式学习记录
- Visio设置默认字体大小的方法
- MacOS 打开软件出现 ‘xxx‘ “将对您的电脑造成伤害。 您应该将它移到废纸篓。“的解决方式
- U盘重装系统-非常简单制作方法
- 我对计算机的看法英语作文,我对网络的看法 My Concepts on Internet 英语作文范文...
- 【新更】为笔记奔忙的竹篮打水分享
- java web实现打印功能
- 脑裂产生以及解决办法
- MATLAB输出串口发送所需十六进制数据
- CentOS7安装GmSSL过程记录
- 一步一步的微软Lync 2010综合标准服务器安装指南
- 强化学习2-策略,状态值函数,动作值函数
- 比Tor更匿名:麻省理工大学开发新系统
热门文章
- 用asp.net实现的把本文推荐给好友功能
- 用ASP.NET上传图片并生成带版权信息的缩略图
- ASP.NET结合COM组件发送Email
- 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)
- 二维码Data Matrix的解码实现(zxing-cpp)
- 【Qt】Qt中调用python接口
- 【linux】Valgrind工具集详解(十三):Helgrind(线程错误检测器)
- 电子合同的履行_什么是电子合同履行?怎么履行电子合同?
- mysql 临时列_如何在MySQL中列出临时表列?
- java getitemcount_RecyclerView.Adapter中的getItemCount() 返回数组的size是出现异常?