Android手机得到信号强度信息

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() {
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
                String singalInformation = signalStrength.toString();
            }
        };
        tm.listen(MyPhoneListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

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

总结

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

时间: 2024-11-06 03:53:17

Android手机得到信号强度信息的相关文章

关于Android的Build类——获取Android手机设备各种信息

经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private String loadSystemInfo() { StringBuilder sb = new StringBuilder(); sb.append("主板:" + Build.BOARD + "\n"); sb.append( "系统启动程序版本号:&q

Android开发之获取手机SIM卡信息

TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设备上的电话服务信息. 应用程序能够使用这个类的方法来确定电话服务和状态,以及訪问某些类型的用户信息.应用程序还能够注冊一个侦听器以接收的电话状态变化通知. 你不能直接实例化这个类;相反,你能够通过Context.getSystemService(Context.TELEPHONY_SERVICE)方

Android - 手机开发调试无法输出logcat信息 - 未解决

参考链接:Android手机在开发调试时logcat不显示输出信息的解决办法 Android:真机调试,不显示logcat的解决规划 Coolpad 8730L 进入手机工厂模式: Dial:   *#9527*# android 手机获取root 打开USB调试选项,使用一键root工具,e.g:客户端 KingRoot 设置logcat level: 出现如下结果1,断开其他android设备或者模拟器,保持一个手机与电脑连接:2,手机rom需要获取root权限 adb shell su P

android 手机去哪儿7.2版本客户端 账号存储信息分析

1.data/data/com.qunar sharepref 文件夹下的Qunarperferences.xml文件中 username,phone等均为加密处理过字段   2.jdgui下查找关键字_phone的函数 3.分析读取sharepref函数及java层加密函数以及调用native 函数.   4.加载对应so,分析导出函数 jni动态注册所绑定的函数. da绑定函数为dumpalso.  5.加载so dumpalso下断触发断点调试跟踪.跟踪函数发现0100ffff为头标志不参

Android_获取手机各种详细信息

TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取相关数据. TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限. 以下列出TelephonyM

android获取周围AP信息

1.增加权限: 由于此应用需要获取手机的网络信息,wifi信息,因此需要在AndroidManifest.xml文件中添加相关权限,否则会报permission deny错误: 1 <uses-permission android:name="android.permission.INTERNET"/> 2 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE">

mac 无法连接android手机进行调试 解决方案

第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType     可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Android: Product ID: 0x2769              Vendor ID: 0x22d9              Version: 2.31              Serial Number: 6e5d48a4              Speed: Up to 480 Mb/sec

修改Android手机内核,绕过反调试

0x1.手机设备环境 Model number: Nexus 5 OS Version: Android 4.4.4 KTU84P Kernel Version: 3.4.0-gd59db4e 0x2.Android内核提取 查找Android设备的boot分区文件.高通芯片的设备可以通过下面的命令进行查找. cd /home/androidcode/AndroidDevlop/modifyNexus5Boot adb shell ls -al /dev/block/platform/msm_s

Android手机使用广播监听手机收到的短信

我们使用的Android手机在收到短信的时候会发出一条系统广播.该条广播中存放着接收到的短信的详细信息.本文将详细介绍如何通过动态注册广播来监听短信. 注册广播有两种方式,一种是动态注册,另一种是静态注册.动态注册,顾名思义就是在程序运行时注册的,需要用到广播的时候就注册,用完即销毁.静态注是在AndroidManifest.xml中注册的,在<application>中使用<receiver>标签注册. 那么如何创建一个监听短信的广播接收器呢,其实只需要新建一个类,让这个类继承B