Пробудите Android с помощью adb или Eclipse (как раз перед отладкой)?
Как просыпаться Android с помощью adb - я хочу просыпаться (если спящий) терминал Android перед отладкой каждой новой версии приложения.
Типичный поток:
1. Я делаю некоторые изменения в Eclipse.
2. Тем временем экран выключается или нет.
3. Я запускаю "debug" и хочу, чтобы экран силы просыпался.
Я нашел метод с эмуляцией "power key", но он не включает его, а переключает состояние питания. Я не хочу добавлять дополнительный код в свое приложение. Каковы другие способы выполнения такой тривиальной задачи, пожалуйста, помогите.
Ответы
Ответ 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