Wake up Android with use adb or Eclipse (just before debug)?

可紊 提交于 2019-11-28 17:33:58

问题


How to wake up Android with use adb - I want to wake up (if asleep) Android terminal before debugging every new version of application.

Typical flow is: 1. I do some changes in Eclipse. 2. In the meantime screen goes off or not. 3. I run "debug" and want force screen to wake up.

I found a method with "power key" emulation but it does not turn it on but rather toggles the power state. I do not want to add extra code to my application. What are the other methods to do such trivial task, please help.


回答1:


adb shell input keyevent KEYCODE_WAKEUP

As described here, this wakes up the device. Behaves somewhat like KEYCODE_POWER but it has no effect if the device is already awake.

To toggle sleep/wake with one command you can issue

adb shell input keyevent KEYCODE_POWER



回答2:


Just use :

adb shell input keyevent 26



回答3:


Here's what I came up with:

adb shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb shell input keyevent 26

This will first check to see if the screen is on. If it isn't, it will emulate the power key, which will turn on the device's screen.




回答4:


You can check device's current power state (including display) via adb with dumpsys power command and send the power key press event only if the display is off. The easier solution would be disabling the display timeout altogether "while connected to USB" in the Developer options.




回答5:


you could also add the following flags to your onCreate() in your main activity:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

This way your device should wake up when it is loaded onto the device through Eclipse.




回答6:


if you execute adb shell input keyevent KEYCODE_POWER and got Killed, you should use root user by execute su before.

sleep:(adb shell) input keyevent KEYCODE_SLEEP

wakeup:(adb shell) input keyevent KEYCODE_WAKEUP

toggle:(adb shell) input keyevent KEYCODE_POWER




回答7:


For Windows and Eclipse you can use .bat file:

@ECHO OFF
setlocal
for /f "delims= tokens=1*" %%a in ('adb shell dumpsys power ^| findstr.exe "mScreenOn="') DO (
for /f "delims== tokens=2*" %%S in ("%%a") do (
if "%%S" == "false" (goto move1) else (goto move2)
)
)

:move1
adb shell input keyevent 26
goto end

:move2
goto end

:end
exit

It will check, if screen is off it will switch the power state. To use it with Eclipse this .bat file should be used as "External tool" (just fill the path to the .bat) and linked to the project in it's properties (Builders - Import - ).




回答8:


I used the following to wake up remote devices for automated tests. If the screen isn't on, then it will press the power button followed by the menu button.

(
  cd ${platform-tools};
  ./adb shell dumpsys power | grep -i 'SCREEN_ON' >/dev/null;
  if [ $? -eq 0 ]; then
    echo "Screen is on...";
  else
    echo "Pressing buttons to wake-up...";
    # http://developer.android.com/reference/android/view/KeyEvent.html
    ./adb shell input keyevent 26; # Power
    ./adb shell input keyevent 82; # Menu
    echo "Pausing for state to settle...";
    sleep 1;
    ./adb shell dumpsys power | grep -i 'SCREEN_ON';
  fi;
  echo '---';
  ./adb shell dumpsys power | grep -i 'SCREEN'
)



回答9:


I know that this is the opposite of what the OP requested, but I wanted to point out the definition of "truly asleep" for other readers: If adb is active, then the device is not truly asleep, since USB is on and the command prompt is running (how else is adb shell going to work?). When fully asleep, only the physical power button will wake it (unless other buttons are selected as a wake source in the BSP). My project draws about 120ma with screen off, but only 23ma in sleep mode (disconnect USB cable). "adb shell input keyevent 26" does not work in this mode. Neither does the serial console. My test fixture does have access to the battery and external power line separately. I can toggle the power line (with battery connected) to wake it up. I also have a switched USB hub that disconnects the USB specifically for the sleep portion of the test.

I hope this can be some help to someone.



来源:https://stackoverflow.com/questions/14772619/wake-up-android-with-use-adb-or-eclipse-just-before-debug

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!