2017-04-02 75 views
1

所以我知道你可以使用getAccuracy()來找到位置的準確性,但是如果你爲準確性設置一箇中斷,你是否可以防止記錄下其中一個位置非常不符合用戶的標記?就像用戶仍在使用一樣,大多數位置更新都會聚集在他的區域周圍,但偶爾位置提供商會打嗝並報告位置。LocationProvider - 檢測高度不準確/不正確的位置

這些位置是否通過getAccuracy顯示爲「準確」?或者他們會出現一些瘋狂的高getAccuracy()結果?編程一箇中斷點很容易,但我想知道是否需要額外的編碼檢查,比如一個位置是否與以前的位置太不一樣了,那麼這是一個任性的選擇。

+0

對於那些打嗝,getAccuracy()會返回一個很大的數字,但是該位置也可以被緩存並且相當老。恕我直言,準確性有時被賦予太多的意義 - 位置的年齡也很重要。看到我的答案。 –

回答

0

準確度不是唯一決定因素。您還應該查看位置的年齡,以及提供商的位置(Google Play服務位置不會告訴您,但原始Android LocationManager會這樣做)。

事實上,Google有一些有用的示例代碼maintaining a current best estimate。我使用了這種變化來濾除傳入位置數據中的跳躍。實質上,如果一個地點沒有通過這個門,它甚至不會被報告。

+0

我是我只從onLocationChanged獲取位置報告,這是不是意味着位置永遠不會比最後一個更舊?我正在使用FusedProvider。我總是檢查報告的時間(使用getTime()),據我所知,它永遠不會返回一箇舊的位置。 – ashxu

+0

似乎合理,但我不確定。但是,如果融合提供商爲您提供源自網絡的緩存位置,那麼在GPS系統醒來之前,緩存的位置會比第一個GPS位置具有更早的時間戳是有意義的。 –