在做自动化脚本中,很多app都会自动检测是否开启手机调试模式,是否root,甚至有的还会检测是否开启了无障碍。今天给大家介绍一种不需开启debug模式,不需root,不需开启无障碍的自动化脚本方案。

一、USB HID实现自动化脚本的原理

USB hid的原理比较简单,简单来说就是用一个USB硬件来模拟鼠标和键盘,这个USB硬件相当于是一个集成了鼠标和键盘的外置硬件(类比我们的USB鼠标和USB键盘),但实际并没有鼠标滑轮和键盘。这个USB硬件和手机通信,手机上的自动化脚本会发送指令给USB硬件,让USB硬件来执行点击和按键等操作。

二、实现过程

注册冰狐智能辅助账号

由于冰狐智能辅助可以直接支持各种USB HID,不需要额外安装其他app,所以我们使用冰狐智能辅助来写USB HID的脚本,使用的是js,所以需要先去冰狐官网注册一个账号才能写后续的代码。

查看USB HID开发文档

冰狐的USB HID文档非常简单,就三个函数UsbClientconnectsend,有一点要注意,冰狐提供的是通用USB通信接口,可以和任意USB硬件对接。在发送数据时发送的是字符串或者整数,下一节我们将详细介绍具体如何和USB硬件通信

手机和USB硬件通信

可以直接实现点击,滑动,back,home,找图,文字识别等等很多功能。废话不多说,直接给出可以运行的js代码如下:


function main() {
    var usb = new UsbClient();
    var b = usb.connect();
    console.log('connect:', b);
    if (b) {
        usbHome(usb);
    }
    console.log('end')
}

function usbClick(usb, x, y, duration) {
    if (null == duration) {
        duration = 200
    }
    usbMouseMove(usb, x, y);
    sleep(duration);
    usbMouseUp(usb);
}

function usbSwipe(usb, x1, y1, x2, y2, duration) {
    if (null == duration) {
        duration = 200
    }
    var cmd = `f${x1},${y1},${x2},${y2},${duration}`;
    console.log('cmd:' + cmd)
    var ret = usb.send(cmd)
    console.log('send ret:', ret)
}

function usbHome(usb) {
    usbKeyDown(usb, 135, 40);
    sleep(100)
    usbKeyUp(usb);
}

function usbBack(usb) {
    usbKeyDown(usb, 131, 42);
    sleep(100)
    usbKeyUp(usb);
}

function usbRecentApps(usb) {
    usbKeyDown(usb, 4, 43);
    sleep(100)
    usbKeyUp(usb);
}

function usbCopy(usb) {
    usbKeyDown(usb, 1, 6);
    sleep(100)
    usbKeyUp(usb);
}

function usbPaste(usb) {
    usbKeyDown(usb, 1, 25);
    sleep(100)
    usbKeyUp(usb);
}

function usbCut(usb) {
    usbKeyDown(usb, 1, 27);
    sleep(100)
    usbKeyUp(usb);
}

function usbSelectAll(usb) {
    usbKeyDown(usb, 1, 4);
    sleep(100)
    usbKeyUp(usb);
}

function usbKeyDown(usb, modifier, keyCode) {
    var ret = usb.send(`d${modifier},${keyCode}`)
    console.log('send ret:', ret)
}

function usbKeyUp(usb) {
    var ret = usb.send('u')
    console.log('send ret:', ret)
}

function usbMouseMove(usb, x, y) {
    x = parseInt(x * 10000 / rsScreenWidth);
    y = parseInt(y * 10000 / rsScreenHeight);
    var cmd = `e${x},${y}`;
    console.log('cmd:' + cmd)
    var ret = usb.send(cmd)
    console.log('send ret:', ret)
}

function usbMouseUp(usb) {
    var cmd = 'v';
    console.log('cmd:' + cmd)
    var ret = usb.send(cmd)
    console.log('send ret:', ret)
}

三、总结

本文介绍了一种超低成本的USB HID实现自动化脚本方案,并给出了详细源码,如果大家有什么问题,可以直接在评论区和我交流,谢谢!

Logo

一站式 AI 云服务平台

更多推荐