检查信号强度移动及时



我需要每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);

最新更新