我知道您可以使用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如何获得SNR(信噪比)全部内容,希望文章能够帮你解决Android如何获得SNR(信噪比)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)