1

尝试使用mScreenOn=true或检查设备屏幕开启或关闭mPowerState=SCREEN_BRIGHT_BIT。但以下命令不适用于最新的 android 版本。它什么也没返回

以下命令在 Android 中运行良好 - 4.3 Jelly Bean

  1. 使用输入法转储系统

    adb shell dumpsys input_method | grep mScreenOn

  2. 使用电源转储系统

    adb shell dumpsys power | grep mScreenOn 或者

    adb shell dumpsys power | grep mPowerState

有没有其他方法可以在最新的 android 版本(Lollipop、Nougat、Oreo、Pie 等)上使用 adb shell 命令验证屏幕关闭或打开状态

4

3 回答 3

5

最近我遇到了同样的问题,并找到了以下解决方案。

在 dumpsys input_method 中,mInteractive 值将是“true”,用于显示 ON,“false”用于显示 OFF。

在 shell 脚本中的 Ex 用法:

screen_info=`adb shell dumpsys input_method | grep mInteractive=true`
if [[ $screen_info == *"mInteractive"* ]]
then
    echo "Screen is ON"
     #Do something
else
    echo "Screen is OFF"
    #Do something
fi
于 2015-05-26T19:27:36.627 回答
2

Android 5.0.1 – Lollipop 行为发生了变化,他们删除了日志记录 mScreenOn

试了很多次,对比dumpsys input_method文件后发现

adb shell dumpsys input_method | grep -i mActive
于 2015-05-23T10:30:21.073 回答
2

安卓的答案 - 使用 ADB 获取屏幕状态 - 堆栈内存溢出,并复制到此处:

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

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

方法一:使用mHoldingDisplaySuspendBlocker

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

方法二:使用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-> 屏幕开启(和解锁

方法四:使用service call

  • 命令:adb shell service call power 12
  • 输出:
    • Result: Parcel(00000000 00000000 '........')->0表示屏幕关闭
    • Result: Parcel(00000000 00000001 '........')->1表示屏幕开启
于 2020-02-03T10:50:31.237 回答