auto.waitFor(); // 等待无障碍服务
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
sleep(1000);
log('开始截屏');
const img = captureScreen();
toastLog('开始识别');
const res = ocr.recognizeText(img);
toastLog(res);
hamibot.exit();
为什么这个脚本的日志输出卡在开始截屏
回答
可能的原因是截图功能没有正确获取到屏幕图像,导致后续的 OCR 识别无法继续执行。以下是几个可能的原因和解决方法:
-
权限问题:确保已经正确授予 Hamibot 屏幕截图权限。在脚本中调用
auto.waitFor()
和requestScreenCapture()
是必要的步骤,如果用户没有授权,脚本会直接退出。 -
设备兼容性问题:某些设备可能需要额外的设置或等待时间才能正确获取截图。可以尝试增加
sleep(1000);
或者更长时间的等待,以确保截图可用。 -
截图功能故障:如果设备的截图功能出现问题,可能会导致
captureScreen()
返回的图像为空或者无效。可以尝试重启设备或重新安装 Hamibot 应用。 -
代码逻辑问题:检查是否有其他代码在
captureScreen()
之前执行,导致脚本提前退出或出现错误。 -
日志输出问题:确保
log('开始截屏');
和toastLog('开始识别');
被正确执行。如果脚本在captureScreen()
之前就退出了,这些日志可能不会显示。
建议按照以下步骤进行排查:
- 确保已经正确授予 Hamibot 屏幕截图权限。
- 在
captureScreen()
之前添加更多的调试信息,例如log('准备截屏');
,以确认脚本是否执行到该步骤。 - 尝试增加
sleep(2000);
或者更长时间的等待,以确保截图可用。 - 检查设备的系统设置,确保没有阻止 Hamibot 的截图功能。