2014-01-29 54 views
0

我希望從服務很長一段時間(3-4小時)每隔3分鐘接收一次gps數據。 這一切工作正常,但我有一些問題,哪種方法是最好的電池壽命。Android:通過固定Intervall從服務獲取GPS位置

  1. 啓動服務,在onCreate裏面創建一個局部喚醒鎖,啓動一個每3分鐘執行一次的定時器。從定時器內獲取位置數據。當服務停止時(3-4小時後)釋放喚醒鎖。

  2. 使用AlarmManager每3分鐘啓動一次服務。在服務內部創建一個部分喚醒鎖,獲取位置數據,然後釋放喚醒鎖並停止服務。

  3. 與#1相同,但不是定時器通過requestLocationUpdates()方法設置intervall。 (之所以我不喜歡這種方法,是因爲當我使用計時器時,我可以得到5個位置(每3分鐘)並選擇最準確的,但是當我使用requestLocationUpdates()設置intervall時,我只獲得一個位置,所以我認爲,#2可能是一個更好的解決方案,這可能是不準確的,還是我錯了?)

我不喜歡留下部分激活鎖定爲3-4小時的想法那。

回答

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