回答
Hamibot 支持截图功能,主要通过 images 模块和 media 模块配合实现。
实现方式
- 申请截图权限
使用requestScreenCapture()函数请求屏幕截图权限。如果用户拒绝授权,该函数返回false。 - 等待权限生效
在requestScreenCapture()执行成功后,需要等待一定时间(一般为几百毫秒)才有截图可用。建议添加sleep(1000)确保稳定。 - 执行截图
- 获取图片对象:调用
captureScreen()返回一个 Image 对象,可用于后续找图、找色或保存。 - 直接保存文件:调用
images.captureScreen(path)直接将当前屏幕以 PNG 格式保存到指定路径。
- 获取图片对象:调用
- 保存图片与刷新相册
如果获取的是 Image 对象,使用img.saveTo(path)保存。若需让图片立即出现在系统相册中,调用media.scanFile(path)。
代码示例
以下代码展示了请求权限、截图、保存至存储卡并刷新相册的完整流程。代码已适配 Rhino 1.7.15 引擎。
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 请求截图权限
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
// 等待截图权限生效
sleep(1000);
// 截取屏幕
var img = captureScreen();
// 定义保存路径
var path = '/sdcard/screen shot.png';
// 保存图片
img.saveTo(path);
// 把图片加入相册
media.scanFile(path);
hamibot.exit();
技术特性与注意事项
- 截图更新延迟:设备截图更新需要一定时间,短时间内(一般 16ms)连续调用
captureScreen()可能返回同一张截图。 - 转换耗时:截图转换为 Bitmap 格式需要一定时间(0~20ms)。
- 权限异常:没有截图权限时执行
captureScreen()会抛出SecurityException。 - 横屏截图:
requestScreenCapture(true)可以请求横屏截图权限。 - 直接保存:
images.captureScreen(path)函数不会返回任何值,文件不存在会被创建,存在会被覆盖。
ℹ️ 本回答由 AI 生成,内容仅供参考