3

我已經通過解決方案,發現有很多方法來實現位置跟蹤邏輯。最高效的位置跟蹤實施?意圖/ BroadcastReciever/LocationListener的/服務/ IntentService/AlarmManager?

  1. 意向+廣播接收器+ LocationListener的
  2. 意向+ IntentService + AlarmManager
  3. LocationListener的
  4. 其它技術或以上的不同組合...

我試圖找出什麼將是最好的做法(最省電的方式)實現相同...

我有一個庫類MyLocationClass.java有兩種方法 1. startTracking() - 在T時間後開始發送用戶位置,並且僅在用戶移動X距離時 2. stopTracking() - 停止發送位置更新。

一個簡單的答案似乎是因爲它提供了一個更好的用戶體驗,其內置時間的推移/移動距離功能LocationListener的,但後來......

我不想要的GPS是在所有的時間?事實上,只有當T和X交叉時才能開啓。將使用Service/IntentService和/或/和Alarm Manager Timer是更好的解決方案嗎?可以使用LocationListeners的BroadcaastReceivers證明是更好的解決方案嗎?

請建議。 Thnx

+1

這一切都取決於你想要做什麼。數據 – Ifor 2012-04-16 11:58:11

回答

2

我想,你可以使用服務中實現的位置監聽器。當服務啓動時開始聆聽GPS,並在服務停止時移除GPS偵聽器。當您想要收聽GPS時啓動此服務。

也請看看「requestLocationUpdates」方法。該函數的minTime和minDistance字段解釋如下:

minTime通知的最小時間間隔(以毫秒爲單位)。此字段僅用作節省電量的提示,位置更新之間的實際時間可能大於或小於此值。

minDistance纔會接收通知的最小距離間隔,以米爲單位

+0

能否請您分享一些代碼,對於上述方案? – Karthick 2013-10-04 10:24:37

0
> Most power efficient location tracking implementation? 

最功率高效(和inacurate)的解決方案是無法使用GPS,因爲在所有的GPS接收器(至少在我三星智能手機)顯着增加了功耗。

如果你的Android應用是在其手機提供商記錄在手機上運行有手機CELLID-廣播,告訴手機,小區現在的位置發生了變化。你的應用可以收到這些。太。

手機接收器已在運行,手機必須喚醒才能保持連接,因此只需很少的能量開銷。

但是,您必須找到將cell-id轉換回位置的方法。

Android應用llama使用此CELLID廣播觸發基於位置的行動。它有一個學習模式,我可以說:「現在我在我的工作7小時。在背景,收集所有小區id-S將其標示爲‘工作’

+0

感謝K3B。我的問題是更多的在其上執行會產生最好的結果保持其他參數(CellTower的TRIANG/GPS常數)。因此,可以說我必須使用GPS爲了準確,現在應該如何實現邏輯?我應該選擇聽衆還是接收者或服務等...? – 2012-04-16 12:31:50

+0

您已經得到了答案,位置監聽器在服務中實現。 – sais 2014-07-08 07:00:10