LTE信号ASU级别始终为97

时间:2016-01-14 21:41:33

标签: android signal-strength cellinfo

我正在使用以下代码捕获LTE信号的RSSI值:

cInfoList = telephony_manager.getAllCellInfo()
for (CellInfo info : cInfoList){
    if (info instanceof CellInfoLte) {
        CellSignalStrengthLte signalstrength_lte = ((CellInfoLte) info).getCellSignalStrength();
        displayAsu.setText(signalstrength_lte.getAsuLevel() + "");
        displayDbm.setText(signalstrength_lte.getDbm() + "");
    }
}

(*注意:我刚刚简化了我的代码:for-loop不会覆盖文本字段。)

在一部手机(LG G4)中我得到了有意义的价值: Asu_level = 32,dbm = -108

但在另一部手机(三星Galaxy S6)中,我收到的值无效: Asu_level = 97,dbm = 1022

在三星手机的设置 - >关于电话 - >状态 - > SignalStrength我看到 -107dBm 33 asu (这是有道理的)

LG G4:Android 5.1,API 22 三星Galaxy S6:Android 5.0.2,API 21

为什么相同的代码在不同的手机上显示不同的行为(Asu级别)?

1 个答案:

答案 0 :(得分:2)

S6似乎在其CellInfoLte对象中放置了已损坏的信号电平值(以及其CellInfoCdma对象中的未设置电平)。 https://github.com/Tombarr/Signal-Strength-Detector是一个使用反射来转储大量信号级相关数据的应用程序。在我的S6上,我可以看到SignalStrength(它是PhoneStateListener.onSignalStrengthsChanged回调的参数)包括看起来很健康的mCdmaDbm / mLteRsrp值。创建一个TelephonyManager监听器显然不那么方便,而且可能是更多的开销,但它看起来就是这个设备需要的东西: - /