1

ユーザーが一定時間 (たとえば 5 分間) 受信状態が低い (ネットワーク信号が低い) 場所にいる状況を検出したいのですが、どの値を使用すればよいか悩んでいます。

私が今持っているものは次のとおりです。

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()
        }

    }
}

dbm 値を見ると、ほとんどの場合85のように見えますが、これは良好な受信を意味し、受信の低い場所に行くと負の値になります。この回答から、dbm の負の値は受信が低いことを意味することがわかりましたが、負ではなく、デバイスが非常に敏感であることを意味します。(答えの表を参照してください)。

また、dbm の値はデバイスによって異なるようです。

を見ると、signalStrength.getLevel()受付バーがいくつあるかがわかります。これは良い選択肢のようです。

そのことを念頭に置いて、は多くの値を持つクラスであり、低信号一定時間テストし、人々がこれを経験しているかどうかを確認するSignalStrengthための最も信頼できる方法は何だろうと思っていました.

4

1 に答える 1