Thursday, February 20, 2025

用QPython实现使用android的自动化操作[AutoPy]

Qpython AutoPy.py作者记录

使用方法:

1.安装我的AutoPy.apk

1.1 授权无障碍辅助权限(重要)

1.2 授权文档读写权限(重要)

2.点击安装Dian模块

3.打开开发者选项的显示指针位置

4.测试点击,测试拖动,

1150532-20200103140724768-1082716535.png

如图则可以正常使用

qpython里面的使用方法:

在qpython中使用,第一步要导入Dian文档,该文档目前共有两个方法,一个是实现点击,一个是实现拖动的,在这两个功能的配合下可以完成大部分自动化操作

1.点击:(方法名:tap(x,y))

#第一个参数x为,点击屏幕上的x坐标

#第二个参数y为,点击屏幕上的y坐标

#使用方法为:

improt Dian#导入Dian文档

Dian.top(100,100)#点击x:100,y:100的屏幕坐标

#可以实现点击

7109acf91b354e0cd98fc9cf6866f19a1f5.png

如图所示返回执行结果

2.滑动、拖动(方法名:swipe(x1,y1,x2,y2))

#第一个参数x1为,起点屏幕上的x1坐标

#第二个参数y1为,起点屏幕上的y1坐标

#第三个参数x2为,终点屏幕上的x2坐标

#第四个参数y2为,终点屏幕上的y2坐标

#使用方法为:

improt Dian#导入Dian文档

Dian.swipe(100,100,200,200)#将坐标x:100,y:100 拖到x:200,y:200坐标

1150532-20200103143619574-59860131.png

部分android_java源代码解析:

public void onAccessibilityEvent(AccessibilityEvent event)

{

if (flag == 0)

{

flag = 1;

new Thread() {

public void run()

{

while (true)

{

//System.out.println("xxx");

try

{

String fileName = "/sdcard/AutoPy.config";

String ret = "";

FileInputStream fis = new FileInputStream(fileName);

int len = fis.available();

byte []buffer = new byte[len];

Thread.sleep(10);

fis.read(buffer);

ret = EncodingUtils.getString(buffer, "UTF-8");

fis.close();

String [] stringArr= ret.split(",");

if (stringArr[0].equals("0"))

{

System.out.println("是零模式");

GestureDescription.Builder builder = new GestureDescription.Builder();

Path p = new Path();

p.moveTo(Integer.parseInt(stringArr[1]), Integer.parseInt(stringArr[2]));//坐标

//p.lineTo(200,200);

builder.addStroke(new GestureDescription.StrokeDescription(p, 0, 50));

dispatchGesture(builder.build(), null, null);

writeTxt("/sdcard/AutoPy.config", "执行成功");

}

if (stringArr[0].equals("1"))

{

System.out.println("是一模式");

GestureDescription.Builder builder = new GestureDescription.Builder();

Path p = new Path();

p.moveTo(Integer.parseInt(stringArr[1]), Integer.parseInt(stringArr[2]));//坐标

p.lineTo(Integer.parseInt(stringArr[3]), Integer.parseInt(stringArr[4]));

builder.addStroke(new GestureDescription.StrokeDescription(p, Integer.parseInt(stringArr[5]), Integer.parseInt(stringArr[5])));

dispatchGesture(builder.build(), null, null);

writeTxt("/sdcard/AutoPy.config", "执行成功");

}

}

catch (Exception e)

{

e.printStackTrace();

//Toast.makeText("").show();

writeTxt("/sdcard/AutoPyFalse.info", e.toString());

}}

}

}.start();

}

}

这里是监控文档变化的实现

python端代码:

利用文档来实现交互通信(后期会改成本地的socket通信)

importtimedef swipe(x1,y1,x2,y2,t=1000):

f=open('/sdcard/AutoPy.config','w+')

f.write('1,'+str(x1)+','+str(y1)+','+str(x2)+','+str(y2)+','+str(t))

f.close()for i in range(10000):

o=open('/sdcard/AutoPy.config','r').read()if o=='执行成功':break

print('[AutoPy]滑动执行成功')

time.sleep(0.0023*t)deftap(x,y):

f=open('/sdcard/AutoPy.config','w+')

f.write('0,'+str(x)+','+str(y))

f.close()for i in range(10000):

o=open('/sdcard/AutoPy.config','r').read()if o=='执行成功':break

print('[AutoPy]点击执行成功')

time.sleep(0.1)

#作者sunny开始学坏

本文完(^_^)

需要AutoPy.apk文档的可以加群

 https://blog.csdn.net/weixin_39582656/article/details/110374533

No comments: