我的编程空间,编程开发者的网络收藏夹
学习永远不晚

教你用python控制安卓手机

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

教你用python控制安卓手机

一、介绍

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

这是今天的旅程:

1.安装要求

2.入门

3.编写脚本的基础

4.创建自拍计时器创

5.建定义搜索器

二、安装要求

我们需要安装的两件事中的第一件事是计算机上的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 AdbClient

if __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 y
Input text “hello world!”
Input keyevent eventID
Here is a list of some common eventID's:
3: home button
4: back button
5: call
6: end call
24: volume up
25: volume down
26: turn device on or off
27: open camera
64: open browser
66: enter
67: backspace
207: contacts
220: brightness down
221: brightness up
277: cut
278: copy
279: paste

如果您想找到更多,请在这里找到一长串清单。https://forum.xda-developers.com/t/q-adb-input-keyevent-for-long-press-on-power- button.2063741 / post-64890206。

五、创建自拍计时器

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


import time

from ppadb.client import Client as AdbClient

def 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秒钟并拍照。真的就是这么简单!正如我之前说过的,这只是复制您通常会做的事情,因此,如果您首先手动进行操作并写下步骤,则思考如何做事情是最好的。

六、创建定义搜索器

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

该程序的基本流程如下:

1.打开浏览器

2.单击搜索栏

3.输入搜索查询

4.等待几秒钟

5.截图并保存

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

首先,我们将必须导入与以前相同的库,并且我们还将具有相同的connect方法。


import time

from ppadb.client import Client as AdbClient

def 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 load

device.shell(f'input tap {search_bar}')

device.shell(f'input text "{search_query}"') # make sure you have the quotation marks around your text
device.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控制手机内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

教你用python控制安卓手机

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用python怎么控制安卓手机

这期内容当中小编将会给大家带来有关使用python怎么控制安卓手机,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、介绍ADB(Android调试桥)是一个命令行工具(CLI),可用于控制Android设
2023-06-15

手把手教你用python绘制热度图(heatmap)

我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图,下面这篇文章主要给大家介绍了关于用python绘制热度图(heatmap)的相关资料,需要的朋友可以参考下
2022-12-23

Python学习教程:教你用Python通过微信来控制电脑摄像头

如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证。今天的Python学习教程就来通过itchart库来实现通过微信对电脑的一些操作。
2023-06-02

Python实现用手机监控远程控制电脑的方法

一、前言很多时候,我们都有远程控制电脑的需求。比如正在下载某样东西,需要让电脑在下载完后关机。或者你需要监控一个程序的运行状况等。 今天我们就来用Python实现一个远程监控并控制电脑的小程序。 二、实现原理听起来远程控制电脑好像很高级的样
2022-06-02

Ubuntu安装scrcpy完成手机投屏和控制(Ubuntu用QQ微信的另一种方法)

Scrcpy 安装 snap install scrcpy adb服务安装 sudo apt-geXOeWggTt install android-tools-adb adb配置 查看手机的USB识别号 手机通过USB连接电脑 lsusb找
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录