Подтвердить что ты не робот

Пробудите Android с помощью adb или Eclipse (как раз перед отладкой)?

Как просыпаться Android с помощью adb - я хочу просыпаться (если спящий) терминал Android перед отладкой каждой новой версии приложения.

Типичный поток: 1. Я делаю некоторые изменения в Eclipse. 2. Тем временем экран выключается или нет. 3. Я запускаю "debug" и хочу, чтобы экран силы просыпался.

Я нашел метод с эмуляцией "power key", но он не включает его, а переключает состояние питания. Я не хочу добавлять дополнительный код в свое приложение. Каковы другие способы выполнения такой тривиальной задачи, пожалуйста, помогите.

4b9b3361

Ответ 1

adb shell input keyevent KEYCODE_WAKEUP

Как описано здесь, это пробуждает устройство. Ведёт себя как KEYCODE_POWER, но он не действует, если устройство уже проснулось.

Для переключения режима сна/пробуждения с помощью одной команды вы можете выпустить

adb shell input keyevent KEYCODE_POWER

Ответ 2

Просто используйте:

adb shell input keyevent 26

Ответ 3

Вот что я придумал:

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

Сначала проверьте, включен ли экран. Если это не так, он будет эмулировать ключ питания, который включает экран устройства.

Ответ 4

вы также можете добавить следующие флагов в свой onCreate() в своем основном действии:

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);

Таким образом ваше устройство должно проснуться, когда оно загрузится на устройство через Eclipse.

Ответ 5

Вы можете проверить состояние питания устройства (включая дисплей) через adb с помощью команды dumpsys power и отправить событие нажатия клавиши питания, только если дисплей выключен. Более простым решением было бы отключить тайм-аут отображения вообще "при подключении к USB" в настройках разработчика.

Ответ 6

Для Windows и Eclipse вы можете использовать .bat файл:

@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

Он будет проверять, если экран выключен, он переключит состояние питания. Чтобы использовать его с Eclipse, этот .bat файл следует использовать как "Внешний инструмент" (просто заполните путь к .bat) и связанный с проектом в нем свойствами (Builders - Import -).

Ответ 7

Я использовал следующее, чтобы разбудить удаленные устройства для автоматизированных тестов. Если экран не горит, тогда он нажимает кнопку питания, а затем кнопку меню.

(
  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'
)

Ответ 8

Я знаю, что это противоположность тому, что запросил ОП, но я хотел указать на определение "по-настоящему спящего" для других читателей: Если adb активен, значит, устройство не спит, так как USB включен и запускается командная строка (как еще работает оболочка adb?). Когда вы полностью спите, только физическая кнопка питания разбудит его (если в BSP не выбраны другие кнопки в качестве источника бодрствования). Мой проект составляет около 120 мс с выключенным экраном, но только в режиме ожидания (отключите USB-кабель). msgstr "в этом режиме не работает". Также не используется последовательная консоль. Мой испытательный прибор имеет доступ к батарее и внешней линии электропитания отдельно. Я могу переключить линию электропитания (с подключенной батареей), чтобы разбудить ее. У меня также есть коммутируемый USB-концентратор, который отключает USB специально для части ожидания теста.

Надеюсь, это может помочь кому-то.

Ответ 9

если вы выполните adb shell input keyevent KEYCODE_POWER и получил Killed, вы должны использовать пользователя root, выполнив su раньше.

сон: (adb shell) input keyevent KEYCODE_SLEEP

будильник: (adb shell) input keyevent KEYCODE_WAKEUP

переключения: (adb shell) input keyevent KEYCODE_POWER