在做自动化脚本中,很多app都会自动检测是否开启手机调试模式,是否root,甚至有的还会检测是否开启了无障碍。今天给大家介绍一种不需开启debug模式,不需root,不需开启无障碍的自动化脚本方案。
一、蓝牙HID实现自动化脚本的原理
蓝牙hid的原理比较简单,简单来说就是用一个蓝牙硬件来模拟鼠标和键盘,这个蓝牙硬件相当于是一个集成了鼠标和键盘的外置硬件(类比我们的蓝牙鼠标),但实际并没有鼠标滑轮和键盘。这个蓝牙硬件和手机通信,手机上的自动化脚本会发送指令给蓝牙硬件,让蓝牙硬件来执行点击和按键等操作。
二、实现过程
注册冰狐智能辅助账号
由于冰狐智能辅助可以直接支持各种蓝牙HID,不需要额外安装其他app,所以我们使用冰狐智能辅助来写蓝牙HID的脚本,使用的是js,所以需要先去冰狐官网注册一个账号才能写后续的代码。
查看蓝牙HID开发文档
冰狐的蓝牙HID文档非常简单,就三个函数、、,有一点要注意,冰狐提供的是通用蓝牙通信接口,可以和任意蓝牙硬件对接。在发送数据时发送的是字符串,下一节我们将详细介绍具体如何和蓝牙硬件通信
和蓝牙硬件通信
可以直接实现点击,滑动,back,home,找图,文字识别等等很多功能。废话不多说,直接给出可以运行的js代码如下:
function main() {
var ble = new BleClient('fe2342e1-d234-fee3-aae4-fe2e342211dc', 'cf3432fb-d234-fee3-aae4-fe2e342211dc');
var ret = ble.connect();
console.log('ret:', ret)
if (1 == ret) {
bleHome(ble);
}
}
function bleRelease(ble) {
var cmd = 'v';
console.log('cmd:' + cmd)
var ret = ble.send(cmd)
console.log('send ret:', ret)
}
function bleMove(ble, x, y) {
x = parseInt(x * 10000 / rsScreenWidth);
y = parseInt(y * 10000 / rsScreenHeight);
var cmd = `e${x},${y}`;
console.log('cmd:' + cmd)
var ret = ble.send(cmd)
console.log('send ret:', ret)
}
function bleClick(ble, x, y, duration) {
x = parseInt(x * 10000 / rsScreenWidth);
y = parseInt(y * 10000 / rsScreenHeight);
if (null == duration) {
duration = 200
}
var cmd = `c${x},${y},${duration}`;
console.log('cmd:' + cmd)
var ret = ble.send(cmd)
console.log('send ret:', ret)
}
// curvable为1表示模拟真人曲线滑动,0表示直线滑动,默认为1.
function bleSwipe(ble, x1, y1, x2, y2, duration, curvable) {
x1 = parseInt(x1 * 10000 / rsScreenWidth);
y1 = parseInt(y1 * 10000 / rsScreenHeight);
x2 = parseInt(x2 * 10000 / rsScreenWidth);
y2 = parseInt(y2 * 10000 / rsScreenHeight);
if (null == duration) {
duration = 500;
}
if (null == curvable) {
curvable = 1;
}
var cmd = `m${x1},${y1},${x2},${y2},${duration},${curvable}`;
console.log('cmd:' + cmd)
var ret = ble.send(cmd)
console.log('send ret:', ret)
}
function bleSelectAll(ble) {
var ret = ble.send('s')
console.log('send ret:', ret)
}
function bleCopy(ble) {
var ret = ble.send('o')
console.log('send ret:', ret)
}
function bleCut(ble) {
var ret = ble.send('t')
console.log('send ret:', ret)
}
function blePaste(ble) {
var ret = ble.send('p')
console.log('send ret:', ret)
}
function bleHome(ble) {
var ret = ble.send('h')
console.log('send ret:', ret)
}
function bleBack(ble) {
var ret = ble.send('b')
console.log('send ret:', ret)
}
三、总结
本文介绍了一种超低成本的蓝牙HID实现自动化脚本方案,并给出了详细源码,如果大家有什么问题,可以直接在评论区和我交流,谢谢!