PhoneStateListener和TelephonyManager具有不同的Asu和dBm值

时间:2016-06-29 15:39:22

标签: android

我需要获得有关我连接的蜂窝网络(GSM或LTE)的一些信息。其中一个信息是信号dBm和ASU级别。

我使用两种方法来获取此信息。一个是设置PhoneStateListener,另一个是通过TelephonyManager获取已注册的手机信息。

以下是代码示例:

 mPhoneStateListener = new PhoneStateListener() {
        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            super.onSignalStrengthsChanged(signalStrength);
            telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);

            System.out.println(signalStrength.toString());
            System.out.println("#################");
            CellInfoWcdma registeredCellInfo = (CellInfoWcdma) getRegisteredCellInfo();
            System.out.println(registeredCellInfo.getCellSignalStrength().toString());
            System.out.println(registeredCellInfo.getCellSignalStrength().getDbm());
            System.out.println(registeredCellInfo.getCellSignalStrength().getAsuLevel());
            System.out.println(registeredCellInfo.getCellSignalStrength().getLevel());


        }
    };

    telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

控制台中打印的输出是:

I/System.out 
mGsmSignalStrength 20
mGsmBitErrorRate 0
mCdmaDbm -120
mCdmaEcio  -160
mEvdoDbm  -120
mEvdoEcio  -1
mEvdoSnr  -1
mLteSignalStrength  99
mLteRsrp  2147483647
mLteRsrq  2147483647
mLteRssnr  2147483647
mLteCqi  2147483647
gsm|lte
I/System.out: #################
I/System.out: CellSignalStrengthWcdma: ss=6 ber=99
I/System.out: -101
I/System.out: 6
I/System.out: 2

进行此措施后,在设置中 - >关于手机 - >国家 - > SIM状态,显示的值 -73 dBm 20 ASU

我相信signalStrength.getGsmSignalStrength()为我提供了ASU级别,因此dBM计算为-113 + (2 * asu)因此它为我提供了设置中显示的-73 dBm

使用TelephonyManager我得到了不同的dBm和ASU值。

那些不一样吗?

0 个答案:

没有答案