Android手机得到信号强度信息

Android手机得到信号强度信息

本文档讲述如何使用通过Android系统来得到手机信号强度等信息

背景介绍

公司的主题业务是对通信基站的研发,我需要研发一款软件来配合基站的测试工作。通过Android手机连接至基站后,采集手机上的各种和信号强度相关的信息,然后进行分析这些数据,通过分析数据完成对基站的测试

相关调研

需要测试的参数主要是: -RSRP -RSSI -RSRQ -SNR -Signal Strength 在这里,我对这些参数不做解释,有需求的自行百度。

查找源码

因为市面上的Android 应用很少是做对信号强度的测试,所以我们直接去看Google提供的SDK来去查找如何可以实现我们的需求。 我们在SDK中查找到了SignalStrength这个类,在SignalStrength类中有和信号强度的信息,我将类的详情进行截图:

但是我们仍然没有看到RSSI、RSRP、RSRQ等信息。我又找遍了各个可能和信号强度有关的类,,但是就是找不到,所以我去查看了SignalStrength这个类的源代码。通过查找源代码后,我发现了这里面的奥秘。(我最常用查看Android源码的网站是grepcode.com,这个里面的源代码按照Android版本列出,非常不错)

我先放上SignalStrength.java的截图,再解释里面的奥秘。 这是类的参数图:

我们惊奇的发现这里面有我们需要的变量,然后发现去查找相应的get函数,发现

其实在SignalStrength这个类里面,已经有了可以get这些参数的方法,但是不知什么原因Google把他们隐藏了起来。那么我们如何得到这些值呢? 是使用toString()方法:

虽然SignalStrength类并没有为我们提供get信息的接口,但是我们通过toString方法可以得到将这些参解析出来。

代码实现

我们知道了使用SignalStrength类的toString方法可以将我们需要的参数取出来,那么我们如何使用SignalStrength类呢?我贴出我的代码以供参考:

TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); PhoneStateListener MyPhoneListener = new PhoneStateListener() {(SignalStrength signalStrength) {String singalInformation = signalStrength.toString();}};tm.listen(MyPhoneListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

其中在这里面我们得到的singalInformation变量就是一个包含信号信息的字符串,我们再自行解析就能得到我们所需的参数。

总结

这篇文章主要是讲述如何得到Android手机中和手机信号强度,我们通过查找Android的源代码进而得到了这些信号强度。

其实,每个人都是幸福的。只是,你的幸福,常常在别人眼里。

Android手机得到信号强度信息

相关文章:

你感兴趣的文章:

标签云: