# 數據準備
battery-historian工具需要使用bugreport中的Battery History?
數據,我們在開始的時候需要通過以下命令來打開電池數據的獲取以及重置:
~~~
adb shell dumpsys batterystats --enable full-wake-history
shell dumpsys batterystats --reset
~~~
執行的效果如下:

上面的操作相當于初始化操作,現在做一些測試,手動或者跑一些自動化的case都行。經過一段時間后,我們運行下面兩條命令來將bugreport的信息保存到txt文檔中,然后將txt文檔轉化為html文件。
~~~
adb bugreport > bugreport.txt
python historian.py -a bugreport.txt > battery.html
~~~
上面的historian.py腳本是python寫的,所以需要python環境,然后從[github](https://github.com/google/battery-historian)上下載這個腳本。上面兩條命令執行成功后,會在目錄下發現兩個文件?
bugreport.txt和battery.html,這個時候我們用google瀏覽器打開html文件,可以看到如下信息:

# 各個參數的意義
首先我們在bugreport.txt找到Battery History數據欄類似下面的信息:
~~~
-------------------------------------------------------------------------------
DUMP OF SERVICE batterystats:
Battery History (2% used, 5980 used of 256KB, 45 strings using 2592):
0 (9) RESET:TIME: 2015-03-05-15-21-56
0 (2) 100 c0900422 status=discharging health=good plug=none temp=200 volt=4167 +running +wake_lock +sensor +screen data_conn=edge phone_signal_strength=great brightness=medium proc=u0a15:"android.process.acore"
0 (2) 100 c0900422 proc=u0a7:"com.android.cellbroadcastreceiver"
0 (2) 100 c0900422 proc=u0a53:"com.android.gallery3d"
~~~
你在html中信息都能從bugreport.txt中找到相應的信息。?
現在來分析各個指標代表的意義:
# 橫坐標

上面的10,20代表的就是秒的意思,它是以一分鐘為周期,到第60秒的時候變為0。橫坐標就是一個時間范圍,咱們的例子中統計的數據是以重置為起點,獲取bugreport內容時刻為終點。我們一共采集了多長時間的數據,圖表下也有信息說明。(經其他人的反饋,這個坐標間隔是會隨著時間的長度發生改變,所以要以你的實際情況為準)

# 縱坐標
縱坐標的數據就很麻煩了,數據量太多,一條一條來吧。
## battery_level
電量,可以看出電量的變化。比如上圖中的數據顯示剛開始電量是100%,然后在第11秒-12秒中間的某個時刻降到了99%。
## plugged
充電狀態,這一欄顯示是否進行了充電,以及充電的時間范圍。例如上圖反映了我們在第22s插入了數據線,然后一直持續了數據采集結束。
## screen
屏幕是否點亮,這一點可以考慮到睡眠狀態和點亮狀態下電量的使用信息。
## top
該欄顯示當前時刻哪個app處于最上層,就是當前手機運行的app,用來判斷某個app對手機電量的影響,這樣也能判斷出該app的耗電量信息。該欄記錄了應用在某一個時刻啟動,以及運行的時間,這對我們比對不同應用對性能的影響有很大的幫助。
## wake_lock*
[wake_lock](http://blog.csdn.net/g_salamander/article/details/7978772)?該屬性是記錄wake_lock模塊的工作時間。是否有停止的時候等
## running
界面的狀態,主要判斷是否處于idle的狀態。用來判斷無操作狀態下電量的消耗。
## wake_lock_in
wake_lock有不同的組件,這個地方記錄在某一個時刻,有哪些部件開始工作,以及工作的時間。
## data_conn
數據連接方式的改變,上面的edge是說明采用的gprs的方式連接網絡的。此數據可以看出手機是使用2g,3g,4g還是wifi進行數據交換的。這一欄可以看出不同的連接方式對電量使用的影響。
## status
電池狀態信息,有充電,放電,未充電,已充滿,未知等不同狀態。?
這一欄記錄了電池狀態的改變信息。
## phone_signal_strength
手機信號狀態的改變。?
這一欄記錄手機信號的強弱變化圖,依次來判斷手機信號對電量的影響。
## health
電池健康狀態的信息,這個信息一定程度上反映了這塊電池使用了多長時間。?
這一欄記錄電池狀態在何時發生改變,上面的圖中電池狀態一直處于good狀態。
## plug
充電方式,usb或者插座,以及顯示連接的時間。?
這一欄顯示了不同的充電方式對電量使用的影響。