Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 不处理PhoneStateListener更改_Android_Telephonymanager - Fatal编程技术网

Android 不处理PhoneStateListener更改

Android 不处理PhoneStateListener更改,android,telephonymanager,Android,Telephonymanager,我需要在安卓设备上截获信号强度的变化。我在StackOverflow中见过不同的方法。在我的例子中,它是一个Android后台服务,试图找到这些变化。然而,我看不出我做错了什么,但看起来变化没有被截获,我把手机放在不同的金属盒子里,看看它是否工作。通过转到设置并查看其中的值,操作系统似乎意识到了这些转换 public class SignalStateListener extends PhoneStateListener{ private int signalStrength;

我需要在安卓设备上截获信号强度的变化。我在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;

我也有同样的问题:过了一段时间,似乎听不见了。为了解决这个问题,我创建了一个计时器,每30分钟重复一次侦听调用:创建一个计时器,在包含侦听请求的服务中调用TimerTask类,并每X毫秒调用一次TimerTask类。这对我很有效。

我按照你的方式解决了问题。我找不到为什么像onCellLocationChanged和OnSignalStrengthChanged这样的方法停止调用