我需要每10秒检查一次移动信号强度才能将数据发送到服务器。我在sqlite中有一些数据。这10秒消失后,我发送了数据。我有一个听众的服务,以获取信号的更改。当服务启动时,该验证效果很好,但是在整个生命周期中我无法获得信号数据。我的应用程序有一些活动,此服务从一开始就开始。
我如何及时验证服务和我的数据中的信号?
public MyService extends IntentService{
public MyService(){
...
telephonyManager = (TelephonyManager) App.getContext().getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(
new PhoneStateListener(){
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength){
int signalStrengthPercentage = 0;
int gsmSignalStrength = signalStrength.getGsmSignalStrength();
if(signalStrength != null && gsmSignalStrength != 99){
signalStrengthPercentage = (int) ((float) gsmSignalStrength / 31 * 100);
}
signalIsStrength = signalStrengthPercentage >= 50;
Log.e("ERROR", "Percentage: "+signalStrengthPercentage);
}
}, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
}
循环循环,您将获得结果。
long delay = 10000;
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//your code to verify the signal strength
}
}, delay);