Desbloquear pantalla con ADB Android 4.2

Previamente con Android 4.1, haciendo algo como:

adb shell input keyevent 82  
#(KEYCODE_MENU)

desbloquearía la pantalla en el primer arranque y luego permitiría que más comandos inicien aplicaciones y las muestren en la pantalla, etc.

Con 4.2, dentro de los 10 segundos de arranque, la pantalla de bloqueo se atenúa a negro. Emitir el mismo comando ADB ya no funciona y la pantalla permanece en blanco.

Si presiono manualmente la tecla de menú, esto vuelve a encender la pantalla y luego puedo emitir el evento clave para desbloquear la pantalla.

¿Alguna idea de cómo puedo recuperar la pantalla desde ADB y desbloquear la pantalla desde allí?

Gracias

Hay una lista de eventos clave aquí y aquí , si alguien la necesita como referencia...

Respuestas (3)

Si está en 4.2.2, es posible que desee leer, por ejemplo, la lista blanca de ADB a partir de Android 4.2.2 : a partir de esta versión de Android, los "dispositivos remotos" (es decir, aquellos desde los que ejecuta comandos ADB ) deben estar autorizados por el dispositivo Android (es decir, en el que se ejecutan esos comandos ), por lo que su dispositivo Android puede distinguir a las "personas que llaman de confianza" de los "atacantes maliciosos". También puede encontrar esto en detalle en este artículo en AndroidPolice :

La forma en que funciona es bastante simple: cuando conecta su PC a su dispositivo Android a través de USB, Android obtiene la clave RSA de su PC (un token de identificación). En Android 4.2.2, cuando tiene habilitada la depuración de USB, esto ahora hace que aparezca un aviso en la conexión, como se ve a continuación.

Solicitud de autorización
(fuente de la imagen: AndroidPolice )

Actualización de los comentarios a continuación:

Además, como señaló Shuraneadb keyevent , el comportamiento de parece haber cambiado con Android 4.2.2: mientras que antes adb keyevent 26había un interruptor de "apagado de pantalla" y adb shell input keyevent 82un interruptor de "encendido de pantalla" dedicado, ahora adb keyevent 26hay un interruptor que apaga la pantalla ( cuando está encendido) y encendido (cuando está apagado), como señaló Pepelac .

Incluso después adb whitelisting, enviar un evento clave en 4.2.2 no funciona de la misma manera.
Su comentario sugiere que funciona de una manera diferente entonces. ¿Te importaría elaborar un poco más? Incluso podría valer una respuesta separada.
Bueno, adb shell input keyevent 26apaga la pantalla y adb shell input keyevent 82vuelve a encenderla, ¿verdad? Pero para 4.2.2, solo keyevent 26parece funcionar. keyevent 82no funciona por el motivo que sea.
Ya veo. Al no tener un dispositivo 4.2+, no puedo comprobarlo por mí mismo, pero tal vez alguien más tenga algunas pistas al respecto.
@Shurane adb shell input keyevent 26lo apaga/enciende
@Pepelac esa probablemente debería ser la respuesta a la pregunta entonces.
Integré eso con mi respuesta. ¡Gracias, @Pepelac!
keyevent 82 es el botón de menú. keyevent 26 es el botón de encendido. Como dijo Shurane, está encendido/apagado.

El truco está en 4.4.x y/u otros sistemas, tienes que enviar un mensaje Enterdespués del comando o tienes que esperar x seg/min.

Así que hazlo como:

adb shell

@shell: input keyevent 26

@shell: 

@shell: exit

Esto funcionará en cualquier caso, creo.

funcionó para mí en Android 4.1.1 (la pantalla se niega a encender el botón de encendido)

Configure el dispositivo en modo "sin bloqueo" en la configuración de seguridad (configuración de bloqueo en algunas versiones de Android) para que, después de reiniciar, el sistema operativo vaya directamente a la pantalla de inicio.

Luego puede enviar cualquier evento clave, mejor uno no reconocido para que no sea manejado por el controlador predeterminado, para activar la pantalla.

EDITAR: Esto funciona bien en 4.1. Verifiqué en 4.4 y los eventos que no sean 26 no funcionan cuando la pantalla está apagada. Supongo que esto se debe a que ahora hay otro dispositivo separado definido para el botón de encendido y los otros pueden estar inactivos. Entonces, debe verificar si la pantalla está apagada (dumpsys power, busque mScreenOn) y si está apagada, envíe 26. Debe hacer la verificación para evitar que se apague mientras está encendida. Esto funcionará en todas las versiones de Android.