Android如何获得SNR(信噪比)

前端之家收集整理的这篇文章主要介绍了Android如何获得SNR(信噪比)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有人知道如何以编程方式获得 Android手机中的LTE / WCDMA信号的SNR或信噪比. SNR可以从三星机型的密码*#0011#中查看,但在其他手机(如Nexus 5)中则无法查看.我在想是否没有实际的API,可能是现有API的计算?

我知道您可以使用SignalStrength API获取有关信号的详细信息,但我已经解析了我看到的部分,似乎无法找到任何SNR读数.

非常感谢任何帮助或建议!

谢谢!

附加信息:

我应该补充说,我已经从这个线程[链接] How to get LTE signal strength in Android?修补了信号强度,所以这是我的问题的起点.

我的结果如下:

LteSignalStrength – >根据位置在15-30左右波动,不知道这是什么..

LteRsrp – >显示dBm,我想这就是手机如何确定信号质量(大致无论如何).

LteRsrq – >显示-7到-11,不确定

LteRSSnr – >由于某种原因总是300,不明白为什么……

LteCqi – >渠道质量指标?一些巨大的数字似乎是最大的32位整数值,不确定

有没有办法从这个API获得SNR,或者我在大海捞针中寻找一个不存在的针?

三星GalaxyNote2的屏幕截图,SNR读取*#0011#密码:

解决方法

我从2014年8月开始密集研究这个问题.
首先,我希望您熟悉一些电信知识和Android开源项目(AOSP).那么,根据我的研究,我说:

>通过查看AOSP内部本机类,似乎Android通过在调制解调器上通过AT CSQ命令(请检查AOSP本机类reference-ril.c)分配返回值来提供SignalStrength值.而且只有它.问题是该命令仅提供与块错误率(BLER)相关的信号质量,并且不通知任何有关其他输入信号的信息;在LTE调制解调器中,某些设备似乎没问题,但是当你改用UMTS网络时,事情变得不清楚/不一致;
>您可以通过使用来自其他小区或AT CGREG和AT的接收信号强度的电信公式(相关RSSI,RSCP,EcNo等等)的一些推导来计算传入干扰(SNR和其他) CREG(再次,请检查reference-ril.c类).
>我挖掘了所有AOSP内部类,跟踪和绘制与电话相关的方法调用.我从SDK层(我们使用TelephonyManager和PhoneStateListener API类)看到了所有内容,直到用c / c编写的本机无线电接口层类.在任何时候我都发现了一个真正基于其他小区的SNQ计算,但只作为从AT CSQ调制解调器获得的值传递(此命令仅提供信号质量和BLER).这对我来说听起来很奇怪,因为干扰是用其他接收信号计算的值,包括那些不是来自GSM的信号.所以,对我来说,从Android API获得的传入SNR有点蹩脚或不完整.

基于以上所述,我认为:

>谷歌不是3GPP.而且3GPP不是谷歌. Android是一个庞大而复杂的项目,拥有超过1200万行代码. Android和电信之间可能会错过通信/理论信息,这是非常合理的;
>特别是我正在搜索CQI,我怀疑CQI在LQR(链路质量报告)的上下文中,在L2 PPP(点对点协议)中计算;
>这个主题主题确实存在问题.没有圣杯,因为不同的设备拥有不同的(可能是封闭的)硬件驱动程序.我们需要为每个不同的设备支持不同的软件.也许,如果您需要为所有设备提供正确的值,则需要为每个设备重新编译整个Android ROM.

我希望它能给你带来一些启示.如果您有任何其他信息,请在此处分享.

猜你在找的Android相关文章