2014-02-22 46 views
0

我已被授予爲Android創建iBeacon客戶端的任務。客戶端的目的是當另一客戶端請求用戶位置時,通過WIFI/3G/4G將最近的信標的ID傳輸到服務器。Android iBeacon客戶端 - 如何保存電池

現在,我想知道,在電池消耗方面,做到這一點的最佳方式是什麼?

有(據我所知)兩種方法:

1)。只要最近的信標的ID發生變化,就直接將新的ID上傳到服務器。 2)。將本地最近的信標的ID存儲在客戶的手機上。只有在服務器請求客戶端時才上傳到服務器。

Nr 1)。意味着每次用戶接近新的iBeacon時都必須激活WIFI。另一方面,2)。要求電話監聽端口以處理來自服務器的請求。

編輯:我讀的無線電波狀態機在這裏:http://developer.android.com/training/efficient-downloads/efficient-network-access.html

如果我把一個ServerSocket在後臺運行,這將讓我的手機在無線低功耗?在我看來,選擇1)會在每次發送信標ID時將手機置於全無線電源,但在此之後,手機將回落到低功耗/睡眠模式,這將爲我節省電池電量。 2)另一方面會阻止手機進入睡眠模式,因爲我必須保持與服務器的持續連接。

回答

1

我會選擇一個,因爲它更簡單,更脆弱。如果你真的擔心電池問題,只能限制它與服務器交談的頻率(例如每小時10次),這樣它就不會發瘋。

其他東西可能會使用更多的電池,所以先測試一下,確保這確實需要優化。例如,在後臺運行10小時,看看它耗盡了多少電量與完全充電的電池相比,當應用程序沒有向服務器報告時。如果只有百分之幾,那麼它可能足夠高效。