autojs-shell-sendevent-点击

838 阅读2分钟

牙叔教程 简单易懂

前提

使用shizuku激活autojs, 使autojs有adb权限, 或者手机root

代码

let 按下 = `0003 003a 00000001
0003 0035 000001F4
0003 0036 000003E8
0000 0002 00000000
0001 014a 00000001
0000 0000 00000000`;
let 抬起 = `0003 0035 000001F4
0003 0036 000003E8
0000 0002 00000000
0001 014a 00000000
0000 0000 00000000`;
let lines = 按下 + "\n" + 抬起;
let adbCheck = $shell.checkAccess("adb");
if (!adbCheck) {
    console.log("没有adb权限, 请先使用shizuku激活autojs的adb权限");
    exit();
} else {
    console.log("已有adb权限");
}
$shell.setDefaultOptions({ adb: true });

/* -------------------------------------------------------------------------- */
lines = lines.split("\n");
var len = lines.length;
let cmds = [];
for (var i = 0; i < len; i++) {
    let line = lines[i];
    line = line.replace(/.*event5: /, "");
    let arr = line.split(" ");
    let type = arr[0];
    let code = arr[1];
    let value = arr[2];
    // 转十进制
    type = parseInt(type, 16);
    code = parseInt(code, 16);
    value = parseInt(value, 16);
    let cmd = "sendevent /dev/input/event5 " + type + " " + code + " " + value;
    cmds.push(cmd);
}
// 一次性执行多条命令
let res = cmds.join(" && ");
log(cmds.join("\n"));
$shell(res);
log("111");

按下事件

let 按下 = `0003 003a 00000001
0003 0035 000001F4
0003 0036 000003E8
0000 0002 00000000
0001 014a 00000001
0000 0000 00000000`;

一共六行

  1. 手指压力
  2. x坐标
  3. y坐标
  4. 一个点的信息的结尾
  5. 按下
  6. 一次事件的结尾

第一行

0003 003a 00000001
  • 0003 表示这是一个abs事件, 也就是触摸的坐标事件,
  • 003a 表示触摸事件中的 ABS_MT_PRESSURE(手指压力) 指令
  • 00000001 表示手指压力大小的值

三个字段的排序是

  1. 事件名

抬起事件

0003 0035 000001F4
0003 0036 000003E8
0000 0002 00000000
0001 014a 00000000
0000 0000 00000000

一共五行

  1. x坐标
  2. y坐标
  3. 一个点的信息的结尾
  4. 按下
  5. 一次事件的结尾

环境

设备: 小米11pro
Android版本: 12
雷电模拟器:9.0.17
Android版本: 9
Autojs版本: 9.2.13

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

微信公众号 牙叔教程