如何通过ADB锁定Android屏幕?

Pur*_*ane 47 android adb screen-lock

有没有办法通过ADB锁定Android屏幕?

我找到了在apk中锁定显示的方法,但是我想通过ADB从PC锁定屏幕,以模拟显示超时,而不必等待超时.

是否有可能做到这一点?

谢谢,黛安

Pur*_*ane 67

很酷,我刚发现KEYCODE_POWER这是26.

所以通过发送:

adb shell input keyevent 26
Run Code Online (Sandbox Code Playgroud)

如果屏幕解锁,它会锁定屏幕.如果屏幕已锁定,则会唤醒设备.

我的猜测是确保屏幕被锁定(关闭)的唯一方法是解锁(我们使用keyevent 82(菜单),然后使用电源按钮keyevent锁定它.有人知道这是否属实?


Res*_*ue9 16

Michael R. Hines给出了可以说是最简单的解决方案.但是,以下行在Android的更高版本中没有用.

adb shell input keyevent 82 # unlock
Run Code Online (Sandbox Code Playgroud)

我已经使用我想要唤醒的单个设备(Tablet)的坐标更新了shell脚本.我的平板电脑不支持锁屏事件的方向更改,因此值始终有效,因为锁屏始终处于横向状态.如果您需要方向更改检测,只需选择正确的坐标以用于方向,就可以使用简单的if/then/else.

#!/bin/bash
if [ "$(adb shell dumpsys power | grep mScreenOn= | grep -oE '(true|false)')" == false ] ; then
    echo "Screen is off. Turning on."
    adb shell input keyevent 26 # wakeup
    adb shell input touchscreen swipe 930 380 1080 380 # unlock
    echo "OK, should be on now."
else 
    echo "Screen is already on."
    echo "Turning off."
    adb shell input keyevent 26 # sleep
fi
Run Code Online (Sandbox Code Playgroud)


Mic*_*nes 10

这是一个单一的bash脚本中的全部内容,它检查屏幕是否实际开启,然后唤醒一次性解锁屏幕:

if [ "$(adb shell dumpsys power | grep mScreenOn= | grep -oE '(true|false)')" == false ] ; then
    echo "Screen is off. Turning on."
    adb shell input keyevent 26 # wakeup
    adb shell input keyevent 82 # unlock
    echo "OK, should be on now."
else 
    echo "Screen is already on."
fi
Run Code Online (Sandbox Code Playgroud)


Jak*_*cki 6

你已经找到了解决方案,但我还是会把这些代码放在这里供参考.

您可以做的是注入事件以"按下"电源按钮两次.如果您不知道设备的状态(显示开/关),请检查屏幕当前是打开还是关闭,然后相应地按电源按钮.

这是一个简单的monkeyrunner脚本:

import re
from java.util import *
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device = MonkeyRunner.waitForConnection()       # connect to a device
device.shell("input keyevent KEYCODE_POWER")    # turn screen off (or on?)
res = device.shell("dumpsys power")             # fetch power state
m = re.search(r'.*mPowerState=([0-9]+).*', res) # parse the string
if m and int(m.group(1)) == 0:                  # screen is off
  device.shell("input keyevent KEYCODE_POWER")  # turn the screen on
Run Code Online (Sandbox Code Playgroud)


Llo*_*nic 5

除了之前的答案之外,以下是我使用 adb 锁定/解锁屏幕的操作:

adb shell input keyevent 26将锁定屏幕。
因此,如果您再次执行该命令,当屏幕关闭/锁定时,它将被打开/解锁。
adb shell input keyevent 26还将解锁屏幕(如果屏幕已锁定)。

此外,我还测试了所有命令,例如adb shell input keyevent number, 并发现adb shell input keyevent 3也可以解锁设备。

我还发现(通过测试)键 3 是主页按钮。因此,如果您有物理主页按钮(不是屏幕上的软主页按钮),您也可以使用它来解锁您的设备。