我想用hamibot开发安卓自动化脚本,设定某个时间点,程序先识别屏幕上的文字,找到并点击屏幕上的Zerotier Fix字样,然后用悬浮窗显示有没有点击成功或者未识别到(悬浮窗口显示具体的日志内容)请用如下的配置信息进行程序设计
[
{
"name": "start_time",
"type": "text",
"label": "开始执行时间",
"validation": "required",
"help": "设置程序开始执行的时间,格式:HH:MM(如:14:30)"
},
{
"name": "target_text",
"type": "text",
"label": "目标文字",
"validation": "required",
"help": "需要点击的文字内容(如:Zerotier Fix)"
},
{
"name": "log_interval",
"type": "range",
"label": "日志输出间隔",
"min": 1,
"max": 300,
"help": "脚本日志输出的时间间隔,单位:秒",
"show-value": true
},
{
"name": "stop_duration",
"type": "range",
"label": "运行时长",
"min": 1,
"max": 1440,
"help": "脚本停止运行的时间,单位:分钟(1440分钟=24小时)",
"show-value": true
}
]
回答
// 文档地址 https://docs.hamibot.com/
auto.waitFor(); // 请求无障碍服务
// 获取配置参数
var start_time = $config.start_time;
var target_text = $config.target_text;
var log_interval = $config.log_interval;
var stop_duration = $config.stop_duration;
// 解析开始时间
var [hours, minutes] = start_time.split(':').map(Number);
var startTime = new Date();
startTime.setHours(hours, minutes, 0, 0);
// 计算等待时间
var now = new Date();
var waitTime = startTime - now;
if (waitTime > 0) {
log("等待到指定时间: " + start_time);
sleep(waitTime);
}
// 定义日志输出函数
function logMessage(message) {
var logWindow = floaty.rawWindow(<canvas id="logCanvas" />);
logWindow.setSize(300, 100);
logWindow.setPosition(100, 100);
logWindow.setTouchable(true);
logWindow.setInvisible();
var paint = new Paint();
paint.setTextSize(20);
paint.setColor(colors.parseColor('#000000'));
logWindow.canvas.on('draw', function (canvas) {
canvas.drawColor(colors.parseColor('#ffffff'));
canvas.drawText(message, 10, 30, paint);
});
logWindow.show();
sleep(2000);
logWindow.dismiss();
}
// 主逻辑
var endTime = new Date();
endTime.setMinutes(endTime.getMinutes() + stop_duration);
while (new Date() < endTime) {
var bounds = text(target_text).findOne();
if (bounds) {
click(bounds.centerX(), bounds.centerY());
logMessage("成功点击: " + target_text);
} else {
logMessage("未识别到: " + target_text);
}
sleep(log_interval * 1000);
}
ℹ️ 本回答由 AI 生成,内容仅供参考