iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python编程控制Android手机操作技巧示例
  • 522
分享到

python编程控制Android手机操作技巧示例

2024-04-02 19:04:59 522人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录你应该拥有的东西安装 开始 轻敲 截图高级点击 TemplateMatching滑动打电话给某人从手机下载文件到电脑 手机录屏打开手机发送 Whatsapp 消息 几天前我在考虑

在这里插入图片描述

几天前我在考虑使用 python 从 whatsapp 发送消息。和你们一样,我开始潜伏在互联网上寻找一些解决方案并找到了关于twilio. 一开始,是一个不错的解决方案,但它不是免费的,我必须购买一个 twilio 电话号码。此外,我无法在互联网上找到任何可用的 whatsapp api。所以我放弃了使用 twilio 和任何其他 whatsapp API 的想法。在想了很多之,打开 Android studio,我连接了我的手机,然后开始了这个过程。当应用程序构建时,我想到了使用手机本身自动发送 whatsapp 消息的想法。我搜索了一些差不多的东西,发现了一些很有可能解决我的问题的东西。我找到了一个命令行工具,adb它可以帮助人们在不接触手机的情况下控制手机。

你应该拥有的东西

  • Python 的基本理解
  • 一些空闲时间阅读此博客

安装

首先,转到此链接并在您的系统中下载 adb。
解压文件夹并将 adb 放入环境变量中。下面是在环境变量中添加 adb 的完整过程,

在这里插入图片描述

在您的手机中启用 USB 调试,并使用 USB 电缆将您的手机与 PC 连接。

通过打开 cmd 并键入,检查连接是否正确adb devices。您将在连接的设备列表中看到一个设备。

如果您可以看到您的设备,那么您可以打开任何代码编辑器。我正在使用 Visual Studio 代码。

开始

让我们首先导入一些我们需要的依赖项。您可以使用pip.


import cv2
import subprocess

我们将需要子进程通过命令行调用 adb 并获取输出,我们需要 cv2 进行一些图像处理,以便 python 能够点击屏幕或任何其他任务。
现在让我们在下面创建一个名为 adb 的基本函数,


def adb(command):
    proc = subprocess.Popen(command.split(' '), stdout=subprocess.PIPE, shell=True)
    (out, _) = proc.communicate()
    return out.decode('utf-8')

上面的函数基本上是通过子进程调用 adb 并检索我们将需要的输出。

轻敲

现在让我们编写代码,其中 python 将单击移动设备的屏幕。所以我们将创建一个名为 tap 的函数,它会点击屏幕上的特定位置。


def tap(tap_x, tap_y):
    adb("adb shell input tap {} {}".fORMat(tap_x, tap_y))
tap(100,100)

这将单击距 x 100 像素和距 y 100 像素。现在您一定在想,为每个命令硬编码坐标是非常困难的,并且当设备改变时它不会工作,这就是为什么在本博客的下一节中我们将使用图像处理来检测坐标自动地。

截图


def take_screenshot(final):
    adb(f"adb exec-out screencap -p > ./images/{final}.png")

代码很简单。我们制作了一个功能,可以保存手机内部图像目录的屏幕截图。在函数中,我们可以传递图像文件的名称。

高级点击

现在,我们将使用目标图像来自动检测坐标,而不是传递坐标。为了更好地理解这一点,让我们举个例子,我有这个屏幕 ,我想打开我们中间的应用程序,然后将使用一个称为. 通过这个过程,我们将截取屏幕截图 > 使用模板匹配计算我们中间图标的坐标 > 点击那里

在这里插入图片描述

TemplateMatching


ef image_position(small_image, big_image):
    img_rgb = cv2.imread(big_image)
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    template = cv2.imread(small_image, 0)
    height, width = template.shape[::]
    res = cv2.matchTemplate(img_gray, template, cv2.TM_SQDIFF)
    _, _, top_left, _ = cv2.minMaxLoc(res)
    bottom_right = (top_left[0] + width, top_left[1] + height)
    return (top_left[0]+bottom_right[0])//2, (top_left[1]+bottom_right[1])//2

screen="screen"
take_screenshot(screen)
x, y  = image_position("images/among_us_icon.png", f"images/{screen}")
click(x,y)
# WOWWW Python successfully opened among us app.

