首页 > 编程语言 >轻松用Python控制你的手机

轻松用Python控制你的手机

时间:2023-07-27 14:33:51浏览次数:38  
标签:Python 可以 轻松 ADB 使用 手机 安装 我们 设备

“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服务器。这应该打印出以下消息:

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

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

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

3.编写脚本的基础

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

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

4.创建自拍计时器

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

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

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

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

5.创建定义搜索器

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

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

  • 打开浏览器

  • 单击搜索栏

  • 输入搜索查询

  • 等待几秒钟

  • 截图并保存

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

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

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

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

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

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

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

标签:Python,可以,轻松,ADB,使用,手机,安装,我们,设备
From: https://www.cnblogs.com/yuerquan123/p/17584828.html

相关文章

  • 基于Python的HTTP代理爬虫开发初探
     在数字化时代,网络数据的获取对于企业和个人都变得至关重要。然而,许多网站为了保护其数据和资源,采取了反爬虫措施,使得我们无法直接访问和获取所需的信息。这时,HTTP代理爬虫就成为了一项强大的工具,它可以帮助我们绕过限制,有效地进行数据采集。在本文中,将介绍基于Python的HTTP代理......
  • [oeasy]python0075_删除变量_del_delete_variable
    删除变量回忆上次内容上次我们研究了字节序字节序有两种 符号英文名称中文名称<little-endian小字节序>big-endian大字节序字节序用来明确整型数字存储的顺序 如果读写数字出了错......
  • 成功实现FaceTime拨打,FaceTime数据筛选,检测手机号是否开通FaceTime的原理
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署苹......
  • 深入Scikit-learn:掌握Python最强大的机器学习库
    本篇博客详细介绍了Python机器学习库Scikit-learn的使用方法和主要特性。内容涵盖了如何安装和配置Scikit-learn,Scikit-learn的主要特性,如何进行数据预处理,如何使用监督学习和无监督学习算法,以及如何评估模型和进行参数调优。本文旨在帮助读者深入理解Scikit-learn,并有效地应用在......
  • 使用Python统计下桌面某个文件夹下(含多层子文件夹)具体文件的数量(方法二)
    大家好,我是皮皮。一、前言前几天在Python最强王者群【东哥】问了一个Python自动化办公的问题,一起来看看吧。这个是他自己在实际工作中遇到的需求,正好遇到了这个问题,想着用Python来实现下。二、实现过程上一篇文章中已经分享了一个方法,这一篇文章继续分享另外一个方法,由【小王......
  • python设计模式运用
    工厂+策略+注册classVideoFactory(object):def__init__(self):self.video={}defregister_video(self,name,video):self.video[name]=videodefcreate_video(self,name):ifnameinself.video:returnself.v......
  • python ping
    前提:最近需要检测大量IP的联通状态,尝试了多种方法,最终选择了使用系统的ping第一种pythonping安装pipinstallpythonping使用frompythonpingimportpingres=ping('1.1.1.1')if'Requesttimedout'instr(res):不通else:通使用很简单,但是缺点......
  • Python win11 安装lxml 失败
    如果你有一个项目执行了requirements后,一直提示lxml失败,解决步骤如下1、尝试升级pippython.exe-mpipinstall--upgradepip2、尝试下载包手动安装下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml选择:lxml‑4.9.0‑cp311‑cp311‑win_amd64.whl3、python第三方......
  • python 高德批量获取路径信息
    高德开发者文档:https://lbs.amap.com/api/webservice/guide/api/direction#driving第一步:首先要申请自己的:key第二步:根据自己的需求,从开发者文档。找到自己需要的API第三步:发送请求,解析数据 获取两个坐标之间最优的路线距离importjsonimportrequestsimportopenpyxl......
  • 【手机】三星手机刷机解决SecSetupWizard已停止
    三星手机恢复出厂设置之后,出现SecSetupWizard已停止的解决方案零、问题我手上有一部同学给的三星GT-S6812I,这几天搞了张新卡,多余出的卡就放到这个手机上玩去了。因为是获取了root权限的(直接使用KingRoot就可以),有个APP安装不上,于是把apk直接复制到/data/app下,想强制安装一下,结果......