2012-07-18 85 views
2

如何改進Android平臺上的慢速GPS信號採集?提高Android GPS性能

我正在測試一個基於this open source code的簡單GPS記錄器,雖然它似乎可行,但它可能需要長達10-15分鐘才能首先獲取信號並開始顯示GPS座標。但是,在同一設備上運行Google地圖應用似乎幾乎可以立即獲取信號(它甚至能夠實時檢測我面臨的方向),而GPS記錄器服務仍然表示無法找到信號。

爲什麼Google地圖在獲取GPS信號的速度如此之快,而標準的GPS系統服務永遠佔用?

啓動的GPS服務的具體代碼我已經是:

private void startLoggerService() { 
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationListener = new MyLocationListener(); 
    lm.requestLocationUpdates(
     LocationManager.GPS_PROVIDER, 
     2000, 
     1, 
     locationListener); 
} 

回答

6

有幾件事情你應該知道的,肯定考慮到,當涉及到使用位置數據:

  • 不要僅僅依靠GPS傳感器。雖然GPS可能會給你提供最準確的結果,但它相對較慢,而且相當耗電。相反,還請求網絡提供商提供位置更新:LocationManager.NETWORK_PROVIDER。在大多數情況下,這會給您的應用帶來足夠準確的結果(我玩過的大多數設備看起來會產生大約60〜65米的最差情況),但更重要的是:速度要快得多。請注意,就像使用GPS一樣,用戶可以在系統設置中自行啓用和禁用功能。有關更多詳細信息,請參閱Using the Location Manager
  • 想想你需要多長時間一次位置更新。如果可能的話,防止連續更新(這會立即耗盡電池),並在您收到所需數據後立即釋放傳感器。此外,一個好的做法是將位置緩存到一定範圍 - 即使它不完全準確,用戶也會立即得到反饋。您可以將其與一些考慮時間戳的邏輯結合起來。
  • 使用Android Developer網站上已有的資源。例如,Location Strategies有一個值得閱讀的話題。另一個好資源將是blog post by Reto Meier和他的open source project,實現他的位置的Android Protips。如果您有時間,還可以參考他的Google I/O 2011 presentation,討論基於位置的/位置感知Android應用的最佳做法。

在一個側面說明:你面對什麼方向的實時指示無關與地點,而是來自要麼磁場傳感器(讀:數字羅盤)或陀螺儀。兩者都處理設備的方向,而不是位置。

2

1.在你的代碼意味着該供應商將只播出位置應1米你的設備移動。嘗試將其設置爲0。

API文檔狀態:

「的通知的頻率可以使用minTime和minDistance纔會參數來控制如果minTime是大於0,所述的LocationManager可能休息之間minTime毫秒如果minDistance大於0,則只有當設備通過minDistance米移動時纔會廣播一個位置。要儘可能頻繁地獲取通知,請將這兩個參數設置爲0。

0

如果谷歌地圖顯示你的方向,它必須使用GPS修復。Google地圖必須使用最新的GPS定位,您可以使用Location.getLastKnownLocation。據推測,如果該位置不是太舊谷歌地圖決定它比沒有更好的方式,並顯示它給你,而你等待新的GPS修復。

當您在室內時,GPS定位通常會非常緩慢或根本不會。我假設你正在開發你正試圖獲得GPS修復?你可能需要站起來走出室外。

許多手機有相當糟糕的GPS接收器。即使在晴朗的室外空中,我也擁有需要幾分鐘才能獲得第一次GPS定位的手機。它吮吸和它的一個撕掉,但它是真的。

+0

谷歌地圖上的方向指示器使用取向方向傳感器(磁性和陀螺儀)。地圖上的位置來自粗略或精細的位置服務(粗糙的塔和罰款的gps)。 – 2012-07-20 05:21:32