求适配多设备多Android版本的通用ADB命令:获取屏幕及锁屏状态
通用ADB命令判断三星设备锁屏/亮屏/解锁状态
我刚好在多品牌多版本Android设备的自动化测试场景里踩过这个坑,针对你提到的Galaxy A5、S8、S7这些三星设备,以及Android 6.0到7.1.1的版本,分享几个经过实际验证的通用命令,能帮你快速判断设备状态:
判断设备是否处于熄屏/锁屏状态
这个命令是跨版本最稳定的,直接读取系统电源状态:
adb shell dumpsys power | grep "mScreenOn\|mInteractive"
- 若输出包含
mScreenOn=false或mInteractive=false:设备处于熄屏锁屏状态 - 若输出为
mScreenOn=true且mInteractive=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




