使用ADB获取屏幕状态

10

我需要在我的脚本中知道设备的屏幕是否关闭。是否有使用ADB获取此类信息的简单命令?

5个回答

14

dumpsys power | grep mScreenOn


1
这是特定于某些设备范围还是仅适用于Android?它可以工作,但最好是使用grep查找mScreenOn=(在我的情况下,mScreenOn返回多个条目)。 - tomrozb
1
此命令适用于4.2及以上版本的设备,对于低版本的设备,请使用“dumpsys input_method | grep mScreenOn”。有关更多信息,请参见我在此帖子中的回答:https://dev59.com/5nvaa4cB1Zd3GeqPIdYR#21419347。 - Carlo B.
1
请注意,dumpsys是一个shell命令,而不是adb命令。剪切和粘贴答案应该是adb shell dumpsys power | grep mScreenOn。 - Bobbi Bennett
无法在我的Android 6上工作。这仅在图形数据打开或关闭时显示。如果我通过adb连接到手机并关闭屏幕,它仍然显示为屏幕已经开启。 - brunoais

12

在5.0上,看起来你需要对dumpsys power 输出执行grep操作。

Display Power: state=OFF
或者
Display Power: state=ON

2
在Moto G5+、Moto X4和三星Note 8上,我发现以下操作可行,而dumpsys power则不行(所有设备均为Marshmallow或更高版本):
adb shell dumpsys deviceidle | grep mScreenOn

产出,

mScreenOn=false

当屏幕被“锁定”时,无论是空白还是有内容,与此相反的是,

adb shell dumpsys window | grep mScreenOn

收益率,

mScreenOnEarly=false mScreenOnFully=false

仅当屏幕不显示时间等信息时才需要进行操作。

使用dumpsys deviceidle命令,以了解是否需要解锁屏幕以允许用户进行交互。


2
这对我起作用了:

adb shell dumpsys display | grep mScreenState

输出:

mScreenState=OFF

1
  • 我的手机: XiaoMi 9
    • Android版本: 10

如何使用adb检查屏幕的开/关状态?

方法1:使用mHoldingDisplaySuspendBlocker

  • 命令: adb shell dumpsys power | grep mHoldingDisplaySuspendBlocker
  • 输出:
    • mHoldingDisplaySuspendBlocker=false -> 屏幕关闭
    • mHoldingDisplaySuspendBlocker=true -> 屏幕打开

方法2:使用mWakefulness

  • 命令: adb shell dumpsys power | grep mWakefulness=
  • 输出:
    • mWakefulness=Dozing -> 屏幕关闭
    • mWakefulness=Awake -> 屏幕打开

方法三:使用nfc(如果Android有NFC模块)

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

方法四:使用service call

  • 命令: adb shell service call power 12
  • 输出:
    • 结果: Parcel(00000000 00000000 '........') -> 0 表示屏幕关闭
    • 结果: Parcel(00000000 00000001 '........') -> 1 表示屏幕打开

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接