我看这个节点下正好有一个 python 操作安卓的帖子:
那我也分享下使用 python 控制安卓手机的操作,我这个方法无需电脑,只需要一部安卓手机即可操作。
这篇文章主要介绍如何在安卓手机上运行 python 代码从而控制安卓手机进行模拟操作的方法。仅适用于安卓 11 及以上系统。
文章的由来起源于我一个想法:我手上有一块闲置的 esp8266 单片机,想要用它来做一个手机小说翻页器,但是难点在于如何在手机上接收信号并模拟操作,而且 python 代码并不支持安卓系统运行。经过我的一番努力,找到了两种方式,并成功制作小说翻页器,一种方式就是本文中使用 python 控制手机,另一种是使用 auto.js 软件控制。
给大家看看我最终制作好的手机翻页器成品效果:
不过今天分享的仅仅是制作这个小工具的一环——如何实现使用 python 模拟手机操作。
如果大家对这个手机小说翻页小工具的制作过程感兴趣的话,可以给我留言,感兴趣的人多的话,我写篇文章或者录个视频来分享这个工具的完整制作过程。
言归正传,接下来我们介绍使用 python 模拟手机操作的方法:此方法不是网上有些人说的用数据线连接电脑,然后再在电脑上运行 python 控制手机,而是仅需一部安卓手机,在安卓手机上运行 python ,从而控制手机。
如何用 python 控制手机?
shizuku 这个软件的作用是不用手机连接电脑也能在手机上使用 adb 命令。
termux 是一个模拟 linux 的软件,使用它可以运行 linux 命令。
使用 shizuku 赋予 termux 运行 adb 命令的权限,这一步需要按照 shizuku 的官方教程引导做,比较复杂,我这里省略。
然后在 termux 中运行 adb 命令来实现控制手机的效果。
运行单条命令:
在 termux 中安装好 python 后,比如在 python 中输入以下代码可以实现按下音量+的效果。
os.system("sh rish -c 'input keyevent 24'")
其中sh rish -c
作用是使用 termux 启动一个拥有输入 adb 命令权限的终端窗口,-c 的作用是将后续的代码作为命令输入;input keyevent 24
是 adb 命令,模拟按下音量+键。你也可以查询一些其它的 adb 命令比如"截屏","点击手机上某个坐标"等。
运行多条命令方法 1:
os.system("sh rish -c 'input keyevent 24 && input keyevent 24'"
上述命令的效果是按下两次音量+键。&&符号的作用是运行完上面一条命令之后再运行后面的命令,和 windows 的 cmd 中的用法一样。
演示:
运行多条命令方法 2:
这种方法就是在 python 脚本中编写代码来实现,详细请参照本文第一个视频 5min 之后的部分。
欢迎大家分享大家知道的可以在安卓上使用 python 进行自动化操作的方法~
拜拜。
1
DrLty 2023-07-12 21:14:18 +08:00
之前研究过 getevent 和 sendevent ,还是有点可以分享的。
触屏包括按键鼠标键盘都可以使用读写/dev/input/eventX 来实现,也可以通过 ioctl 来实现独占输入输出,还可以使用 uinput 创建虚拟触屏键盘鼠标。 adb 或者 root 就可以读写这些设备文件,所以我是用 golang 写的程序,编译后放在/data/local/tmp 下直接运行的。 这样相比较于 python 调用 adb 来控制效率更高点,而且还可以实现更多骚操作(多点触摸,虚拟设备,独占 io ) 就是麻烦了点 |
2
Aoonthetop 2023-07-12 21:37:24 +08:00
你是否在寻找 "AirtestIDE" ?
|
3
coolloves 2023-07-13 09:11:46 +08:00
突然有点懵,在 termux 中不能直接执行 shell 吗?
|
4
jiager OP @coolloves 直接在 termux 中输入"input keyevent 25"会报"command not found"的错误的,需要 sh rish 来启动一个 termux 授权的能运行 adb 命令的 shell
|
6
coolloves 2023-07-13 10:16:38 +08:00
@jiager shizuku 我记得这个授权重启就要掉的吧?期待 op 写一些实用的 demo,目前看,还是 auto.js 更方便
|
7
rev1si0n 2023-07-13 12:48:14 +08:00
|
8
yangyuhan12138 2023-07-13 16:20:03 +08:00
@Aoonthetop AirtestIDE 可以不依赖 adb 吗?或者说有没有什么办法让他跑在一台安卓手机上,不需要 wifi,usb 之类的东西
|
9
AndyChina 2023-07-13 18:30:36 +08:00
学习了
|
10
Aoonthetop 2023-07-14 11:26:10 +08:00
@yangyuhan12138 #8 不可以 运行 Python 脚本没问题
|