自动发帖软件
标题:
安卓脚本HID节点查找完整方法示例
[打印本页]
作者:
发帖软件
时间:
5 小时前
标题:
安卓脚本HID节点查找完整方法示例
安卓脚本HID节点查找完整方法示例
3.png
(580.3 KB, 下载次数: 0)
5 小时前
上传
// ==================== HID 节点查找完整方法示例 ====================
// 基于 查找节点_HID.js 的方法演示
// 🍎交流QQ群:711841924(群)
// 🍎交流QQ群:528816639 (安卓内测群)
/**
* 封装的节点查找函数
* @param {Object} 查找 - hid.nodeSearch()返回的节点集合对象
* @param {Boolean} 是否点击 - 是否执行点击操作
* @param {Object} 节点返回 - 用于返回结果的容器对象
* @returns {Boolean} 查找是否成功
*/
function 查找节点_HID(查找, 是否点击, 节点返回) {
try {
// 初始化返回对象
节点返回.数量 = 0;
节点返回.数组 = null;
节点返回.返回信息 = null;
// 增强的安全检查
if (!查找 || typeof 查找 === 'undefined' || 查找 === null) {
return false;
}
// 检查是否有length方法并且可以调用
if (typeof 查找.length !== 'function') {
return false;
}
var a = 0;
try {
a = 查找.length();
} catch (lenErr) {
console.log("获取节点长度出错:", lenErr);
return false;
}
if (a <= 0) {
return false;
}
节点返回.数量 = a;
节点返回.数组 = 查找;
// 正序:获取第一个节点(索引0)
let nodeObj = null;
try {
nodeObj = 查找.getNode(0);
} catch (nodeErr) {
console.log("获取节点对象出错:", nodeErr);
return false;
}
if (!nodeObj) {
return false;
}
节点返回.返回信息 = nodeObj;
if (是否点击) {
let 矩形区域 = null;
try {
矩形区域 = nodeObj.getBounds();
} catch (boundsErr) {
console.log("获取节点边界出错:", boundsErr);
return false;
}
if (!矩形区域) {
return false;
}
let x = 矩形区域.getLeft();
let y = 矩形区域.getTop();
let x1 = 矩形区域.getRight();
let y1 = 矩形区域.getBottom();
let 随机x, 随机y;
if ((x1 - x) >= 20 && (y1 - y) >= 20) {
let minX = Math.max(x + 10, 0);
let maxX = Math.max(x1 - 10, 0);
let minY = Math.max(y + 10, 0);
let maxY = Math.max(y1 - 10, 0);
随机x = 取随机数(minX, maxX);
随机y = 取随机数(minY, maxY);
} else {
let 坐标返回 = String(nodeObj.getCenterPoint());
let coordArr = 坐标返回.split(',');
随机x = parseFloat(coordArr[0]);
随机y = parseFloat(coordArr[1]);
}
// 使用原有的点击模式函数
点击模式(随机x, 随机y, 设定模式);
}
return true;
} catch (e) {
console.log("查找节点_HID出错:", e);
节点返回.数量 = 0;
节点返回.数组 = null;
节点返回.返回信息 = null;
return false;
}
}
// ==================== 示例演示 ====================
// 示例1: 点击"通知与状态栏"菜单项
function 示例1_点击通知与状态栏() {
printl("\n===== 示例1: 点击'通知与状态栏'菜单项 =====");
// 查找"通知与状态栏"节点
var nodesObj = hid.nodeSearch(3000)
.text("通知与状态栏")
.id("title")
.className("android.widget.TextView");
if (nodesObj != '' && nodesObj.length() > 0) {
printl("✓ 找到'通知与状态栏'节点");
// 获取第一个节点对象
var nodeObj = nodesObj.getNode(0);
if (nodeObj) {
printl("✓ 获取到节点对象");
// 打印节点详细信息
var nodeText = nodeObj.getText();
printl(" - 文本: " + (nodeText || "(空)"));
printl(" - 类名: " + nodeObj.getClassName());
printl(" - 可点击: " + nodeObj.isClickable());
// 获取节点中心点坐标
var centerPoint = nodeObj.getCenterPoint();
var x = centerPoint.x();
var y = centerPoint.y();
printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
// 使用HID执行点击
hid.click(x, y);
printl("✓ 已成功点击'通知与状态栏'");
// 倒计时2秒
printl("→ 倒计时2秒后返回...");
sleep.second(秒=2);
// 返回上一页
printl("→ 正在返回上一页...");
hid.back();
sleep.millisecond(毫秒=1500); // 返回后等待1.5秒确保页面加载完成
printl("✓ 已返回");
return true;
} else {
printl("✗ 无法获取节点对象");
return false;
}
} else {
printl("✗ 未找到'通知与状态栏'节点");
return false;
}
}
// 示例2: 点击"显示与亮度"菜单项
function 示例2_点击显示与亮度() {
printl("\n===== 示例2: 点击'显示与亮度'菜单项 =====");
// 查找"显示与亮度"节点
var nodesObj = hid.nodeSearch(3000)
.text("显示与亮度")
.id("title")
.className("android.widget.TextView");
if (nodesObj != '' && nodesObj.length() > 0) {
printl("✓ 找到'显示与亮度'节点");
// 获取第一个节点对象
var nodeObj = nodesObj.getNode(0);
if (nodeObj) {
printl("✓ 获取到节点对象");
// 打印节点详细信息
var nodeText = nodeObj.getText();
printl(" - 文本: " + (nodeText || "(空)"));
printl(" - 类名: " + nodeObj.getClassName());
// 获取节点中心点坐标
var centerPoint = nodeObj.getCenterPoint();
var x = centerPoint.x();
var y = centerPoint.y();
printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
// 使用HID执行点击
hid.click(x, y);
printl("✓ 已成功点击'显示与亮度'");
// 倒计时2秒
printl("→ 倒计时2秒后返回...");
sleep.second(秒=2);
// 返回上一页
printl("→ 正在返回上一页...");
hid.back();
sleep.millisecond(毫秒=1500); // 返回后等待1.5秒确保页面加载完成
printl("✓ 已返回");
return true;
} else {
printl("✗ 无法获取节点对象");
return false;
}
} else {
printl("✗ 未找到'显示与亮度'节点");
return false;
}
}
// 示例3: 点击"声音与触感"菜单项
function 示例3_点击声音与触感() {
printl("\n===== 示例3: 点击'声音与触感'菜单项 =====");
// 查找"声音与触感"节点
var nodesObj = hid.nodeSearch(3000)
.text("声音与触感")
.id("title")
.className("android.widget.TextView");
if (nodesObj != '' && nodesObj.length() > 0) {
printl("✓ 找到'声音与触感'节点");
// 获取第一个节点对象
var nodeObj = nodesObj.getNode(0);
if (nodeObj) {
printl("✓ 获取到节点对象");
// 打印节点详细信息
var nodeText = nodeObj.getText();
printl(" - 文本: " + (nodeText || "(空)"));
printl(" - 类名: " + nodeObj.getClassName());
// 获取节点中心点坐标
var centerPoint = nodeObj.getCenterPoint();
var x = centerPoint.x();
var y = centerPoint.y();
printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
// 使用HID执行点击
hid.click(x, y);
printl("✓ 已成功点击'声音与触感'");
// 倒计时2秒
printl("→ 倒计时2秒后返回...");
sleep.second(秒=2);
// 返回上一页
printl("→ 正在返回上一页...");
hid.back();
sleep.millisecond(毫秒=1500); // 返回后等待1.5秒确保页面加载完成
printl("✓ 已返回");
return true;
} else {
printl("✗ 无法获取节点对象");
return false;
}
} else {
printl("✗ 未找到'声音与触感'节点");
return false;
}
}
// 示例4: 点击"桌面"菜单项
function 示例4_点击桌面() {
printl("\n===== 示例4: 点击'桌面'菜单项 =====");
// 查找"桌面"节点
var nodesObj = hid.nodeSearch(3000)
.text("桌面")
.id("title")
.className("android.widget.TextView");
if (nodesObj != '' && nodesObj.length() > 0) {
printl("✓ 找到'桌面'节点");
// 获取第一个节点对象
var nodeObj = nodesObj.getNode(0);
if (nodeObj) {
printl("✓ 获取到节点对象");
// 打印节点详细信息
var nodeText = nodeObj.getText();
printl(" - 文本: " + (nodeText || "(空)"));
printl(" - 类名: " + nodeObj.getClassName());
// 获取节点中心点坐标
var centerPoint = nodeObj.getCenterPoint();
var x = centerPoint.x();
var y = centerPoint.y();
printl("✓ 节点中心坐标: X=" + x + ", Y=" + y);
// 使用HID执行点击
hid.click(x, y);
printl("✓ 已成功点击'桌面'");
// 倒计时2秒
printl("→ 倒计时2秒后返回...");
sleep.second(秒=2);
// 返回上一页
printl("→ 正在返回上一页...");
hid.back();
sleep.millisecond(毫秒=1500); // 返回后等待1.5秒确保页面加载完成
printl("✓ 已返回");
return true;
} else {
printl("✗ 无法获取节点对象");
return false;
}
} else {
printl("✗ 未找到'桌面'节点");
return false;
}
}
// ==================== 执行示例 ====================
printl("\n========== HID 节点查找方法演示 ==========\n");
// 按顺序执行所有示例
示例1_点击通知与状态栏();
示例2_点击显示与亮度();
示例3_点击声音与触感();
示例4_点击桌面();
printl("\n===========================================\n");
printl("✓ 所有示例演示完成!");
复制代码
欢迎光临 自动发帖软件 (http://www.fatiegongju.com/)
Powered by Discuz! X3.2