【问题标题】:Obtain screen status using ADB使用 ADB 获取屏幕状态
【发布时间】:2023-03-29 10:57:01
【问题描述】:

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

【问题讨论】:

    标签: android adb


    【解决方案1】:

    dumpsys power | grep mScreenOn

    【讨论】:

    • 这是特定于某些设备范围还是特定于 Android?它有效,但更好的是 grep for mScreenOn= (在我的情况下,mScreenOn 返回多个条目)。
    • 此命令适用于 4.2+ 设备,对于较低版本的设备,请使用 dumpsys input_method | grep mScreenOn。有关更多信息,请参阅我对这篇文章的回答:stackoverflow.com/a/21419347/1345115
    • 请注意,dumpsys 是一个 shell 命令,而不是 adb 命令。剪切和粘贴的答案是 adb shell dumpsys power | grep mScreenOn
    • 不适用于我(Android 6)。这仅显示图形数据是打开还是关闭。如果我用 adb 连接到手机并关闭屏幕,这仍然显示为屏幕正在打开。
    【解决方案2】:

    在 5.0 上,您似乎必须 grep dumpsys power 输出

    Display Power: state=OFF
    

    Display Power: state=ON
    

    【讨论】:

      【解决方案3】:

      在 Moto G5+、Moto X4 和 Samsung 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 了解是否需要解锁屏幕以允许用户交互。

      【讨论】:

        【解决方案4】:
        • 我的手机:XiaoMi 9
          • 安卓:10

        使用 adb 检查屏幕状态 ON/OFF 吗?

        方法一:使用mHoldingDisplaySuspendBlocker

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

        方法2:使用mWakefulness

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

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

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

        方法4:使用service call

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

        【讨论】:

          【解决方案5】:

          这对我有用:

          adb shell dumpsys display | grep mScreenState
          

          输出:

          mScreenState=OFF
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-02-26
            • 1970-01-01
            • 2012-06-03
            • 1970-01-01
            • 2018-01-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多