2014-01-29 1 views
0

Я хочу получать данные gps, как каждые 3 минуты от службы в течение длительного времени (3-4 часа). Все работает отлично, но у меня есть некоторые вопросы, на которые лучше всего подходит время работы от батареи.Android: получить GPS-местоположение из службы в фиксированной интервал

  1. Запустите службу, внутри OnCreate службы создают Блокировка частичного включения, запустить таймер, который выполняется каждые 3 минуты. Получить данные позиции из таймера. Когда услуга остановлена ​​(через 3-4 часа) отпустите блокировку слежения.

  2. Используйте AlarmManager для запуска службы каждые 3 минуты. Внутри службы создайте частичный wakelock, получите данные о местоположении и затем отпустите блокировку слежения и остановите службу.

  3. То же, что и # 1, но вместо таймера устанавливают интервал через метод requestLocationUpdates(). (Причина, по которой мне не нравится этот метод, заключается в том, что когда я использую таймер, я могу получить 5 позиций (каждые 3 минуты) и выбирать наиболее точные, но когда я устанавливаю интервал с requestLocationUpdates(), я получаю только одну позицию, которые могут быть неточными, или я ошибаюсь?)

мне не нравится идея оставив Блокировка частичного включения в течение 3-4 часов, вот почему я думаю, что # 2 может быть лучшим решением.

ответ

5
// The minimum distance to change Updates in meters 
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters 
// The minimum time between updates in milliseconds 
private static final long MIN_TIME_BW_UPDATES = 1000; // 1 sec 
LocationManager locationManager; 
locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
             MIN_TIME_BW_UPDATES, 
             MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
+0

AFAIK мин времени между обновлениями лишь намек, который может или не может быть implemente d для данного устройства. – Stefan

Смежные вопросы