有没有办法检查Android设备屏幕是否通过adb锁定?

sar*_*ras 4 android adb

我知道PowerManager和/或KeyguardManager可以帮助我检查设备屏幕是否被锁定/解锁.有没有办法通过adb检查这个?

Bry*_*yan 6

此命令将输出与设备电源相关的所有内容:

adb shell dumpsys power
Run Code Online (Sandbox Code Playgroud)

你可以管这一个grep来获得的价值mHoldingWakeLockSuspendBlockermHoldingDisplaySuspendBlocker:

adb shell dumpsys power | grep 'mHolding'
Run Code Online (Sandbox Code Playgroud)

如果两者都为假,则显示屏关闭.

如果mHoldingWakeLockSuspendBlocker为false,并且mHoldingDisplaySuspendBlocker为true,则显示为on,但已锁定.

如果两者都为真,则显示为打开.

  • 检查mHoldingDisplaySuspendBlocker是不可靠的,例如,如果在按下电源按钮关闭显示器后立即运行它仍将返回true,则存在一些时序问题. (4认同)
  • 我看到mHoldingWakeLockSuspendBlocker在设备解锁后来回更改值几秒钟,但即使显示仍然未锁定,它也会进入WakeLock = false和Display = true. (3认同)
  • 请注意,即使这是一个公认的答案,上述方法也不会可靠 - 正如其他评论中所指出的那样.屏幕锁定时,这两个值都将为false,但是当显示屏打开时,没有任何关系. (2认同)

Ale*_* P. 6

由于Lollipop PowerManager.isInteractive()TrustManager.isDeviceLocked()是检查设备屏幕是否打开和解锁的正确方法。

他们相应的service call命令将是:

adb shell service call power 12
Run Code Online (Sandbox Code Playgroud)

adb shell service call trust 7
Run Code Online (Sandbox Code Playgroud)

这就是可以从Python代码检查它而不必找到设备的Android版本特定服务调用代码的方式-https: //gist.github.com/ktnr74/60ac7bcc2cd17b43f2cb

  • 肯定还不清楚。谁做了什么?我只是看到屏幕打开时我得到: 结果:包裹(00000000 00000001 '........') 屏幕关闭时我得到结果:包裹(00000000 00000000 '........') 。这与服务呼叫电源 12. 这就是我应该使用的? (2认同)
  • 这对我来说就像一个魅力。上述方法,标记为正确答案,并不可靠。使用@AlexP。相反。 (2认同)

Vou*_*pes 5

仅当设备具有NFC时才有效:

# returns one of: mScreenState=OFF|ON_LOCKED|ON_UNLOCKED
adb shell dumpsys nfc | grep 'mScreenState='
Run Code Online (Sandbox Code Playgroud)

关 - 屏幕关闭

ON_LOCKED - 屏幕显示锁定屏幕

ON_UNLOCKED - 设备已解锁

  • 你能相信吗,甚至还有“OFF_UNLOCKED”。在三星 S10 上看到。 (2认同)

cri*_*fan 5

在此总结其他(@Vouskopes等)答案:

  • 我的手机:XiaoMi 9
    • 安卓:10

使用adb检查屏幕锁定状态

方法一:(通用)使用mDreamingLockscreen

  • 命令:adb shell dumpsys window | grep mDreamingLockscreen
  • 输出:
    • mShowingDream=false mDreamingLockscreen=true mDreamingSleepToken=null-> 屏幕锁定
      • 无论屏幕是ONOFF
    • mShowingDream=false mDreamingLockscreen=false mDreamingSleepToken=null-> 屏幕解锁

方法2:使用nfc(如果android有NFC模块)

  • 命令:adb shell dumpsys nfc | grep 'mScreenState='
  • 输出:
    • mScreenState=OFF_LOCKED-> 屏幕关闭并锁定
    • mScreenState=ON_LOCKED-> 屏幕打开并锁定
    • mScreenState=ON_UNLOCKED-> 屏幕打开并解锁