1.准备工具
adb驱动 –> 最好下载最新的版本,因为安卓对系统的性能有所提高,对驱动的要求也更高 ( 链接:/s/1qZqAxT6 密码:61xo)安卓手机 –>苹果手机仅仅只是驱动不同,故而程序代码会略有不同打开手机调试模式 –> 根据手机版本,请自行百度usb线接好手机和电脑 –>保证电脑的端口驱动没有问题,手机usb调试模式打开2.实现原理
获取手机的实时截图点击开始位置和结束位置计算两个点的距离计算按压时间发送按压指令重新刷新手机截图3.Python代码
#!/usr/bin/env python#coding=utf-8import osimport PIL,numpyimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimationimport timeneed_update = Truedef get_screen_images():os.system('adb shell screencap -p /sdcard/screen.png') #获取当前界面的手机截图os.system('adb pull /sdcard/screen.png') #下在当前这个截图到电脑的当前文件夹下面return numpy.array(PIL.Image.open('screen.png'))def jump_to_next(point1, point2):x1, y1 = point1; x2, y2 = point2distance = ((x2-x1)**2 + (y2-y1)**2)**0.5os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*2.00)))def on_click(event, coor=[]): #[(x1,y1),(x2,y2)]coor.append((event.xdata, event.ydata))if len(coor) == 2:jump_to_next(coor.pop(), coor.pop())need_update = Truedef update_screen(frame): #更新照片global need_updateif need_update:time.sleep(1)axes_image.set_array()need_update = Falsereturn axes_image,figure = plt.figure() #创建一个空白的图片对象axes_image = plt.imshow(get_screen_images(),animated=True) #把获取的照片画在坐标轴上figure.canvas.mpl_connect('button_press_event', on_click)ani = FuncAnimation(figure, update_screen, interval=50, blit=True)plt.show()
注意:
- func():返回的结果是值
- func:返回的是对象
模块在import后,如果显示错误,请按照你习惯的方式进行必要的安装
import os :导入系统模块,以方便电脑可以操控手机import PIL :导入图像处理标准库,以方便操作图片import numpy:导入numpy模块,可用来存储和处理大型矩阵import matplotlib:导入科学计算库,达到快速计算的效果import time:导入时间函数库,以方便延迟操作
4.操作说明
运行Python程序在程序生成的图片中,用鼠标点击起始位置和结束位置手机客户端会发现跳一跳的外挂已经开始执行了~