首页 > 代码库 > Python写一个Windows下的android设备截图工具

Python写一个Windows下的android设备截图工具

利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装。代码如下:

import wx,subprocess,os,platformclass AutyFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, -1, Android Auty, size=(350, 300))        self.panel = wx.Panel(self, -1)        #Android devices combox.        combox_list = []        r = execute_shell("adb devices")        for i in range(1,len(r)-1):            combox_list.append(r[i].split("\t")[0])        wx.StaticText(self.panel, -1, "Select devices:", (15, 15))        self.devices_combobox = wx.ComboBox(self.panel, -1, r[1].split("\t")[0], (15, 35), wx.DefaultSize, combox_list, wx.CB_DROPDOWN)        #Capture button.        self.capture_button = wx.Button(self.panel, -1, "capture", pos=(188, 35), size=(66,25))        self.reload_button = wx.Button(self.panel, -1, "reload", pos=(258, 35), size=(66,25))        self.Bind(wx.EVT_BUTTON, self.captureClick, self.capture_button)        self.Bind(wx.EVT_BUTTON, self.reloadClick, self.reload_button)         self.capture_button.SetDefault()        self.reload_button.SetDefault()    def captureClick(self, event):        capture_android(self.devices_combobox.GetValue())        if("Windows" in platform.platform()):            os.startfile("d:\\screenshot.png")    def reloadClick(self, event):        self.devices_combobox.Clear()        k = execute_shell("adb devices")        for i in range(1,len(k)-1):            self.devices_combobox.Append(k[i].split("\t")[0])        self.devices_combobox.SetValue(k[1].split("\t")[0])def execute_shell(shell):    p = subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE)    out = p.stdout.readlines()    return outdef capture_android(device_id):    sh1 = "adb -s "+device_id+" shell /system/bin/screencap -p /sdcard/screenshot.png"    sh2 = "adb -s "+device_id+" pull /sdcard/screenshot.png d:/screenshot.png"    execute_shell(sh1)    execute_shell(sh2)if __name__ == __main__:    app = wx.PySimpleApp()    AutyFrame().Show()    app.MainLoop()

运行截图:

技术分享

优点:

1. 比uiautomatorviewer运行速度快,比monitor更快;

2. 可以针对多个设备,选择性进行截屏;

3. 截屏以后截图(保存在D盘根目录下“screenshot.png”文件)会自动打开;

4. 插拔设备后可以reload重新加载设备列表。

Python写一个Windows下的android设备截图工具