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