0

Android デバイスの信号強度の変化を傍受する必要があります。StackOverflow でさまざまなアプローチを見てきました。私の場合、これらの変更を見つけようとしているのは Android バックグラウンド サービスです。ただし、何が間違っているのかわかりませんが、変更が傍受されていないようで、電話を別の金属製の箱に入れて、機能するかどうかを確認しました. 設定に移動して値を見ると、OS がこれらの遷移を認識しているように見えます。

public class SignalStateListener extends PhoneStateListener{

    private int signalStrength;

    public SignalStateListener (int signalStrength){
        this.signalStrength = signalStrength;
    }
    @Override
    public void onSignalStrengthChanged(int asu){
        Log.e(TAG, "[[[[[Signal strength changed]]]]]]");
        this.signalStrength = asu;
    }


    public int getSNR(){
        return this.signalStrength;
    }

}


    //in onCreate()
    tm = (TelephonyManager) getSystemService (Context.TELEPHONY_SERVICE);
    listener = new SignalStateListener(0);      
tm.listen(listener, PhoneStateListener.LISTEN_SIGNAL_STRENGTH);


private TelephonyManager tm = null;
private SignalStateListener listener = null;
4

1 に答える 1

2

私は同じ種類の問題を抱えていました.しばらくすると、リスニングが落ちたように見えました. これを解決するために、リッスンの呼び出しを 30 分ごとに繰り返すタイマーを作成しました。リッスン要求を含むサービス内の TimerTask クラスを呼び出すタイマーを作成し、X ミリ秒ごとに TimerTask クラスのタイマー呼び出しを行います。それは私のために働いた。

于 2011-08-31T07:16:00.430 に答える