小米手机如何使用脚本,拉起要开始使用hamibot录制或投放权限框

已存档
yf3wa7ooxo · 1 个月前
第 1 条补充
·
1 个月前

允许使用 hamibot录制或投放是什么权限

第 2 条补充
·
1 个月前

如何避免在后台执行脚本时候,脚本突然不执行了,没有任何报错,感觉像是被休眠掉了

回答

Hamibot AI
1
· 1 个月前

在小米手机(MIUI系统)中使用 Hamibot 脚本拉起权限框,需完成以下步骤:


1. 开启必要权限

  • 无障碍服务
    进入 设置 > 应用管理 > Hamibot > 权限管理,开启「无障碍服务」。
    (若未开启,脚本会提示无法运行)

  • 后台弹出界面权限
    进入 设置 > 应用管理 > Hamibot > 特殊权限设置,允许「后台弹出界面」权限。


2. 请求屏幕录制权限

在脚本中调用 requestScreenCapture() 方法可触发系统权限弹窗。完整代码如下:

// 文档地址 https://docs.hamibot.com/
// 自动点击截图权限确认框(MIUI适配)
threads.start(function () {
    const check = () => {
        let activity = currentActivity().toLowerCase();
        // 识别包含"Hamibot"的权限弹窗
        if (activity.indexOf('permission') !== -1 && 
            textContains('Hamibot').exists()) {
            // 点击「允许」按钮(根据实际控件ID调整)
            let btn = id('android:id/button1').findOnce();
            if (btn) btn.click();
            return;
        }
        setTimeout(check, 500); // 每500ms检查一次
    };
    check();
});

// 请求权限
if (!requestScreenCapture()) {
    toastLog('权限获取失败');
    hamibot.exit();
}

// 关闭监控线程(权限成功后)
threads.shutDownAll();
sleep(1000); // 等待弹窗消失

// 此处添加你的业务代码
let img = captureScreen(); // 示例:截图

3. 注意事项

  • 控件适配:MIUI 的权限弹窗控件 ID 可能不同,若代码未生效,可通过 Hamibot 的「布局分析」工具(地址:https://hamibot.cn/inspector)获取最新控件信息。
  • 系统差异:若需适配其他品牌手机(如华为、OPPO),需修改 check() 函数中的文本判断条件和控件定位逻辑(参考文档中的多系统适配示例)。
  • 权限异常处理:确保设备未进入「省电模式」或「后台限制」状态,避免权限被系统强制关闭。

如果仍无法解决问题,可通过 Hamibot 控制中心(地址:https://control.hamibot.cn)提交工单或发送邮件至 support@hamibot.cn


补充回答 1

允许使用 Hamibot 进行录制或投放的权限是 Android 系统的屏幕录制权限(CAPTURE_VIDEO_OUTPUT),在 Hamibot 中通过 requestScreenCapture() 方法请求。该权限允许 Hamibot 捕获屏幕内容,用于自动化脚本的图像识别或录制操作。


关键说明

  1. 权限触发
    在脚本中调用 requestScreenCapture() 时,系统会弹出权限确认框(如“是否允许 Hamibot 录制屏幕”),用户需手动点击「允许」。

  2. 系统级权限
    该权限由 Android 系统管理,属于敏感权限,不同品牌手机的弹窗文案可能不同(如小米显示“屏幕录制权限”,华为可能提示“屏幕截图”)。

  3. 依赖基础权限
    需同时开启 Hamibot 的 无障碍服务后台弹出界面权限,否则脚本无法正常运行(参考知识库文档[2])。


代码示例(请求权限)

// 文档地址 https://docs.hamibot.com/
if (!requestScreenCapture()) {
    toastLog("未获取到屏幕录制权限,脚本退出");
    hamibot.exit();
}
// 权限获取成功后执行自动化操作
let img = captureScreen();

适配不同手机

  • 控件定位:如果自动点击权限框失败(如按钮 ID 变化),需通过 Hamibot 的「布局分析」工具(地址:https://hamibot.cn/inspector)重新获取控件 ID。
  • 系统差异:华为、OPPO 等品牌可能需要调整代码中的文本判断条件(如替换 textContains('Hamibot') 为系统弹窗中的关键词)。

如需进一步支持,可通过 Hamibot 控制中心提交工单或邮件至 support@hamibot.cn


补充回答 2

避免脚本在后台执行时因系统休眠或资源限制停止运行,需从系统权限、资源管理、代码设计三方面优化:


1. 关键权限配置

  • 忽略电池优化(省电白名单)
    进入 设置 > 电池 > 省电管理 > 选择Hamibot > 关闭“自动管理”,并勾选「始终允许」,防止系统后台限制。
    代码请求权限(需用户手动确认):

    // 文档地址 https://docs.hamibot.com/
    if (!device.isIgnoringBatteryOptimizations()) {
        alert("需要关闭电池优化", "点击确定前往设置");
        device.openBatteryOptimizationSettings();
    }
    
  • 保持唤醒(WakeLock)
    使用 device.keepOn() 保持屏幕常亮,阻止系统休眠(需保持脚本前台活跃):

    device.keepOn();
    // 脚本结束后释放唤醒锁
    device.releaseWakeLock();
    

2. 代码优化策略

  • 分段执行与休眠
    避免长时间循环,插入 sleep() 降低CPU占用:

    // 每5秒执行一次操作,降低资源消耗
    setInterval(function () {
        // 执行关键操作
        performAction();
    }, 5000);
    
  • 异常捕获与重启
    监控脚本状态并自动重启(适用于定时任务):

    // 每10秒检测脚本是否存活
    threads.start(function () {
        while (true) {
            sleep(10000);
            if (!scriptAlive()) {
                engines.execScriptFile("your_script.js");
                break;
            }
        }
    });
    

3. 系统级适配

  • 关闭系统省电限制

    • 小米(MIUI):进入 省电管理 > 选择Hamibot > 关闭“限制后台活动”
    • 华为(EMUI):进入 电池 > 应用启动管理 > 打开Hamibot的“自动管理”开关
    • OPPO/一加:进入 电池 > 省电 > 关闭“智能冻结”和“后台冻结”
  • 调整开发者选项
    启用 不锁定屏幕后台进程限制 > 无限制(开发者选项需开发者模式激活)。


4. 日志与调试

  • 启用Hamibot日志
    通过 Hamibot App 右上角日志入口查看系统级错误(如内存溢出、权限丢失),截图反馈给作者。

    • 日志定位Hamibot App > 右上角日志图标 > 查看最近日志
  • 内存管理
    避免大对象驻留(如长周期截图缓存),使用 gc() 手动触发垃圾回收:

    // 定期清理内存
    setInterval(function () {
        let img = captureScreen();
        // 使用后释放
        img.recycle();
        java.lang.System.gc();
    }, 60000);
    

5. 紧急恢复方案

若脚本意外停止,可通过以下代码强制重启:

// 监控脚本并自重启
threads.start(function () {
    let startTime = new Date().getTime();
    while (true) {
        sleep(5000);
        if (new Date().getTime() - startTime > 60000) {
            // 超时未执行,重启脚本
            engines.execScriptFile("main.js");
            hamibot.exit();
        }
    }
});

若仍无法解决
发送设备型号、Android版本、脚本功能至 support@hamibot.cn,附带 Hamibot 日志截图(通过控制中心提交工单:https://control.hamibot.cn)。

ℹ️ 本回答由 AI 生成,内容仅供参考