2015-05-24 102 views
3

我正在研究需要定期掃描附近Wi-Fi接入點的Android應用程序。目前掃描每2-3分鐘進行一次,這需要註冊一個BroadcastReceiver來捕獲掃描結果,調用WifiManagerstartScan方法並處理結果(在我的情況下也需要網絡調用)。這個循環消耗了大量的能量,我想通過爲應用實施智能電源策略來提高功耗。使用傳感器數據的Android智能電源管理

除了僅在「繁忙時間」進行掃描(例如,在晚上停止循環),我正在考慮通過SensorManager使用加速度計來檢測設備是靜止的(放置在桌子上)還是在運動(例如,在步行時在用戶的口袋中)。然後,通過確定設備是否在移動,我可以調整掃描頻率(靜止時減小,當設備運動時增加)。

我對此事的幾個問題:

1)將定期跟蹤加速計數據更耗電比運行掃描循環中每3-5分鐘高效?跟蹤加速度計真正花費多少功率?

2)如何確定設備是靜止還是運動?我在網上看到很多關於檢測抖動和傾斜的問題,但沒有關於自然運動檢測的大量信息。另外,我應該多頻繁地採樣傳感器?

+0

你可以嘗試getLastKnownLocation(){我認爲這是方法名稱關閉我的頭}查詢GPS,看看設備是否'固定' - 雖然比加速度計會給你一個固定的差異.. 。 –

回答

1

我認爲最好的方法是使用Google Play服務中包含的ActivityRecognitionApi類,該類爲此類目標進行了優化。該課程提供了一種方法:requestActivityUpdates,該方法經過優化,以最小功耗返回設備狀態。

通過定期喚醒設備和 讀取傳感器數據的短陣列來檢測活動。它只使用低功率傳感器,以便將功耗保持在最低水平。

0

我第二個Fouwad Wahabi對你的問題的回答。 我會建議採取另一種方法來跟蹤加速度計和用戶的活動。我會整合一個免費的SDK(在線提供),例如: 1. Tranql 2. Neura 3. Atooma 其中一些SDK在用戶活動發生後立即向您發送詳細信息,並且使用率小於1%的電池。