Android:
(使用batterystats)
方法:
手機自帶的電量監控、GT
命令(5.0以上系統才可以):
1.下載historian.py腳本,下載地址:https://github.com/google/battery-historian,后面用
2.執行步驟
1)初始化batterystats數據
adb shell dumpsys batterystats--reset
2)拔掉手機,操作app,操作完成后,重新連接手機,執行下面的命令,收集系統整體的Battery數據:
adb shell dumpsys batterystats > batterystats.txt
3)得到這些數據后,這個時候使用我們的battery-historian來生成我們可見HTML報告:
python historian.py batterystats.txt > batterystats.html
4)用google瀏覽器打開此文件即可
IOS:
IOKit中的IOPMPowerSource接口
000mWh。這個就是當前電池剩余的電量。當計算剩余電量的百分比的時候,用哪個值去算都一樣了。
以上是IOPMPowerSource接口在iOS10及以上系統上獲取的信息。但事實上,在iOS 9及以前的系統上,能獲取到更多更詳細的信息,大部分是一些硬件的固定信息,對我們測試沒有幫助。但也有一些其他有用的信息,比如說當前的溫度,電流,都是很有用的信息,如下圖:
溫度能用來直接判斷當前的發熱情況,電流能直接判斷當前的電池發電功率,都可以有效判斷當前電池的使用狀態。
但是這個接口拿到的數據,仍然是不夠具體,全是整機的電池情況,沒有具體到某一個應用或是其他維度的電量統計。所以,還得繼續摸索。
這一次我們應用到的是BatteryUsageUI.bundle中PLBatteryUsageUIQuery,也是個私有接口。這里賣個關子,實現就不帖了,有心的同學可以根據我的關鍵字找到具體的東西。這個接口就厲害了,具體得說,他能拿到每一個APP的CPU\GPU\顯示\網絡\存儲等前后台所有詳細信息,一個巨大的表。
當我們探索到這一步時,激動不已,以為光明就在眼前了。可是事實卻是,這個接口早在iOS9的第一個版本,就完全被封了,只能在iOS 8上的機子上拿到數據。而且經過多次確認后,我們發現,這個數據是每個小時才會更新一次,並不是實時的。
但盡管如此,還是大大得增強了我們繼續探索的信心,我們第一次獲取到了每一個App的電量消耗情況,而且我們很確信,蘋果iOS的電量排行榜,就是根據這些數據計算出來的。因為,我們在這之前,已經發現在越獄環境下有個工具,叫DetailedBatteryUsage,這個插件只做了一件事情,就是把系統設置里,電池的顯示方式設置成了“2”,而默認的顯示方式是“0”。設置為“2”以后,就可以在電池設置里看到很詳細的信息,如下圖:
跟我們用接口拿到的數據是一致的,所以我們確認電量排行榜數據來至於這個接口,而且,系統一直在調用這個接口在統計電量相關的信息,只是對用戶而言不可見,而且接口也不可見




