UiDevice 中的: isScreenOn 方法:只能判断屏幕是亮着的还是关着的。屏幕锁屏时 isScreenOn 还是返回 true wakeUp 方法:只能把屏幕唤醒,亮起,测试过并不能解锁
而我现在想做这样一件事: 1、我想判断屏幕是否是锁屏的,除了判断桌面元素外有没有更好的方法? 2、如何解锁屏幕,因为各款手机的差别,并不是所有的手机都是向上或者向下滑动解锁屏幕,所以用 swipe 滑动感觉不是很通用?
uiautomator2.0 的话,直接调用 android api 获取锁屏状态吧。 解锁也应该有相关的 api,参考 appium。具体你可以百度 google 一下。
#1 楼 @sziitash appium 解锁不是用 UIAutomator 的,而是直接运行一个 apk 来解锁。
#2 楼 @chenhengjie123 请教下您有没有什么比较好的方法不呢?
我的笨办法是检查若是熄屏,就暂停脚本执行,待人工解锁后再继续执行。 当然还可以把在开发者选项中设置成 “充电时屏幕不会休眠”。
#2 楼 @chenhengjie123 可是 UIAutomator 2.0 其实就是一个 apk 来的。
#3 楼 @lynnfang0917 #5 楼 @sziitash 解锁 apk 的核心代码在这里:https://github.com/appium/unlock_apk/blob/master/src/io/appium/unlock/Unlock.java
我对 instrumentation 和 uiautomatior 2.0 不是太熟悉,不确定是否也能用到 uiautomator 2.0 中。你们可以试试。
#6 楼 @chenhengjie123 赞,谢谢分享。
#6 楼 @chenhengjie123 嗯,谢谢,我看一下
Process p = Runtime.getRuntime().exec("dumpsys window"); InputStream is = p.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String sta = ""; while ((sta = reader.readLine()) != null) { if (sta.contains("mShowingLockscreen=true")) { //解锁动作 } }