para - ¿Activar Android con el uso de adb o Eclipse(justo antes de la depuración)?
consola adb (9)
Cómo activar Android con use adb: quiero despertar (si está dormido) el terminal Android antes de depurar cada nueva versión de la aplicación.
El flujo típico es: 1. Hago algunos cambios en Eclipse. 2. Mientras tanto la pantalla se apaga o no. 3. Ejecuto "depurar" y quiero forzar la pantalla para despertar.
Encontré un método con emulación de "tecla de encendido" pero no lo enciende sino que cambia el estado de encendido. No quiero agregar código extra a mi aplicación. ¿Cuáles son los otros métodos para hacer una tarea tan trivial, por favor ayuda?
Esto es lo que se me ocurrió:
adb shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb shell input keyevent 26
Esto primero verificará si la pantalla está encendida. Si no lo es, emulará la tecla de encendido, que encenderá la pantalla del dispositivo.
Para Windows y Eclipse puedes usar el archivo .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
Verificará, si la pantalla está apagada, cambiará el estado de alimentación. Para usarlo con Eclipse, este archivo .bat debe usarse como "Herramienta externa" (solo debe completar la ruta al archivo .bat) y vincularse al proyecto en sus propiedades (Builders - Import -).
Puede verificar el estado de energía actual del dispositivo (incluida la pantalla) a través de adb con el comando dumpsys power
y enviar el evento de presión de la tecla de encendido solo si la pantalla está apagada. La solución más sencilla sería desactivar el tiempo de espera de la pantalla por completo "mientras está conectado a USB" en las opciones del Desarrollador.
Sé que esto es lo opuesto a lo que solicitó el OP, pero quería señalar la definición de "realmente dormido" para otros lectores: si adb está activo, entonces el dispositivo no está realmente dormido, ya que el USB está encendido y el comando el indicador se está ejecutando (¿de qué otra manera funcionará el shell de adb?). Cuando está completamente dormido, solo el botón de encendido físico lo activará (a menos que se seleccionen otros botones como fuente de activación en el BSP). Mi proyecto consume aproximadamente 120 mA con la pantalla apagada, pero solo 23 m en modo de suspensión (desconecte el cable USB). "adb shell input keyevent 26" no funciona en este modo. Tampoco la consola serial. Mi dispositivo de prueba tiene acceso a la batería y la línea de alimentación externa por separado. Puedo alternar la línea de alimentación (con la batería conectada) para activarlo. También tengo un concentrador USB conmutado que desconecta el USB específicamente para la parte inactiva de la prueba.
Espero que esto pueda ser de alguna ayuda para alguien.
Si ejecuta adb shell input keyevent KEYCODE_POWER
y se Killed
, debe usar el usuario root ejecutando su
antes.
sleep: (adb shell) input keyevent KEYCODE_SLEEP
activación: (adb shell) input keyevent KEYCODE_WAKEUP
toggle: (adb shell) input keyevent KEYCODE_POWER
Solo usa :
adb shell input keyevent 26
También puede agregar las siguientes banderas a su onCreate()
en su actividad principal:
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);
De esta manera, su dispositivo debe activarse cuando se carga en el dispositivo a través de Eclipse.
Utilicé lo siguiente para reactivar dispositivos remotos para pruebas automatizadas. Si la pantalla no está encendida, entonces presionará el botón de encendido seguido del botón de menú.
(
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''
)
adb shell input keyevent KEYCODE_WAKEUP
Como se describe here , esto despierta el dispositivo. Se comporta de alguna manera como KEYCODE_POWER pero no tiene efecto si el dispositivo ya está despierto.
Para alternar el modo de espera / activación con un comando, puede emitir
adb shell input keyevent KEYCODE_POWER