适用于Auto.js、AutoX.js
效果
步骤:
- 亮屏
- 呼出解锁UI
- 解锁
-
亮屏:
//唤醒设备。包括唤醒设备CPU、屏幕等。可以用来点亮屏幕。
device.wakeUp()
-
呼出解锁UI:
亮屏后模拟向上滑动,进入到输入密码或者九宫格解锁页面
注意:小米手机:swipe滑动时间取201-230,如200,300等值无法滑动出解锁页面
/*
滑出密码UI
从距离手机屏幕底部1/5处滑动到距离手机屏幕顶部1/5处
*/
swipe(200, device.height / 5 * 4, 400, device.height / 5, 201)
/*
接口解析
swipe(x1, y1, x2, y2, duration)
x1 {number} 滑动的起始坐标的x值
y1 {number} 滑动的起始坐标的y值
x2 {number} 滑动的结束坐标的x值
y2 {number} 滑动的结束坐标的y值
duration {number} 滑动时长,单位毫秒
模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。
一般而言,只有滑动过程中被其他事件中断才会滑动失败。
*/
-
解锁
1.密码解锁
按密码顺序点击数字按钮输入密码即可解锁
/**
* 数字密码解锁
*/
function unlockNumber() {
var password = data.pwd //手机密码
//循环点击数字
for (var i = 0; i < password.length; i++) {
var p = text(password[i].toString()).findOne();
p.click();
sleep(100);
}
toastLog("解锁")
}
2.九宫格解锁
获取九宫格全部9个点的坐标,再根据滑动顺序利用滑动函数依次滑动,即可解锁。
但是9个点的坐标无法获取,不同型号手机的位置也可能不同。那么可以把九宫格中9个点的坐标保存到配置文件,使用时读配置文件中的坐标。
优化一下,只保存1(左上角)和9(右下角)两个点,使用时根据这两个坐标计算出全部9个点的坐标。
如何获取手机上某一点的具体坐标:
进入手机设置-开发者选项-指针位置,置为开启状态
可以看到下图中最上面出现了一排坐标显示,这时候点击屏幕就会显示点击的位置了,在锁屏界面点击1和9,并记录坐标。
有了9个点的坐标,通过滑动函数即可解锁
/*
gesture(duration, [x1, y1], [x2, y2], ...)
duration {number} 手势的时长
[x, y] ... 手势滑动路径的一系列坐标
模拟手势操作。例如gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)到(500, 500)到(500, 100)的手势操作,时长为2秒。
*/
首先计算9个点的坐标
//1和9用于定位九宫格位置
var one = data.one
var nine = data.nine
var xStart = one[0]
var xEnd = nine[0]
var yStart = one[1]
var yEnd = nine[1]
var dx = (xEnd - xStart) / 2
var dy = (yEnd - yStart) / 2
var pwdPoints = []
//计算出9个点的坐标
for (let index = 0; index < 9; index++) {
pwdPoints.push([xStart + index % 3 * dx, yStart + parseInt(index / 3) * dy])
}
然后将滑动顺序对应的密码生成坐标数组。
//根据解锁密码按顺序构造路径点数组
var pwdArray = []
for (var i = 0; i < data.pwd.length; i++) {
pwdArray.push(pwdPoints[parseInt(data.pwd[i].toString()) - 1])
}
调用滑动函数,在2秒内滑动经过所有点,完成解锁。
//滑动解锁
gesture(2000, pwdArray)
完整项目:Github
脚本交流QQ频道:hrit3j3np5