public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener, Looper looper)
寄存器當前活動要由指定提供定期通知。定期提供的LocationListener將使用當前位置或狀態更新進行調用。
接收最近的位置可能需要一段時間。如果需要立即位置,應用程序可以使用getLastKnownLocation(String)方法。
如果提供者被用戶禁用,更新將停止,並且將調用onProviderDisabled(String)
方法。只要再次啓用提供程序,就會調用onProviderEnabled(String)方法,並且位置更新將再次開始。
使用參數minTime
和minDistance
可以控制通知的頻率。如果minTime
大於0,LocationManager可能會在位置更新之間休息minTime
毫秒以節省電力。如果minDistance
大於0,則只有設備移動了minDistance
米纔會廣播位置。要儘可能頻繁地獲取通知,請將這兩個參數設置爲0.
後臺服務應當小心設置足夠高的值,以便設備不會消耗太多的電力,因爲GPS或無線無線電臺可以保持全部時間。特別是,不建議在60000ms以下的值。
提供的Looper用於實現回調機制。
參數
- 提供商註冊提供商 與名稱
- minTime的 最小時間間隔爲 通知,以毫秒爲單位。此 字段僅用於提示 節約能源,而位置更新之間的實際時間 可能大於或小於此值的 。
- minDistance纔會的最小距離 間隔的通知,以米爲單位
- 聽者一個其onLocationChanged(地點) 方法將被調用用於每個 位置更新
- 打環器的活套 對象,其消息隊列將被 用於實施回調 機制。
拋出
IllegalArgumentException
如果提供商爲空或不存在
IllegalArgumentException
如果偵聽器爲null
IllegalArgumentException
如果彎針是空
SecurityException
如果沒有合適的許可的存在對於提供程序。
但是它,它採2中的較小者?如果minTime爲10000且minDistance爲0,它是否仍然可能每秒更新一次? – xster 2010-07-06 19:41:27
該文檔沒有告訴我們它是如何工作的,它可以。無論如何不要依賴間隔值。 – Pentium10 2010-07-06 19:46:04
如果在實際設備上將minDistance參數設置爲0,則會發生這種情況。無論最小時間間隔,位置更新每隔一秒發生解決此問題的一個方法是使用計時器任務註冊位置更新,然後在獲取的第一個位置更新中取消它,並在所需間隔後再次將其關閉。 – MahdeTo 2011-12-17 09:09:34