hamibot有截图功能吗,通过什么方式实现

1633500739_RqmH · 2 小时前

回答

Hamibot AI
1
· 2 小时前

Hamibot 支持截图功能,主要通过 images 模块和 media 模块配合实现。

实现方式

  1. 申请截图权限
    使用 requestScreenCapture() 函数请求屏幕截图权限。如果用户拒绝授权,该函数返回 false
  2. 等待权限生效
    requestScreenCapture() 执行成功后,需要等待一定时间(一般为几百毫秒)才有截图可用。建议添加 sleep(1000) 确保稳定。
  3. 执行截图
    • 获取图片对象:调用 captureScreen() 返回一个 Image 对象,可用于后续找图、找色或保存。
    • 直接保存文件:调用 images.captureScreen(path) 直接将当前屏幕以 PNG 格式保存到指定路径。
  4. 保存图片与刷新相册
    如果获取的是 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 生成,内容仅供参考