YYDS!用Python就能轻松控制你的手机

“Python编程几乎能做任何事,只要你敢想,敢尝试!”,今天来看下用Python代码怎么来控制你的安卓手机。具体的说是代替你的手,实现自动的触摸和一些动作,实现自动化操作!主要用的是安卓手机的Android调试桥(Android Debug Bridge),它是一个非常有用的工具!本文的这个快速指南中,我将向你展示如何使用Python代码与ADB交互,并如何创建2个快速脚本。

ADB(Android Debug Bridge)是一个命令行工具(CLI),可用于控制Android设备并与之通信。可以执行许多操作:例如安装应用程序,调试应用程序,查找隐藏的功能并使用外壳程序直接与设备连接。要启用ADB,你的设备必须首先解锁开发者选项并启用USB调试——要解锁开发人员选项,转到设备设置,然后向下滚动到“关于”部分,找到设备上当前软件的内部版本号。单击内部版本号7次,将启用“开发人员选项”。然后,您可以转到设置中的“开发人员选项”面板,然后从那里启用USB调试。现在,基本大功告成,你唯一需要做的一件事就是将你的手机用USB电缆连接到计算机。好,今天的旅程是这样的: 

  • 介绍安装要求

  • 初步带你入门、带你飞 

  • 介绍编写脚本的基础 

  • 创建自拍计时器 

  • 创建定义搜索器

1. 安装准备工作

需要安装的两件事中的第一件事就是是计算机上的ADB工具。它会自动与Android Studio捆绑在一起,因此,如果已经安装了Android Studio那就不用担心。否则,可以转到官方文档,并且在页面顶部应该有有关如何安装它的说明。

安装ADB工具后,需要获取python库,我们将使用该库与ADB和我们的手机进行接口。安装命令如下:

pip install pure-python-adb       #安装pure-python-adb库。

下面这个不是必须的,但很有必要:为了让我们开发脚本时更轻松,可以安装一个名为scrcpy的开源程序,该程序允许我们使用鼠标和键盘在我们的计算机上显示和控制我们的android手机设备。要安装它,可以转到Github仓库并下载适用于你的操作系统(Windows,macOS或Linux)的正确版本。如果使用的是Windows,则将zip文件解压缩到一个目录中,然后将此目录添加到您的路径中。这样一来,我们只需在终端窗口中键入scrcpy即可从系统上的任何位置访问该程序。

2.带你入门带你飞

现在已经安装了所有依赖项,可以启动ADB并连接设备。首先,使用USB电缆将设备连接到PC,如果启用了USB调试,则会弹出一条消息,询问PC是否可以控制设备,只需回答是。然后在你的PC上,打开一个终端窗口,并通过键入adb start-server来启动ADB服务器。这应该打印出以下消息:

d9d843da188d35f1e751edd5c7e2032a.png

如果还安装了scrcpy,则只需在终端中键入scrcpy即可启动。但是,只有将其添加到路径后,此方法才能起作用,否则,可以通过将终端目录更改为安装scrcpy的目录并键入scrcpy.exe来打开可执行文件。希望一切顺利,你应该能够在PC上看到您的设备,并能够使用鼠标和键盘对其进行控制。

现在,我们可以创建一个新的python文件,并检查是否可以使用上面的库找到连接的设备:

2a91751d5b68979ea2d41ffc30ea375f.png

上面这里,我们导入AdbClient类并使用它创建一个客户端对象。然后,我们可以获得连接的设备的列表。最后,我们从列表中获得第一台设备(如果仅连接了一个设备,则通常是唯一的设备)。

3.编写脚本的基础

我们要与设备连接的主要方式是使用shell,通过这种方式,我们可以发送命令以模拟特定位置的触摸或从A滑动到B。要模拟屏幕触摸(轻击),我们首先需要工作了解屏幕坐标的工作方式。为了帮助解决这些问题,我们可以在开发人员选项中激活指针位置设置。激活后,无论您在屏幕上的何处触摸,都可以看到该点的坐标显示在顶部。手机屏幕坐标系的工作方式如下:

12383eba1db74a60b19cf836a76a8527.png

显示屏的左上角就是x和y坐标点(0,0),右下角的坐标是x和y的最大可能值。现在我们知道了坐标系的工作原理,我们需要检查一下可以运行的不同命令。我在下面列出了命令列表以及如何使用它们,以供快速参考(英文不懂?好好查查吧)

b02b9497cd5471851db277e6852527a6.png

51cb5b41ad18f5fb2a55479d394d20ad.png

4. 创建自拍计时器

哦,现在我们大概知道了能做什么,让我们开始吧,做一个简单的例子。我将向你展示如何创建一个快速的自拍计时器。首先,我们需要导入我们的库并创建一个connect函数以连接到我们的设备:

a0c3d1b80baaeee494ee3c9ae50f0fb6.png

你可以看到connect函数与前面的如何连接到设备的示例相同,除了这里我们返回设备和客户端对象以供以后使用。

