Android LTE信号ASU电平始终为97

Android LTE信号ASU电平始终为97,android,signal-strength,cellinfo,Android,Signal Strength,Cellinfo,我使用以下代码捕获LTE信号的RSSI值: cInfoList = telephony_manager.getAllCellInfo() for (CellInfo info : cInfoList){ if (info instanceof CellInfoLte) { CellSignalStrengthLte signalstrength_lte = ((CellInfoLte) info).getCellSignalStrength(); disp

我使用以下代码捕获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循环不会覆盖文本字段。)

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

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

在三星手机的设置->关于手机->状态->信号强度中,我看到了-107dBm 33 asu(这很有意义)

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


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

S6似乎将损坏的信号级别值放入其CellInfoLte对象中(并在其CellInfoCdma对象中取消设置级别)。是一个应用程序,它使用反射来转储过多的信号电平相关数据。在我的S6上,我可以看到SignalStrength(它是PhoneStateListener.onSignalStrengthChanged回调的参数)包含外观正常的mCdmaDbm/mLteRsrp值。创建TelephonyManager侦听器显然不太方便,而且可能会增加开销,但看起来这就是它在这个设备上的作用:-/