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

简介: 界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装。代码如下: import wx,subprocess,os,platform class AutyFrame(wx.

界面版

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

import wx,subprocess,os,platform

class 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):
            if r[i].startswith("*") and r[i].endswith("*"):
                pass
            else:
                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 out

def 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重新加载设备列表。

命令行版

如果不想安装wx库,提供一个命令行版的安卓截屏python脚本(capture_android.py):

import sys,os,platform
from execute_shell import execute_shell

def 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__':
    if len(sys.argv) == 2:
        device_id = sys.argv[1]
        capture_android(sys.argv[1])
        if("Windows" in platform.platform()):
            os.startfile("d:\\screenshot.png")

引用的execute_shell.py内容如下(把引用的文件放在同级目录下就行):

import subprocess

def execute_shell(shell):
    p = subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE)
    out = p.stdout.readlines()
    return out

使用方法(python 脚本路径 device_id参数):

截屏后图片会自动打开。

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
16天前
|
存储 文字识别 C#
.NET开源免费、功能强大的 Windows 截图录屏神器
今天大姚给大家分享一款.NET开源免费(基于GPL3.0开源协议)、功能强大、简洁灵活的 Windows 截图、录屏、Gif动图制作神器:ShareX。
|
2天前
|
Android开发 芯片 开发者
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
Android MediaTek bootloader 的序列号长度 & 移除非字母和数字限制 SN-Writer工具支持写入
10 0
|
17天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
1天前
|
5G Python
Windows11搭建Python环境(Anaconda安装与使用)
Windows11搭建Python环境(Anaconda安装与使用)
9 0
|
6天前
|
机器学习/深度学习 数据挖掘 计算机视觉
python数据分析工具SciPy
【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
12 1
|
7天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title('简单折线图') plt.xlabel('X轴') plt.ylabel('Y轴') plt.show() ```
12 1
|
7天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
13 1
|
13天前
|
测试技术 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,用于修改函数或方法的行为。本文将深入探讨Python中装饰器的概念、用法和实际应用,以及如何利用装饰器实现代码的优雅和高效。
|
20天前
|
Android开发 开发者
Android开发之OpenGL的画笔工具GL10
这篇文章简述了OpenGL通过GL10进行三维图形绘制,强调颜色取值范围为0.0到1.0,背景和画笔颜色设置方法;介绍了三维坐标系及与之相关的旋转、平移和缩放操作;最后探讨了坐标矩阵变换,包括设置绘图区域、调整镜头参数和改变观测方位。示例代码展示了如何使用这些方法创建简单的三维立方体。
17 1
Android开发之OpenGL的画笔工具GL10
|
22天前
|
Python Windows
【Python】Windows如何在cmd中切换python版本
【Python】Windows如何在cmd中切换python版本