Установка интервала между каждым исправлением GPS - PullRequest
1 голос
/ 23 апреля 2011

Я пытаюсь установить 5-минутный интервал между каждым исправлением GPS в Android. Мой код выглядит так:

private void startMonitoring() {
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationListener = new LocListener();
    if (locationManager.isProviderEnabled(locationManager.GPS_PROVIDER)){
       startUpdates();
    } else {
      // I open here the preferences to force the user start the GPS
    }
}

private void startUpdates(){
   locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}

public class LocListener implements LocationListener{
     @Override
     public void onLocationChanged(Location loc){
     ...
          locationManager.removeUpdates(locationListener);
          scheduleUpdates();
     }
     ...
 }

 private void scheduleUpdates(){
      // Wait 5 minutes
      handler.sleep(5 * 60 * 1000);
      startUpdates();
 }

 class WaitHandler extends Handler {
      @Override
      public void handleMessage(Message message) {}

      public void sleep (long delayMillis){
           this.removeMessages(0);
           sendMessageDelayed(obtainMessage(0), delayMillis);
      }
  }

Я работал над этим часами, но пока не смог найти хорошего решения. Любая помощь будет оценена,

Большое спасибо,

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Возможно, вам следует использовать аргумент requestLocationUpdate: locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5*60*1000, 0, locationListener);

1 голос
/ 23 апреля 2011

Определите Timer t и обработчик обработчика и запишите это:

t = new Timer();
        t.schedule(new TimerTask(){public void run(){handler.post(new Runnable(){public void run(){
        //your code here
}});}}, int delay, int rep );

delay - это количество миллисекунд до первого запуска, и каждый цикл будет разделяться на повторные миллисекунды (в вашем случаеrep = 1000 * 60 * 5).

...