回答
Hamibot 本身没有直接提供判断“屏幕是否已解锁”的接口,因为这涉及到系统的锁屏状态,而 Android 系统出于安全考虑限制了应用对锁屏状态的直接访问。
但你可以通过以下几种方式间接判断设备是否处于解锁状态:
方法一:使用 device.isScreenOn()
// 文档地址 https://docs.hamibot.com/
if (device.isScreenOn()) {
// 屏幕是亮的,可能是解锁状态
console.log("屏幕已点亮");
} else {
console.log("屏幕未点亮(可能锁屏)");
}
注意:
device.isScreenOn()只能判断屏幕是否点亮,不能完全代表是否解锁。例如,某些手机在锁屏状态下也可以显示时间或通知(息屏显示),此时isScreenOn()返回true,但设备仍处于锁屏状态。
方法二:尝试执行需要交互权限的操作
如果脚本可以正常执行点击、滑动等操作,并且无障碍服务正在运行,则通常说明设备已经解锁。
你可以在脚本开始时添加一个简单的控件查找或点击操作来测试:
// 文档地址 https://docs.hamibot.com/
launchApp("设置"); // 尝试打开设置应用
sleep(2000);
if (text("设置").exists()) {
console.log("成功进入设置界面,设备已解锁");
} else {
console.log("无法找到设置页面,可能设备未解锁或页面未加载完成");
}
方法三:结合 device.isCharging() 和用户行为判断
一些用户会利用充电作为触发脚本运行的信号。如果你的脚本是在充电时自动启动,可以结合以下逻辑:
// 文档地址 https://docs.hamibot.com/
if (device.isScreenOn() && device.isCharging()) {
device.wakeUpIfNeeded(); // 唤醒屏幕
sleep(1000);
// 再尝试解锁(如果有密码,需另写逻辑模拟输入)
// 比如滑动解锁
swipe(500, 1800, 500, 1000, 500);
}
总结
目前最实用的方式是:
- 使用
device.isScreenOn()判断屏幕是否点亮; - 配合实际的控件操作验证是否可交互;
- 在脚本运行前确保设备已唤醒并解锁(可通过定时任务 + 充电状态辅助判断);
若你需要自动化处理锁屏问题,建议:
- 设置设备为“无密码锁屏”或“滑动解锁”;
- 使用
swipe()模拟滑动操作; - 避免使用图案或复杂密码,否则难以自动化解锁。
更多设备控制 API 见文档:https://docs.hamibot.com/
ℹ️ 本回答由 AI 生成,内容仅供参考