我正在检查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
而水平是两者中最低的
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); } }
在on创建方法中使用以下,并确保清单使用READ_PHONE_STATE.
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); AndroidPhonestateListener phonestateListener = new AndroidPhonestateListener(text); telephonyManager.listen(phonestateListener,PhonestateListener.LISTEN_SIGNAL_STRENGTHS);
原文地址:https://www.jb51.cc/android/310915.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。