10
CDMAデバイスの信号強度を確認しています。誰でも範囲signalStrength.getCdmaDbm()
を返すことができますを返す?最低値は-120ですが、完全な信号強度の値は何ですか?私が得た最高は-52です。CDMAデバイスのdbmにおけるsignalStrengthの範囲
CDMAデバイスの信号強度を確認しています。誰でも範囲signalStrength.getCdmaDbm()
を返すことができますを返す?最低値は-120ですが、完全な信号強度の値は何ですか?私が得た最高は-52です。CDMAデバイスのdbmにおけるsignalStrengthの範囲
これはあなたが探しているものかどうかわかりませんが、アンドロイドソースの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
とレベル2
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);
}
}
オンの作成方法でこれを使用し、マニフェストがREAD_PHONE_STATEを使用していることを確認してください。
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
AndroidPhoneStateListener phoneStateListener = new AndroidPhoneStateListener(text);
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
電話機がGSMの場合はどうなりますか?変数 "signalStrengthValue"はdBm値です。 ECIO値の計算方法は? – MCGBra