這是我聽GPS位置更新的方法(使用LocationManager
和LocationListener
):安卓的LocationManager動態調整minTime/minDistance纔會閾值
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
listener = new MyLocationistener(); // LocationListener
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
30000, // milliseconds (minTime)
20, // meters (minDistance)
listener);
但我想動態調整使用的minTime
和minDistance
參數通過LocationManager#requestLocationUpdates
。我的目的是爲了節省電池,根據幾個使用策略,即:
- 如果用戶不移動,增加minTime獲得位置更新
- 如果用戶移動速度非常快,增加minDistance纔會
- 如果用戶是在室內(無GPS覆蓋),同時增加
- 如果電池電量過低,同時增加
- ...(任何其他啓發式)
我想知道:
- 這對於節省電池壽命真的是個好主意嗎?
- 我該怎麼做這種調整?如果有唯一的選擇,我可以再次撥打
LocationManager#removeUpdates
和LocationManager#requestLocationUpdates
。 - 你知道實現這種自適應算法的任何想法或示例代碼?
編輯:該應用程序是一個跟蹤系統,知道人在哪裏,以便將任務分配給最接近給定位置的人。實際上電池幾乎不會持續8個小時,所以我想增加它。
有趣的問題,雖然我不能幫助太多。我認爲節省電池是個好主意。我傾向於說,你建議的解決方案是唯一的解決方案,但我不是位置API的專家,所以我會讓別人發言。 – Sephy 2010-08-22 12:12:26
[我已經使用了相同的代碼在我的應用程序,但它一點兒也不返回任何值,想知道如果任何玉傢伙能幫助我...] [1] [1]:HTTP: //stackoverflow.com/questions/9514980/android-getting-speed-with-gps – 2012-03-02 04:33:10
刪除並添加,就像這樣:https://stackoverflow.com/questions/5385094/change-mintime-for-gps-locationlistener-動態 – jp1017 2016-11-01 03:23:44