及时检查信号强度

时间:2017-09-22 13:26:23

标签: android service

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

1 个答案:

答案 0 :(得分:0)

循环播放,你会得到结果。

 long delay = 10000;
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {

            //your code to verify the signal strength

            }
        }, delay);