java - nada - Android-Activación del bloqueo de teclas del sistema(también conocido como pantalla de bloqueo)
no funciona el teclado de mi laptop (5)
Tengo que activar el bloqueo de teclas del sistema de Android (el que obtienes al presionar el botón de apagar / colgar ). Mira aquí:
Ya examiné los documentos pero todo lo que encontré fue PowerManager y KeyguardManager . Ambos parecen no ser la solución :-(.
Entonces, ¿todos saben cómo lograr eso desde una aplicación de Android? (Si se requieren permisos especiales, no hay problema, pero cambiar la configuración del dispositivo no es una solución ...)
EDITAR : ¿O alguien sabe que esto definitivamente no es posible en absoluto? Por cierto. La solución Craigs con envío de claves ya no funciona (ver comentarios).
Excavando a través de la fuente de Android encontró WindowManagerService que parece tener un método público ( startAppFreezingScreenLocked
) para activar esto. Este puede ser un buen lugar para comenzar a buscar su respuesta, ya que lamentablemente no parece que pueda obtener directamente un objeto WindowManagerService.
Hay un buen ejemplo aquí:
http://www.anddev.org/throwing-simulating_keystrokes_programatically-t717.html
Parece que puede provocar programáticamente cualquier tecla que se envíe al sistema. Parece que el código clave que está buscando es KEYCODE_ENDCALL, pero si eso no funciona, hay muchos otros códigos para probar aquí:
http://developer.android.com/reference/android/view/KeyEvent.html
No sé si hay alguna llamada a la API que provoque el bloqueo, pero parece una solución bastante sólida hasta que encuentre una solución mejor.
He estado buscando una respuesta a la misma pregunta por un tiempo. Aparentemente, después de 2.0 en adelante, se eliminaron los privilegios del administrador de dispositivos para el nivel de la aplicación. Pero con Froyo - 2.2 se revela el administrador de políticas del dispositivo que nos otorga a los desarrolladores una multitud de controles de nivel administrativo.
http://developer.android.com/guide/topics/admin/device-admin.html
Lo que estás buscando es el método reenableKeyguard () en KeyguardManager.KeyguardLock mi amigo!
Parece que la función de bloqueo de pantalla se realiza con el método:
public void goToSleep(long time)
método en PowerManager.java
. Es posible obtener una referencia de esta manera:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
Sin embargo, esto requiere el permiso
android.permission.DEVICE_POWER
que es un permiso de nivel 2 disponible solo para el sistema.
Entonces parece que esto no es factible. Esto es solo para la versión 1.1, no sé para 1.5.