1. 程式人生 > >Android 用Batterystats和電池歷史描畫電量使用圖

Android 用Batterystats和電池歷史描畫電量使用圖

Contents

用Batterystats和電池歷史描畫電量使用圖... 1

安裝電池歷史... 1

從BatteryStats裡獲得資料... 3

從電池歷史圖表中檢視資料... 4

更多BatteryStats輸出... 5

 

Batterystats和電池歷史描畫電量使用圖

這篇文章展示Batterystats工具和電池歷史指令碼的基本用法。

BatteryStats是Android framework層引入的收集裝置電池資料的工具。你可以用adb把這些資料匯出到你的開發裝置上,用電池歷史建立一個報告。電池歷史可以將這份報告從BatteryStats轉換成HTML格式的,這樣你就可以從瀏覽器中開啟查看了。

這樣做的優勢是:

  • 顯示電耗在程序的什麼地方、以什麼方式耗掉的。
  • 指出為了延長電池壽命,應用中那些任務能夠改變或刪除。

注意:要用BatteryStats和電池歷史,你的手機要執行在Android 5.0以上並且開啟USB Debugging。

安裝電池歷史

安裝電池歷史最簡單的方法是用Docker。對於其他的安裝方法和從原始碼編譯,請看專案Github頁面上的Readme。安裝Docker,這樣做:

按Docker網站的指令安裝Docker Community Edition。

開啟命令列,輸入下面命令檢查Docker是否安裝成功

docker run hello-world

如何成功,將會看到下面的輸出:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest:
sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
 
Hello from Docker!
This message shows that your installation appears to be working correctly.
 
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

用下面的命令執行電池歷史:

docker run -p port_number:9999 gcr.io/android-battery-historian:3.0 --port 9999

電池歷史會用你在port_number中指定的埠號。

注意:如果你用的是windows,你可能需要在BIOS裡啟動虛擬化。關於如何啟動虛擬化,檢查主機板的說明。如果你可以執行Android虛擬器,那說明虛擬化功能已經開啟。

把電池歷史引入你的瀏覽器中,確保它的執行。地址根據作業系統會有所不同。

對於Linux和Mac

電池歷史在http://localhost/port_number

Windows

當你啟動Docker後,她告訴你機器的IP地址。所以,例如,如果IP地址是123.456.78.90,電池歷史在http://123.456.78.90:port_number

在電池歷史的起始頁面,你可以上傳和瀏覽電池統計資料。

BatteryStats裡獲得資料

要從裝置的BatteryStats裡獲得資料,在電池歷史裡開啟它,像這樣操作:

  1. 把裝置連到電腦上
  2. 在終端裡關掉正在執行的adb服務
adb kill-server
  1. 重啟adb,檢查裝置連線狀況。
adb devices

應該能看到列出的裝置,如下圖:

如果沒有裝置列出來,檢視是否手機連線,USB除錯是否開啟,在關閉並重啟adb。

  1. 復位電視資料統計
adb shell dumpsys batterystats --reset

裝置一直在後臺收集電池資料和其他除錯資訊。復位操作刪除舊統計資料。如果不做復位操作,輸出將會巨大。

  1. 從電腦斷開手機,確保你只用電池裡的電。
  2. 使用應用程式,得到相應的資料;例如,從WiFi斷開併發送資料到雲端。
  3. 重新連線手機
  4. 確認手機連線上
adb devices
  1. dump所有資料。這可能會需要一些時間:
adb shell dumpsys batterystats [path/]batterystats.txt

BatteryStats.txt檔案將會放在你設定的可選引數path裡。如果沒有設定path,檔案被存在家目錄。

  1. 從原始資料建立報告。

對於執行在Android 7.0和以上版本的裝置:

adb bugreport > [path/]bugreport.zip

對於執行在Android 6.0和一下版本的裝置:

adb bugreport > [path/]bugreport.txt

獲得Bugreport需要花些時間。完成之前不要斷開連線或取消操作。

向BatteryStats.txt一樣,檔案將會放在你設定的可選引數path裡。如果沒有設定path,檔案被存在家目錄。

  1. 如果還沒執行,執行下面命令執行電池歷史:
docker --run -p port_number:9999 gcr.io/android-battery-historian:2.1 --port 9999
  1. 在電池歷史看你的資料,在你的瀏覽器開啟電池歷史。(對於Mac和Linux,電池歷史在http://localhost/port_number對於Mac和Linux,電池歷史在http://your_IP_address/port_number
  2. 點選Browse,選擇你剛才生成的bugreport檔案。
  3. 點選Submit。電池歷史會開啟一個由BatteryStats資料生成的圖。

電池歷史圖表中檢視資料

電池歷史表畫出基於時間的電源相關事件。

當系統元件活動,消耗點的時候,對應行顯示彩條。這個標並沒有顯示這個元件使用了多少電,只有活動的應用資訊。圖表中X軸是時間,分類展示,每類用長條表示。

上圖中,1代表從下拉列表中新增緯度。2代表滑鼠移到上邊,會有相關條目的具體資訊,包括顯示條的顏色等。3代表滑鼠移到顯示條上,會顯示這個緯度的具體資訊和那個時間點電池的狀態。

更多BatteryStats輸出

在下面電池歷史圖表中,你可以從BatteryStats.txt中得到更多的資訊。

1系統統計標籤可以看到系統範圍內的統計資料,像訊號強度和螢幕亮度。這個資訊提供了裝置的一個整體資訊。確保沒有外部事件影響你的測試很重要。

2應用統計標籤包含了特定應用的狀況。根據使用者設定的排序標準(3通過什麼排序)來排列應用顯示順序。也可以選擇一個特定的應用(4)來顯示。

更多電池效能相關的問題,請看電池壽命優化。