有了上面的代码,即使你在手机屏幕上改变了我们游戏的位置,python仍然可以打开游戏。

我们还能做什么?
你可以用 adb 和 python 做更多的事情。让我们谈谈其中的一些。

滑动


def swipe(start_x, start_y, end_x, end_y, duration_ms):
    adb("adb shell input swipe {} {} {} {} {}".format(start_x, start_y, end_x, end_y, duration_ms))

打电话给某人


def call(number):
    adb(f"adb shell am start -a android.intent.action.CALL -d tel:{number}")
call('+91xxxxxxxxxx') # +[CODE][NUMBER]

从手机下载文件到电脑

在这里插入图片描述


def download(path, output_path):
    adb(f"adb pull {path} {output_path}")
从手机中删除文件
def remove(path):
    adb(f"adb shell rm {path}") #/sdcard/...

手机录屏


# name is the video_file name and time is the seconds you want to record
def screen_record(name, time):
    adb(f"adb shell screenrecord /sdcard/{name} --time-limit {time}")
    download(f"/sdcard/{name}",f"./mobile/{name}")
    remove(f"/sdcard/{name}")

打开手机


def switch_phone_on_off():
    adb("adb shell input keyevent 26")

还有更多类似 26 的关键事件。如果您想知道,请访问此链接。

打开网址


def open_url(url):
    adb(f'adb shell am start -a android.intent.action.VIEW -d {url}')
open_url("https://www.Google.co.in/")

发送 Whatsapp 消息

好的,所以我觉得这很酷。在获得了所有这些基本的理解之后,我们已经解决了我的主要问题,即发送没有二维码的 whatsapp 消息,没有像 twilio 这样的付费方法。这有点棘手,但它在我的手机上工作。我希望它也适用于你的。


def send_whatsapp_message(phone, message):
    adb(f'adb shell am start -a android.intent.action.VIEW -d "Https://api.whatsapp.com/send?phone={phone}"') # Opening whatsapp url
    adb('ping 127.0.0.1 -n 2 > nul') # delay
    adb(f'adb shell input text "{message}"')  # entering message
    adb('adb shell keyevent 22') # Right arrow
    adb('adb shell keyevent 22') # Right arrow
    adb('adb shell input keyevent 22') # Right arrow 
    adb('adb shell input keyevent 22') # Right arrow
    adb('adb shell input keyevent 66') # Enter Key

send_whatsapp_message('+91xxxxxxxxxx', 'blah blah blah')

消息已发送!

在这里插入图片描述

以上就是python编程控制Android手机操作技巧示例的详细内容,更多关于Python控制Android手机的资料请关注编程网其它相关文章!

--结束END--

本文标题: python编程控制Android手机操作技巧示例

