使用python怎么控制安卓手机
这期内容当中小编将会给大家带来有关使用python怎么控制安卓手机,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
一、介绍
ADB(Android调试桥)是一个命令行工具(CLI),可用于控制Android设备并与之通信。您可以执行许多操作,例如安装应用程序,调试应用程序,查找隐藏的功能并使用外壳程序直接与设备连接。要启用ADB,您的设备必须首先解锁开发者选项并启用USB调试。要解锁开发人员选项,您可以转到设备设置,然后向下滚动到“关于”部分,找到设备上当前软件的内部版本号。单击内部版本号 7次,将启用开发人员选项。然后,您可以转到设置中的“开发人员选项”面板,然后从那里启用USB调试。现在,您唯一需要做的另一件事就是将设备连接到计算机的USB电缆。
这是今天的旅程:
安装要求
入门
编写脚本的基础
创建自拍计时器创
建定义搜索器
二、安装要求
我们需要安装的两件事中的第一件事是计算机上的ADB工具。它会自动与Android Studio捆绑在一起,因此,如果您已经拥有了,那就不用担心了。否则,您可以转到[官方文档](https://developer.android.com/studio/command-line/adb),并且在页面顶部应有有关如何安装它的说明。
安装ADB工具后,您需要获取python库,我们将使用该库与ADB和我们的设备进行接口。您可以使用pip install pure-python-adb安装pure-python-adb库。
可选:为使我们在开发脚本时更轻松,我们可以安装一个名为scrcpy的开源程序,该程序允许我们使用鼠标和键盘在我们的计算机上显示和控制我们的android设备。要安装它,您可以转到[Github repo](https://github.com/Genymobile/scrcpy)并下载适用于您的操作系统(Windows,macOS或Linux)的正确版本。如果您使用的是Windows,则将zip文件解压缩到一个目录中,然后将此目录添加到您的路径中。这样一来,我们只需在终端窗口中键入scrcpy即可从系统上的任何位置访问该程序。
三、入门
现在已经安装了所有依赖项,我们可以启动ADB并连接设备。首先,使用USB电缆将设备连接到PC,如果启用了USB调试,则会弹出一条消息,询问PC是否可以控制设备,只需回答是。然后在您的PC上,打开一个终端窗口,并通过键入adb start-server来启动ADB服务器。这应该打印出以下消息:
daemon not running; starting now at tcp:5037
daemon started successfully
如果您还安装了scrcpy,则可以通过在终端中键入**scrcpy
来启动它。但是,这仅在将其添加到路径时才有效,否则可以通过将终端目录更改为安装scrcpy的目录并键入scrcpy.exe**来打开可执行文件。希望一切顺利,您应该能够在PC上看到您的设备,并能够使用鼠标和键盘对其进行控制。
现在,我们可以创建一个新的python文件,并检查是否可以使用该库找到连接的设备:
rom ppadb.client import Client as AdbClientif __name__ == '__main__': client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) == 0: print('No devices') quit() device = devices[0] print(f'Connected to {device}')
在这里,我们导入AdbClient类并使用它创建一个客户端对象。然后,我们可以获得连接的设备的列表。最后,我们从列表中获得第一台设备(如果仅连接了一个设备,则通常是唯一的设备)。
四、编写脚本的基础
我们要与设备连接的主要方式是使用外壳,通过这种方式,我们可以发送命令以模拟特定位置的触摸或从A滑动到B。要模拟屏幕触摸(轻击),我们首先需要工作了解屏幕坐标的工作方式。为了帮助解决这些问题,我们可以在开发人员选项中激活指针位置设置。激活后,无论您在屏幕上的何处触摸,都可以看到该点的坐标显示在顶部。坐标系的工作方式如下:
该图显示了坐标系的工作方式
显示屏的左上角分别具有* x 和 y 坐标(0,0),并且右下角的坐标是 x 和 y *的最大可能值。
现在我们知道了坐标系的工作原理,我们需要检查一下可以运行的不同命令。我在下面列出了命令列表以及如何使用它们,以供快速参考:
Input tap x yInput text “hello world!”Input keyevent eventIDHere is a list of some common eventID's:3: home button4: back button5: call6: end call24: volume up25: volume down26: turn device on or off27: open camera64: open browser66: enter67: backspace207: contacts220: brightness down221: brightness up277: cut278: copy279: paste
如果您想找到更多,请在这里找到一长串清单。https://forum.xda-developers.com/t/q-adb-input-keyevent-for-long-press-on-power- button.2063741 / post-64890206。
五、创建自拍计时器
现在我们知道我们能做什么,让我们开始吧。在第一个示例中,我将向您展示如何创建一个快速的自拍计时器。首先,我们需要导入我们的库并创建一个connect函数以连接到我们的设备:
import timefrom ppadb.client import Client as AdbClientdef connect(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) == 0: print('No devices') quit() device = devices[0] print(f'Connected to {device}') return device, client
您可以看到connect函数与前面的如何连接到设备的示例相同,除了这里我们返回设备和客户端对象以供以后使用。
if __name__ == '__main__': device, client = connect() # open up camera app device.shell('input keyevent 27') # wait 5 seconds time.sleep(5) # take a photo with volume up device.shell('input keyevent 24') print('Taken a photo!')
在我们的主代码中,我们可以调用connect函数来检索设备和客户端对象。从那里我们可以打开相机应用程序,等待5秒钟并拍照。真的就是这么简单!正如我之前说过的,这只是复制您通常会做的事情,因此,如果您首先手动进行操作并写下步骤,则思考如何做事情是最好的。
六、创建定义搜索器
现在,我们可以做一些更复杂的事情,那就是要求浏览器找到特定单词的定义,并截图以将其保存在我们的计算机上。
该程序的基本流程如下:
打开浏览器
单击搜索栏
输入搜索查询
等待几秒钟
截图并保存
但是,在我们开始之前,您需要在默认浏览器中找到搜索栏的坐标,您可以使用我之前建议的方法轻松地找到它们。对我来说,他们是(440,200)。
首先,我们将必须导入与以前相同的库,并且我们还将具有相同的connect方法。
import timefrom ppadb.client import Client as AdbClientdef connect(): client = AdbClient(host="127.0.0.1", port=5037) # Default is "127.0.0.1" and 5037 devices = client.devices() if len(devices) == 0: print('No devices') quit() device = devices[0] print(f'Connected to {device}') return device, client
在我们的主要函数中,我们可以调用connect函数,并为我们的搜索栏的* x 和 y *坐标分配一个变量。注意这是一个字符串,而不是列表或元组,这样我们可以轻松地将坐标合并到我们的shell命令中。我们还可以从用户那里获取输入信息,以查看他们想要获取哪个单词的定义:
if __name__ == '__main__': device, client = connect() search_bar = '440 200' # x y query = input('What word do you want to find the definition of: ') search_query = f'what is the definition of {query}'
我们会将查询添加到完整的句子中,然后对其进行搜索,这样我们就可以始终获取定义。之后,我们可以打开浏览器,然后将搜索查询输入到搜索栏中,如下所示:
device.shell('input keyevent 64')time.sleep(0.25) # wait for browser to loaddevice.shell(f'input tap {search_bar}')device.shell(f'input text "{search_query}"') # make sure you have the quotation marks around your textdevice.shell('input keyevent 66')time.sleep(3) # wait for results to load
在这里,我们使用eventID 66模拟输入键的按下以执行搜索。如果需要,可以根据需要更改等待时间。
最后,我们将在设备对象上使用screencap方法获取屏幕截图,然后可以将其另存为* .png *文件:
screenshot = device.screencap()with open('result.png', 'wb') as f: # save the screenshot as result.png f.write(screenshot) print('Saved screenshot!')
在这里,我们必须以写字节模式打开文件,因为screencap方法返回表示图像的字节。
如果一切都按计划进行,则应该有一个快速脚本来搜索特定单词。这在我的手机上正常工作:
Python主要用来做什么
Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5、游戏开发;6、桌面应用开发。
上述就是小编为大家分享的使用python怎么控制安卓手机了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341