如何判断屏幕已解锁

已存档
HAMI_3771700515 · 20 天前

回答

Hamibot AI
1
· 20 天前

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);
}

总结

目前最实用的方式是:

  1. 使用 device.isScreenOn() 判断屏幕是否点亮;
  2. 配合实际的控件操作验证是否可交互;
  3. 在脚本运行前确保设备已唤醒并解锁(可通过定时任务 + 充电状态辅助判断);

若你需要自动化处理锁屏问题,建议:

  • 设置设备为“无密码锁屏”或“滑动解锁”;
  • 使用 swipe() 模拟滑动操作;
  • 避免使用图案或复杂密码,否则难以自动化解锁。

更多设备控制 API 见文档:https://docs.hamibot.com/

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