参考:https://www.bilibili.com/video/BV1yW411B7iv?t=5297
事前的准备:
adb驱动
手机调到开发者模式,开启USB调试
pycharm
原理
1.获取手机截图
2.点击起点,终点
3.获取坐标
4.算出距离
5.算出按压时间
6.按压松开指令
7.更新截图
实现代码如下:
import os import PIL import numpy import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import time need_update = True def get_screen_image(): os.system(\'adb shell screencap -p /storage/emulated/0/forjump/screen.jpg\') os.system(\'adb pull /storage/emulated/0/forjump/screen.jpg\') return numpy.array(PIL.Image.open(\'screen.jpg\')) def jump_to_next(point1,point2): x1,y1=point1;x2,y2 = point2 distance = ((x2-x1)**2+(y2-y1)**2)**0.5 os.system(\'adb shell input swipe 320 410 320 410 {}\'.format(int(distance*1.35))) def on_click(event,coor=[]):#绑定鼠标单击事件 global need_update coor.append((event.xdata,event.ydata)) if len(coor)==2: jump_to_next(coor.pop(),coor.pop()) need_update=True def updata_screen(frame):#刷新图片 global need_update if need_update: time.sleep(1) axes_image.set_array(get_screen_image()) need_update = False return axes_image, figure=plt.figure()#创建空白图片(画布) axes_image =plt.imshow(get_screen_image(),animated=True)#把获取图画在坐标轴 figure.canvas.mpl_connect(\'button_press_event\',on_click) ani=FuncAnimation(figure,updata_screen,interval=50,blit=True) plt.show()
结果展示:
不过好像被微信给察觉到可疑的操作了....