ユーザーが受信時間の短い場所(ネットワーク信号が低い場所)に時間(たとえば5分)がある状況を検出したいと思っています。頼りにする価値。私が今持っている何アンドロイド - 依存する値が低いネットワーク信号を検出する
は次のとおりです。
DBM値を見てみるとpublic class RadiationTest {
TelephonyManager TelephonManager;
SignalStrengthListener signallistener;
private Context context;
public RadiationTest(Context context) {
this.context = context;
try {
signallistener = new SignalStrengthListener();
TelephonManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
TelephonManager.listen(signallistener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
} catch (Exception ex) {
ex.printStackTrace();
}
}
class SignalStrengthListener extends PhoneStateListener {
@Override
public void onSignalStrengthsChanged(android.telephony.SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int SignalStrength_ASU = signalStrength.getGsmSignalStrength();
int SignalStrength_dBm = (2 * SignalStrength_ASU) - 113; // -> dBm
// here I can use dbm
// I can also get the bars with signalStrength.getLevel()
}
}
}
- それはほとんどの時間そのようです - 良好な受信を意味し、低受信と場所に行くとき、その得点負の値。 this答え私はdbmの負の値が受信が低いことを意味することを学びましたが、それは負ではなく、単にあなたのデバイスが非常に敏感であることを意味します。 (答えの表を参照)。
また、dbm値はデバイスごとに変化するようです。
signalStrength.getLevel()
を見ると、いくつのレセプションバーがあるかがわかり、良い選択肢のようです。念頭に置いて
、SignalStrength
は、値の多くのクラスである、と私はちょうどため低信号のための時間のいくつかの量をテストするために、人々が持っているかどうかを確認するために、最も信頼性の高い方法であると思いましてこれに関するいくつかの経験。