2012-05-07 124 views
1
locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationlistener); 

我知道這行代碼應該儘可能頻繁地更新設備位置嗎?具體來說,每0毫秒和0米(最小)。Android requestLocationUpdates minimumtime + minimumdistance實際上並不工作

好吧,'最低'這個關鍵字在這裏很重要,但爲什麼有時位置沒有更新,可能只要30+秒?我在一次更新和下一次更新之間計算了實際時間,而使用WiFi時,即使代碼中有0和0,也需要38秒。我甚至用1000毫秒(1秒)嘗試過,但仍不會頻繁更新。

如何更頻繁地進行此更新?爲什麼它以這種方式迴應?

謝謝!

回答

2

簡短的回答是:你不能(更新頻率更高)。

文檔表示你會得到「更新儘可能經常」如果指定MIN_DISTANCE和MIN_TIME爲零。所以你所看到的是「儘可能頻繁」。通常情況下,除非發生變化,否則不會得到更新,所以如果您沒有移動,您不一定會獲得更新。此外,由於您使用的是網絡位置而不是GPS,因此位置的準確性並不理想,因此您不應該期望頻繁更新。

此外,每個硬件供應商都以不同方式實施位置提供商。所以更新頻率取決於硬件供應商的實施。

+0

你剛纔講的只是證實了我怕是真的:)關於GPS,它會好起來送2個requestLocationUpdates相同的聽衆?一個使用GPS_PROVIDER,另一個使用NETWORK_PROVIDER。像這樣 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,ll); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,ll); – bubbly

+0

是的,您可以請求多種不同類型的位置更新。但是,請注意,「儘可能頻繁地」請求GPS更新會「儘可能快」地消耗電池,所以您不應該長時間使用電池,除非您知道設備已插入電源。 –

+0

不僅耗盡電池,而且還會加熱手機:)。 – Siddharth

相關問題