在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

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

java 接受gsm信息_android 获取手机GSM/CDMA信号信息,并获得基站信息相关推荐

  1. 通过java获取手机信息_android获取手机信息

    玩Android的朋友们进来看看吧! 1.获取手机安装的应用信息(排除系统自带): Java代码: 1 private String getAllApp() { 2 String result = & ...

  2. android开发获取手机,通过ADB获取Android手机信息,获取手机信息

    通过ADB获取Android手机信息,获取手机信息 原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CP ...

  3. 获取手机的总内存和可用的内存信息等

    获取手机的总内存和可用的内存信息等(这里所值的手机的总内存指的是Ram内存,可用的内存指的是手机可用的rom内存信息) 思路: "/proc/meminfo"文件记录了androi ...

  4. 运用delphiXE RTTI在运行时动态获取信息及获取某个TComponent类或TObject类的RttiType信息的案例

    运用delphiXE RTTI在运行时动态获取信息及获取某个TComponent类或TObject类的RttiType信息的案例 一.理解RTTI 先看看官方文档:http://docwiki.emb ...

  5. android 获取手机GSM/CDMA信号信息,并获得基站信息

    本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表,那如 ...

  6. [转]android 获取手机GSM/CDMA信号信息

    本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表,那如 ...

  7. java设备imei号_Android 获取imei号码,获取手机型号和系统版本号

    在AndroidManifest.xml文件中要添加 才有权限 TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEP ...

  8. java 读取手机文件_Android获取手机文件夹及文件列表的方法

    先看看效果图: package wuwang.tools.utils; import java.io.File; import java.io.FileInputStream; import java ...

  9. java获取手机通讯录权限_android获取手机通讯录

    1:androidmanifest.xml的内容 package="cn.itcast.contacts" android:versionCode="1" an ...

  10. android pak文件_Android 获取手机中已安装apk文件信息

    通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManager(); ...

最新文章

  1. 【Mysql】MySQL与Oracle的大小写问题
  2. 密码学:RSA加密算法详解
  3. android中绘图Paint.setAntiAlias()和Paint.setDither()方法的作用
  4. 对于(不是特别不合理)的指摘、的对应方式(学会调整,不要一根筋)
  5. 获取父节点下的子节点 --- 递归
  6. 负载均衡之LVS详解
  7. 【模型 5.0】幸福sharp模型之专注:上一次的巅峰体验是什么时候?
  8. U盘做成系统盘后如何恢复成普通U盘?
  9. Win7系统怎么开启远程桌面?Win7远程桌面怎么用
  10. 去掉office标题前的黑点
  11. 关于DRM、ChinaDRM与寰宇信任DTA:数字内容版权保护产业本土化之路
  12. 毕业了,开始新的生活!
  13. 微信支付 postman_微信刷脸支付补贴政策有哪些?
  14. 转载为什么USART的RX和TX和SPI的MISO、MOSI都被配置成推挽输出,他们还能正常工作
  15. MySQL子查询(嵌套查询)
  16. ORB-SLAM2跑TUM RGBD数据集时灰屏卡住
  17. (二)Linux ALSA 音频系统:逻辑设备篇
  18. MySQL--表的创建以及数据类型
  19. Mac下手动备份Mysql数据库
  20. Grafana3.1.0的使用

热门文章

  1. caffe for Windows下的编译错误
  2. 四大门户金融业务接连中招,流量这把钥匙正被氧化
  3. f2fs系列之五:冷热数据分离
  4. Linux下安装whl文件
  5. (赵强老师原创)搭建CDH实验环境,三个节点的安装配置
  6. Android listview实现单选变化的效果
  7. Linux 设置时区 命令
  8. 团队项目第一阶段站立会议01
  9. ASIHTTPRequest
  10. 祝各位朋友元旦快乐,新年大发!!!