2016-01-04 4 views
2

Я вычислил скорость транспортного средства и сравнил эту скорость с определенным пороговым значением, то есть скоростью < = 3. Теперь проблема заключается в вычислении времени ожидания. Я пытаюсь вычислить время ожидания для автомобиля, если автомобиль остается более двух минут, чем это общее время после ожидания более двух минут, будет добавлено к времени ожидания. Я использовал обработчик и выполнил внутри onLocationchanged() , но мой расчет времени случайный. разные обработчики и runnable работают в то время, и время быстрее, чем определено.Невозможно разместить обработчик и запустить внутри OnLocationChanged()

@Override 
public void onLocationChanged(Location location) { 
    diaplayViews(); 


    timeGpsUpdate = location.getTime(); 
    float delta = (timeGpsUpdate - timeOld)/1000; 


    if (location.getAccuracy() <100) { 

     distance += locationOld.distanceTo(location); 


     Log.e("location:", location + ""); 




     speed = (long) (distance/delta); 


     if(speed<=3) 

     { 
      if(runable==null) 
      { 


      runnable = new Runnable() { 

       public void run() { 
        waitingTime++; 
        updateHandler.postDelayed(this, 10000); // determines the execution interval waiting time addition on every 10 seconds after 2 minutes initially 

       } 

      };} 

      updateHandler.postDelayed(runnable, 60*2*1000); // acts like the initial delay 
     } 
     else { 
      handler.removeCallbacks(runable); 

      runable=null; 
     } 

     locationOld = location; 
     timeOld = timeGpsUpdate; 
     diaplayViews(); 

    } 

} 

ответ

3

использовать, если (location.getspeed() == 0,0) и обработчик работать на каждые 10 секунд и добавьте две минуты (2 * 60), первоначально и другое время продолжают добавив, что время, т.е. через 10 секунд, и, наконец, разделить его на 60. вы получите лучший способ заключается в использовании услуг, которые будут управлять программка в фоновом режиме и использовать BroadcastReceiver для уведомления пользователя или для отображения результатов в пользовательском интерфейсе .. http://developer.android.com/guide/components/services.html и для вещательного приемника http://developer.android.com/reference/android/content/BroadcastReceiver.html