2017-09-22 4 views
1

サーバーにデータを送信するために、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

これをループすると結果が得られます。

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

      //your code to verify the signal strength 

      } 
     }, delay); 
関連する問題