本文链接: https://www.lsjlt.com/news/137444.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • python编程控制Android手机操作技巧示例
    目录你应该拥有的东西安装 开始 轻敲 截图高级点击 TemplateMatching滑动打电话给某人从手机下载文件到电脑 手机录屏打开手机发送 Whatsapp 消息 几天前我在考虑...
    99+
    2024-04-02
  • Android编程操作手机通讯录的方法示例
    本文实例讲述了Android编程操作手机通讯录的方法。分享给大家供大家参考,具体如下:手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息。类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子。同样的这次也...
    99+
    2023-05-30
    android 通讯录
  • Android API编程之Assets文件操作示例
    本文实例讲述了Android API Assets文件操作。分享给大家供大家参考,具体如下:public class ReadAssetActivity extends Activity { private TextView mTextV...
    99+
    2023-05-30
    android assets 文件操作
  • 云服务器远程控制电脑怎么操作手机
    如果您想远程控制一台服务器的电脑,以下是一些基本的步骤: 确认对方的身份和授权:确保您知道对方的身份和对服务的访问权限,以防止被黑客攻击或被恶意控制。 下载和安装客户端:您可以通过客户端下载所需的远程控制软件。您可以选择使用浏览器进行客...
    99+
    2023-10-27
    远程控制 操作 服务器
  • Python编程技巧连接列表的八种操作方法
    目录1. 最直观的相加2. 借助 itertools3. 使用 * 解包4. 使用 extend5. 使用列表推导式6. 使用 heapq8. 使用 yield fromPython...
    99+
    2024-04-02
  • 腾讯云服务器远程控制怎么用手机操作
    腾讯云服务器远程控制使用方法: 登录腾讯云服务器:首先,需要在手机上开启腾讯云服务器的账户,登录后点击进入控制设置界面,选择“更多控制设置”。 配置端口:在控制设置界面中,可以通过选择“端口”进行连接,也可以通过输入端口号(如192.1...
    99+
    2023-10-27
    腾讯 用手 远程控制
  • Python编程使用PyQt5制作动态钟表示例
    目录前言环境配置实现思路老式钟表制作电子表制作合并两表界面核心代码总结前言 大家好,我是小张~ 记得小时候,家里只有一个钟表用来看时间(含有时针、分针、秒针的那种),挂在墙上哒哒哒响...
    99+
    2024-04-02
  • 腾讯云服务器远程控制怎么用手机操作的
    首先,对于一些对安全性有较高要求的企业,他们往往会选择腾讯云服务器提供的高可用性服务。腾讯云服务器采用多重备份和冗余机制,能够在服务器出现故障或其他异常情况时,保证业务的连续性。同时,腾讯云服务器还提供了监控和告警功能,帮助企业及时发现和处...
    99+
    2023-10-28
    腾讯 用手 远程控制
  • 腾讯云服务器远程控制怎么用手机操作电脑
    首先,使用腾讯云服务器远程控制工具可以实现在云服务器上对自己的电脑进行远程控制。例如,您可以使用该工具轻松地登录到自己的云服务器上,然后使用远程桌面连接功能来操作自己的电脑。在此过程中,您可以在云服务器上访问您的电脑,而不是直接在您的本地电...
    99+
    2023-10-27
    腾讯 用手 远程控制
  • 亚马逊服务器怎么远程控制手机电脑端操作
    首先,打开Amazon的远程控制页面,输入远程控制账号的密码,进入远程控制设置页面。 在远程控制设置页面中,可以设置多个账号的远程控制,以便在不同的设备上控制同一个账号的设备。 在设置中,可以选择要控制的设备和要使用的控制方式,例如控制电...
    99+
    2023-10-27
    亚马逊 远程控制 操作
  • 腾讯云服务器远程控制怎么用不了手机操作系统
    首先,我们需要安装一个云服务器管理平台,这个平台可以在各种云服务器上进行安装,如AWS、Azure、Google Cloud等。我们需要选择一个合适的管理平台,可以选择Windows系统的管理平台或者Linux系统的管理平台,并将其连接到云...
    99+
    2023-10-28
    腾讯 远程控制 操作系统
  • Android编程中File文件常见存储与读取操作的示例分析
    这篇文章给大家分享的是有关Android编程中File文件常见存储与读取操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:MainActivity文件代码如下:package exa...
    99+
    2023-05-30
    android file
  • Android编程基于距离传感器控制手机屏幕熄灭的方法详解
    本文实例讲述了Android编程基于距离传感器控制手机屏幕熄灭的方法。分享给大家供大家参考,具体如下:在现实生活中,打电话的时候手机挨着自己的头,屏幕会熄灭,这是为了不让自己的头按到什么手机键~这个功能可以使用距离传感器来实现P-Senso...
    99+
    2023-05-30
    android 距离传感器 roi
  • Python编写运维进程文件目录操作实用脚本示例
    目录1. 执行外部程序或命令2. 文件和目录操作(命名、删除、拷贝、移动等)3. 创建和解包归档文件参考Python在很大程度上可以对shell脚本进行替代。笔者一般单行命令用she...
    99+
    2024-04-02
  • 【100天精通python】Day36:GUI界面编程_Tkinter高级功能操作和示例
    目录  专栏导读  一、GUI 高级功能 1 自定义主题和样式 2 实现拖放功能  3 多线程和异步编程 二、实战项目 1. 待办事项应用 2. 图像查看器 3. 文本编辑器 4 添加动画和过渡效果  5 多界面和多线程示例    专栏...
    99+
    2023-09-13
    python 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作