gpt4 book ai didi

android - CDMA 设备的信号强度范围(以 dbm 为单位)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:06 29 4
gpt4 key购买 nike

我正在检查 CDMA 设备的信号强度。任何人都可以指定 signalStrength.getCdmaDbm() 返回的范围吗?最低是 -120,但对于完整的信号强度,该值是多少?我得到的最高值是 -52。

最佳答案

好吧,我不确定这是否是您正在寻找的内容,但在查看 android 源代码中的 SignalStrength.java 文件后,我注意到一些代码具有 cdma dbm 和 ecio 级别的一堆级别。

DBM 
level 4 >= -75
level 3 >= -85
level 2 >= -95
level 1 >= -100

Ecio
level 4 >= -90
level 3 >= -110
level 2 >= -130
level 1 >= -150

level是两者中最低的

actualLevel = (levelDbm < levelEcio) ? levelDbm : levelEcio;

但我注意到这与通知中显示的实际栏不相关。如果在 3G 中,则忽略此级别并使用信噪比。

signalStrength.getEvdoSnr() // value is 0 to 8 so divide by two to get the bars

如果数据从 3G 下降到 1x,则使用 actualLevel。

这是我用来查找显示柱数的代码。

   public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
if (signalStrength.isGsm()) {
if (signalStrength.getGsmSignalStrength() != 99)
signalStrengthValue = signalStrength.getGsmSignalStrength() * 2 - 113;
else
signalStrengthValue = signalStrength.getGsmSignalStrength();
} else {
final int snr = signalStrength.getEvdoSnr();
final int cdmaDbm = signalStrength.getCdmaDbm();
final int cdmaEcio = signalStrength.getCdmaEcio();
int levelDbm;
int levelEcio;
int level = 0;

if (snr == -1) {
if (cdmaDbm >= -75) levelDbm = 4;
else if (cdmaDbm >= -85) levelDbm = 3;
else if (cdmaDbm >= -95) levelDbm = 2;
else if (cdmaDbm >= -100) levelDbm = 1;
else levelDbm = 0;

// Ec/Io are in dB*10
if (cdmaEcio >= -90) levelEcio = 4;
else if (cdmaEcio >= -110) levelEcio = 3;
else if (cdmaEcio >= -130) levelEcio = 2;
else if (cdmaEcio >= -150) levelEcio = 1;
else levelEcio = 0;

level = (levelDbm < levelEcio) ? levelDbm : levelEcio;
} else {
if (snr == 7 || snr == 8) level =4;
else if (snr == 5 || snr == 6 ) level =3;
else if (snr == 3 || snr == 4) level = 2;
else if (snr ==1 || snr ==2) level =1;

}

text.setText("Bars= " + level);


}
}

在下面的创建方法中使用它,并确保 list 使用 READ_PHONE_STATE。

    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
AndroidPhoneStateListener phoneStateListener = new AndroidPhoneStateListener(text);
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);

关于android - CDMA 设备的信号强度范围(以 dbm 为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9464671/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com