6dcb561b1fd5712d63cfd701b74d0be4.png

在上面的主代码中,我们可以调用connect函数来检索设备和客户端对象。从那里我们可以打开相机应用程序,等待5秒钟并拍照。真的就是这么简单!正如我之前说过的,这只是复制你通常会做的事情,因此,如果首先手动进行操作并写下步骤,则思考如何做事情是最好的。

相信和我学Python的童鞋们都能理解上面的代码吧?

5. 创建定义搜索器

现在,我们做一些更复杂的事情:要求浏览器找到特定单词的定义,并截图以将其保存在我们的计算机上。

要写的程序的基本流程如下:

1.打开浏览器

2.单击搜索栏

3.输入搜索查询

4.等待几秒钟

5.截图并保存

但是,在开始之前,你需要在默认浏览器中找到搜索栏的坐标,可以使用我之前建议的方法轻松地找到它们。对我来说,他们是(440,200)。

首先,我们必须导入与以前相同的库,使用相同的connect方法。

27fbacb3e692efc8d8c78915bb4bc8a4.png

在我们的主要函数中,我们可以调用connect函数,并为搜索栏的x和y坐标分配一个变量。注意这是一个字符串,而不是一个列表或元组,这样我们就可以轻松地将坐标合并到我们的shell命令中。我们还可以从用户那里获取输入信息,以查看他们想要获取哪个单词的定义:

a41fdcfdc168a66791351abfea0b4d02.png

我们会将查询添加到完整的句子中,然后对其进行搜索,这样我们就可以始终获取定义。之后,我们可以打开浏览器,然后将搜索查询输入到搜索栏中,如下所示:

470d381a23434b4ea8bfb8a0e3f882aa.png

在这里,我们使用eventID 66模拟输入键的按下以执行搜索。如果需要,可以根据需要更改等待时间。最后,我们在设备对象上使用screencap方法获取屏幕截图,并将其另存为.png文件:

7bc116e7bda56ef40df4854581402d91.png

在这里,我们必须以写字节模式("wb")打开文件,因为screencap方法返回表示图像的字节。如果一切都按计划进行,则应该有一个快速脚本来搜索特定单词。在我的手机上正常工作是这样的:

c92035a6109c85e3b5f71dba43a1ece8.gif

希望你今天学到了一些新知识,在我对此进行研究之前,我其实也不知道,但很酷的事情是:使用它你基本可以执行平常可以做的任何事情!没错,而且还可以做更多的事,因为它只是模拟你自己在手机上的触摸和动作!

NO.1

往期推荐

Historical articles

Pandas 2.0 vs Polars: 孰优孰劣?!

分享 5 款超级好用的Python可视化工具,建议收藏!!

【原创】强烈推荐三个可视化模块,绘制的图表真的很酷炫!!

嫌Python代码慢?这个模块让Python提效100倍!!

分享、收藏、点赞、在看安排一下?

5442a0cd4e376b9ba63d0ecdc005a189.gif

f7a22552bc6c22c6f0bcc78c9cdd5b37.gif

db8c0a3c02c0749d3015c23de7be240f.gif

47650bb4b6b7e1733d4ea9c8413e1fd8.gif

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Python 代码示例,用于创建一个基本的登录窗口,要求用户输入用户名和密码。这个登录窗口是使用Python的tkinter库创建的。 ```python import tkinter as tk class LoginWindow: def __init__(self): self.root = tk.Tk() self.root.title("Login Window") # 创建用户名和密码的标签和文本框 tk.Label(self.root, text="Username:").grid(row=0, column=0) self.username_entry = tk.Entry(self.root) self.username_entry.grid(row=0, column=1) tk.Label(self.root, text="Password:").grid(row=1, column=0) self.password_entry = tk.Entry(self.root, show="*") self.password_entry.grid(row=1, column=1) # 创建登录和退出按钮 tk.Button(self.root, text="Login", command=self.login).grid(row=2, column=0) tk.Button(self.root, text="Exit", command=self.root.destroy).grid(row=2, column=1) def login(self): username = self.username_entry.get() password = self.password_entry.get() # 在这里可以添加验证用户名和密码的代码 if username == "admin" and password == "123": tk.messagebox.showinfo("Success", "Login successfully!") else: tk.messagebox.showerror("Error", "Invalid username or password!") def run(self): self.root.mainloop() if __name__ == "__main__": login_window = LoginWindow() login_window.run() ``` 在这个示例中,我们创建了一个名为LoginWindow的类,并在__init__方法中创建了一个窗口,包括用户名和密码的标签和文本框,以及登录和退出按钮。当用户点击“登录”按钮时,login方法将获取用户名和密码的值,并验证它们是否正确。如果正确,将显示一个消息框表示登录成功,否则将显示一个错误消息框。最后,我们在if __name__ == "__main__"部分创建了一个LoginWindow对象,并运行它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值