簡體   English   中英

如何知道我的Android應用在用戶設備上消耗了多少電量?

[英]How can I find out how much battery my Android app consumes on user's devices?

我正在編寫一個應用來評估Android上藍牙P2P網絡的可行性。

我注意到在Galaxy Nexus上,它使用非常少的電池,而在Nexus S上,它可以非常快速地耗盡電池。 這是由於藍牙導致的高CPU負載直接導致的。

現在,我想收集有關我的應用程序在其安裝的設備上導致多少電池耗盡的信息。 簡單地記錄時間與電池電量是沒有用的,因為我不知道設備何時在使用,即使我記錄了,我也不知道用戶是在播放3D游戲而是通過WiFi播放或閱讀電子書變暗的屏幕。

為了使問題變得更糟,並非我的應用程序引起的所有電池使用都歸因於電池屏幕 - 例如,有些被列為“藍牙”(再次,取決於設備)。

是否有任何簡單,隱私保護的方式來獲取有關非根設備的有用信息? 這些設備不在我的控制之下。 我不能簡單地在菜單中查看,我不能使用ADB。

Android API目前不支持此功能。 唯一可用的文檔是描述如何使用BatteryManager廣播的文檔 ,該廣播僅提供整體電池電量而不是每個應用程序的詳細信息。

我想即使有未記錄的方法來模擬系統設置電池管理器顯示的內容,它們也需要生根。

AFAIK沒有辦法做到這一點。 最接近你可以做到這一點的是將設備連接到監控工具,如小眼科實驗室 ,它會在圖表上繪制應用程序消耗的電池。 它還支持在應用程序的生命周期中標記關鍵事件,如打開WIFI /藍牙等。

不支持遠程執行此操作,但您可以在自己的測試設備上獲取數據。

這種方法很粗糙,但可能有所幫助。 您可以使用現有的BatteryManager廣播來跟蹤應用處於活動狀態時對整體電池電量的更改。

了解您的應用何時處於有效狀態是一個單獨的問題。 如果您的應用程序完全由活動組成,那么您可以通過在調用任何活動的onResume()方法時開始跟蹤並在onPause()停止跟蹤來獲得良好的結果。 如果您可以從單個基本Activity類派生所有活動,那么這很容易。 請參閱如何檢測Android應用程序何時進入后台並返回前台以獲取有關如何跟蹤此問題的建議。

如果你的應用程序更復雜,智能的東西發生在像服務這樣運行時間更長的組件中,那么它就更難了。

這很粗糙,但至少它可以幫助你區分“玩3D游戲”和“使用我的應用程序”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM