python通過adb獲取android手機耗電量

2021-10-08 07:35:24 字數 3260 閱讀 2388

把開發者模式開啟,啟用 adb 除錯,然後可以使用以下python**獲取安卓手機的耗電量

# -*- coding: utf-8 -*-

import re

import os

defgetselectdevice()

: pip = os.popen(

'adb devices'

) result = pip.read(

) devices_split = result.split(

'\n'

) devices =

for device in devices_split:

if device =='':

continue

iflen

(devices)

<2:

print

('裝置不存在'

)return-1

iflen

(devices)==2

:# 只有一台裝置,直接返回

return devices[1]

.split(

'\t')[

0]print

("選擇你要操作的裝置"

)for index in

range(1

,len

(devices)):

print

("%s:\t%s"

%(index,devices[index]))

print

("輸入編號:"

) select=

int(

input()

) selectline = devices[select]

return selectline.split(

'\t')[

0]defgetbatteryinfo

(device)

: pip = os.popen(

'adb -s %s shell dumpsys batterystats'

% device)

result = pip.

buffer

.read(

).decode(encoding=

'utf8'

)return result

defparsepowerinfo

(info)

:

start =

0try

: start = info.index(

'estimated power use'

)except exception:

print

('耗電量資訊不存在'

)return-1

if start <0:

print

('耗電量資訊不存在'

)return-1

start = info.index(

'capacity'

,start)

end = info.index(

'\n'

,start)

result = info[start:end]

capacity = re.findall(

'\d+\.?\d*'

, result)

return capacity

defparseresettimeinfo

(info)

:

start =

0try

: start = info.index(

'reset:time:'

)except exception:

print

('重置時間不存在'

)return-1

if start <0:

print

('重置時間不存在'

)return-1

end = info.index(

'\n'

,start)

result = info[start:end]

capacity = re.findall(

'\d+\.?\d*'

, result)

return capacity

defmain()

: device = getselectdevice(

)if device ==-1

:return

print

("正在獲取資訊..."

) betteryinfo = getbatteryinfo(device)

if betteryinfo ==-1

:return

print

("正在解析資訊..."

) result = parsepowerinfo(betteryinfo)

if result ==-1

:return

print

("得出結果:"

)print

("\t電池容量:%s ma"

%(result[0]

))print

("\t計算耗電:%s ma"

%(result[1]

))print

("\t實際耗電:%s ma"

%(result[2]

))timeinfo = parseresettimeinfo(betteryinfo)

if timeinfo ==-1

:return

print(%

(timeinfo[0]

,timeinfo[1]

,timeinfo[2]

,timeinfo[3]

,timeinfo[4]

,timeinfo[5]

))pass

if __name__ ==

'__main__'

: main(

)pass

我這邊接入了兩個裝置的控制台輸出:

選擇你要操作的裝置

1: 192.168.0.103:5555 device

2: 192.168.0.101:5555 device

輸入編號:

2正在獲取資訊...

正在解析資訊...

得出結果:

電池容量:3300 ma

計算耗電:282 ma

實際耗電:396 ma

通過ADB命令獲取當前activity

自動化測試需要獲得當前的activity,來判斷處於的頁面是否正確 hierarchy view經常連不上真機,無法獲得activity,所以直接用 adb命令來檢視當前執行的 activity就可以 方法一 1 cmd命令中輸入 adb shell進入shell命令模式 2 shell中輸入 lo...

通過網路使用ADB

adb kill server 本文介紹如何通過網路 尤指無線網路 與android的adbd進行連線。原理 adb server 計算機上的乙個服務程序,程序名為adb adb daemon android 手機上的乙個服務程序,程序名為adbd adb client 你可以認為是計算機上的乙個終...

通過網路訪問adb

adb支援通過遠端訪問,這樣就可以使用wifi來連線了,而且可以省下usb口來作為他用。具體步驟如下 第一種方法 1.用usb連線手機,終端輸入adb shell.2.在shell中輸入setprop service.adb.tcp.port 5555 3.然後會回到pc shell。輸入adb c...