2012-11-25 83 views
4

我正在創建一個應用程序(用於教育目的),它每隔30分鐘記錄用戶的位置,並使用戶能夠查看地圖上的所有位置。我不希望更新比30分鐘更頻繁,但它們是。requestLocationUpdates minTime參數目的

這是我怎麼稱呼requestLocationUpdates

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30 * 60 * 1000, 0, pe); 

現在,文件明確表示:

位置更新之間的時間絕不會低於minTime

但我在這裏看到了一些不同的答案(例如This answer)。

看起來好像我從GPS獲得更新。 GPS圖標永遠不會關閉,並且更新速率會大於1次更新/秒。所以,我有2個問題在這裏:

  1. minTime參數不符合其目的,甚至還不如一個提示(是的,一個提示到30分鐘更新率導致超過更新第二...)。那麼它做了什麼?
  2. 有沒有其他方法可以做到這一點?我不希望GPS始終處於啓用狀態,因爲它會消耗我的電池太快。也許我可以安排每30分鐘重複的鬧鈴,並撥打requestSingleUpdate

回答

5

的minTime參數不符合其目的,甚至還不如一個提示(是的,一個提示到30分鐘更新率導致超過更新第二...)。那麼它做了什麼?

從Jellybean起,設備必須遵守minTime參數,因此它有一個目的(現在)。

有沒有其他辦法可以做到這一點?我不希望GPS始終處於啓用狀態,因爲它會消耗我的電池太快。也許我可以安排每30分鐘重複一次鬧鐘,並調用requestSingleUpdate?

是的,使用Handler每30分鐘請求一次更新requestSingleUpdate()

我已經在previous question中解決過這個問題,請告訴我該答案中的代碼是否有幫助,以及是否有任何問題沒有解決。

+0

謝謝,我會看看那裏。我不認爲Handler是一個選項,因爲我的應用程序可能在更新之間死機,但使用'AlarmManager'類似。我的設備運行2.3.3,但有趣的是,我永遠不會猜測你對第一個問題的回答。 – Jong

+0

在這種情況下,一個AlarmManager是要走的路。如果您不想打擾用戶,也可以使用後臺服務來獲取並保存新位置。 – Sam

+0

我會和AlarmManager一起去,謝謝。 – Jong

1

第二個參數,以米爲單位的最小距離差設置爲零,它會導致不斷更新。 更喜歡使用requestSingleUpdate在一個計時器+處理程序在一個所需的時間段內在幾分鐘內。

相關問題