0

我需要拦截安卓设备上信号强度的变化。我在 StackOverflow 中看到了不同的方法。就我而言,它是一个试图找到这些变化的 Android 后台服务。但是,我看不出我做错了什么,但看起来更改没有被拦截,我已经将手机放在不同的金属盒中,看看它是否有效。通过转到设置并查看那里的值,操作系统似乎知道这些转换。

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

我遇到了同样的问题:一段时间后,听力似乎下降了。为了解决这个问题,我创建了一个 Timer,它每 30 分钟重复一次监听调用:创建一个 Timer,在包含监听请求的服务内调用 TimerTask 类,并每隔 X 毫秒对 TimerTask 类进行 Timer 调用。这对我有用。

于 2011-08-31T07:16:00.430 回答