2015-04-18 11 views
0

我有一個關於我的android編程方法的問題 - 無論它是否有效。只是想給你一個想法,我想實現什麼:Android:感知當前位置與某個興趣點之間距離的正確方法?

在地圖上有多個興趣點。如果用戶靠近PIT,則會出現關於距離的通知。我們可以說3個通知:距離1英里,0.5英里和0.1英里。當用戶或多或少地處於PIT時,不會顯示更多通知。用戶應該駕駛汽車或其他車輛。

我目前使用Geofences來檢測用戶是否輸入了半徑1英里。如果是這樣,我檢查他的當前位置到PIT的距離。如果距離大約0.5或0.1英里,則會發出通知。因此,我經常檢查當前位置(現在每隔10秒)。如果用戶喜歡PIT或非常接近,則Geofence會退出並完成。

代碼工作正常,這種方法是我在閱讀Android開發人員教程時想到的第一件事情。但是,還有另一種更有效的方法嗎?

雖然這是(目前)滿足我的需求,我有兩個主要問題:

  1. 這似乎耗盡電池頗多。由於用戶最有可能在使用過程中可以爲他的手機充電,所以這可能不是什麼問題。

  2. 我從SD卡上的文件中讀取PIT的數量。在我的例子中,我只有幾個PIT。但是用戶可以修改源數據,以便他可以添加儘可能多的數據。谷歌表示,每個用戶只支持100個有效的地理柵欄。但是如果我的用戶有超過100個PIT呢?由於我使用Geofence來檢測是否必須觸發第一個通知 - 這是一個嚴重的問題。那麼有沒有其他的選擇?

回答

0

我有幾個建議:

1)爲了降低GPS定點的量,可以計算出的睡眠時間。這個想法是在靠近「邊界」的時候頻繁地進行gps修復,而在很遠的地方几乎沒有修復。通過考慮GPS返回的速度參數可以進一步提高這一點。 例如,如果用戶在駕駛20英里每小時時距最近的邊界20英里,則可以輕鬆等待30分鐘,然後再次打開GPS,只是舉個簡單的例子。

2)我遇到了同樣的問題。我的解決方案僅僅是選擇X英里內的POI。這樣確保永遠不會冒險達到100的極限。當用戶從其初始位置移動(X-1)英里時,地理圍欄將使用新位置重建。 如果您認爲上述策略仍有可能會出現這種高密度點的風險很高,我會考慮完全基於gps而不是地理圍欄來進行自己的鄰近檢查。

+0

我也有一個關於100的限制的問題。以Android開發者頁面作爲源代碼,它並不是100%清楚100的含義是什麼意思。我可以同時只有100個有效的地理柵欄嗎?或者我的整個應用程序只能有100個不同的地理柵欄總數? – h4wX

+0

根據我的經驗,它是應用程序中100個併發活動地理柵欄的限制。這也是爲什麼它可以幫助我重建地理柵欄,因爲有源地理柵欄的總數不會超過100。通過主動我的意思是註冊的操作系統來監控,所以地理圍欄的狀態是無關緊要的。 – cYrixmorten

相關問題