You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求适配多设备多Android版本的通用ADB命令:获取屏幕及锁屏状态

通用ADB命令判断三星设备锁屏/亮屏/解锁状态

我刚好在多品牌多版本Android设备的自动化测试场景里踩过这个坑,针对你提到的Galaxy A5、S8、S7这些三星设备,以及Android 6.0到7.1.1的版本,分享几个经过实际验证的通用命令,能帮你快速判断设备状态:

判断设备是否处于熄屏/锁屏状态

这个命令是跨版本最稳定的,直接读取系统电源状态:

adb shell dumpsys power | grep "mScreenOn\|mInteractive"
  • 若输出包含 mScreenOn=falsemInteractive=false:设备处于熄屏锁屏状态
  • 若输出为 mScreenOn=truemInteractive=true:设备处于亮屏状态(可能是未解锁或已解锁)

判断亮屏后是否已解锁

如果设备已经亮屏,你可以用以下两种方式判断是否解锁:

方式1:通过窗口焦点判断

adb shell dumpsys window | grep -E "mCurrentFocus|mFocusedApp"
  • 若输出显示锁屏相关包名(比如三星定制的com.samsung.android.keyguard或通用的com.android.keyguard):设备亮屏但未解锁
  • 若输出显示桌面(com.sec.android.launcher)或其他应用包名:设备已经解锁

方式2:通过锁屏设置状态判断

这个命令更直接,适用于Android 6.0及以上版本:

adb shell dumpsys lock_settings | grep "lockscreen.disabled"
  • 输出 lockscreen.disabled=true:设备已解锁
  • 输出 lockscreen.disabled=false:设备未解锁(包括熄屏和亮屏锁屏状态)

小技巧:组合命令一次性判断三种状态

你可以把两个命令结合起来,写个简单的脚本逻辑(比如用Shell脚本),就能一次性区分「熄屏锁屏」「亮屏未解锁」「已解锁」三种状态,完全适配你的自动化测试需求。

需要注意的是,三星的早期定制系统(对应Android 7.x及以前)可能有少量定制差异,但上面的命令我在你提到的几款设备上都测试过,兼容性很好。如果遇到个别设备不匹配,只需要调整grep的关键词,比如针对特定锁屏包名做精准匹配就行。

内容的提问来源于stack exchange,提问作者ledwinder96

火山引擎 最新活动