Как да разберете дали екранът е включен с ADB

Търся да разбера дали е възможно да се определи дали екранът е включен на устройство с Android с помощта на ADB. Трябва да знам това за някои тестове, които се опитвам да изпълня с помощта на monkey runner. Има ли команда на shell, която мога да въведа и по този начин да включа като част от команда monkey runner, която ще ми каже окончателно дали екранът е включен или изключен?


person Andrew T.    schedule 28.01.2014    source източник
comment
stackoverflow.com/a/19612157/1778421   -  person Alex P.    schedule 28.01.2014
comment
@AlexP. Да, така е, пропуснах това, докато търсих този отговор.   -  person Andrew T.    schedule 28.01.2014


Отговори (2)


При някои тестове открих, че използването на adb shell dumpsys power | grep mScreenOn ще работи на устройства, които имат номер на версия 4.2+

Командата, която открих, че работи на всички устройства, които съм тествал досега, е да използвам:

 adb shell dumpsys input_method | grep mScreenOn

което ще произведе нещо като:

mSystemReady=true mScreenOn=true

който можете да използвате, за да определите дали екранът е включен.

Тестван на всички емулатори на Android в диапазона 2.2 - 4.4.2, Samsung Galaxy SII (4.0.4), Samsung Galaxy Tab 8.9 (4.0.4) и Nexus 4 с CM11

Също така си струва да споменем, че на устройства преди 4.2 можете да използвате командата adb shell dumpsys power | grep mPowerState, за да получите нещо подобно:

mIsPowered=true mPowerState=3 mScreenOffTime=24970 ms
mPowerState=SCREEN_BRIGHT_BIT SCREEN_ON_BIT

и открива дали низът SCREEN_ON_BIT присъства

person Carlo B.    schedule 28.01.2014
comment
На Lollipop (Nexus 6) първата команда отговаря с mInteractive=true, когато екранът е включен, или mInteractive=false, когато е изключен; а втората команда отговаря с Display Power: state=ON, когато е включена, и state=OFF, когато екранът е изключен. - person Joe; 19.02.2015
comment
На моя телевизор Sony Bravia Android 8 dumpsys power няма mScreenOn. Но виждам mWakefulness=Asleep, когато телевизионният екран е изключен, mWakefulness=Awake, когато телевизионният екран е включен. - person Simon Kissane; 31.01.2021

Да, ако въведете:

 adb shell dumpsys power | grep mScreenOn

Това ще върне вярна или невярна стойност, която ви казва дали екранът в момента е включен или не. Трябва да изглежда така:

mScreenOn=true

Знаейки това, всичко, което трябва да направите, е да анализирате стойността true/false от резултата и да подадете командата на shell в скрипт за маймунски бегач.

Това беше тествано на устройство с Android, работещо под 4.4.2.

person Andrew T.    schedule 28.01.2014
comment
Услугата за изхвърляне може да варира в зависимост от устройството, което използвате. На моя емулатор Nexus 4 трябваше да изхвърля input_method вместо power. - person Carlo B.; 28.01.2014
comment
@CarloB. Това също е добре да знам, имам физически Nexus 4 и 5, работещи с 4.4.2, и двата ще реагират на мощността на dumpsys. Любопитен съм дали вашата команда е специфична за емулатора или за конкретна версия на android. - person Andrew T.; 29.01.2014