2012-03-03 16 views
6

He examinado muchas preguntas similares, y he descubierto que es no posible hacer una pantalla de bloqueo como los casilleros de Android estándar. Lo que sí es posible es crear una aplicación que deshabilite LockScreen y use un "bloqueo" diferente en lugar del estándar. Estoy pensando en hacer una pantalla de bloqueo personalizada con un tipo diferente de bloqueo. Lo que no sé que es posible es:"Pantalla de bloqueo" con contraseña de seguridad personalizada

  1. ¿Existe alguna forma de useing un diseño .xml para una pantalla de bloqueo
  2. ¿Puedo entonces escribirlo como una aplicación normal de

que no quiero Referencias a aplicaciones existentes en el mercado.

Respuesta

1

Creo que tienes razón porque tampoco encontré una manera de reemplazar la pantalla de bloqueo original. Como dijiste, podemos inhabilitar el original y simular otro.

que tienen un concepto y se puede encontrar esta página útil también: http://chandan-tech.blogspot.com/2010/10/handling-screen-lock-unlock-in-android.html

deshabilita el original, añadir un detector de ACTION_SCREEN_ON, y una vez que se activa, mostrará su pantalla de bloqueo falso, ya partir de ahora se puede escribir es como una aplicación normal y creo que el diseño xml es totalmente práctico.

Para implementarlo realmente, también se debe realizar un servicio que debe ejecutarse con el inicio del sistema. En su actividad, también debe desactivar la barra de notificaciones y los botones.

+0

Gracias mucho por el enlace – Magakahn

0

Usted puede intentar anular KeyguardManager

KeyguardManager.KeyguardLock key; 
KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
//depreciated 
key=km.newKeyguardLock("IN"); 

Debe insertar esto en un service.Go como algo parecido a:

public class LockService extends Service{ 
BroadcastReceiver receiver; 
@override 
@SuppressWarnings("deprecation") 
public void onCreate(){ 
KeyguardManager.KeyguardLock key; 
KeyguardManager km=(KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
//depreciated 
key=km.newKeyguardLock("IN"); 
IntentFilter filter=new IntentFilter(Intent.ACTION_SCREEN_ON); 
filter.addAction(Intent.ACTION_SCREEN_OFF); 
filter.addAction(Intent.ACTION_BOOT_COMPLETED); 
receiver=new LockscreenReceiver(); 
registerReceiver(receiver,filter); 
super.onCreate(); 
} 

Y luego el LockscreenReceiver, debe implementar esta acción:

public class LockscreenReceiver extends BroadcastReceiver{ 
@Override 
public void onReceive(Context context,Intent intent){ 
String action=intent.getAction(); 
//if the screen was recently enabled, do this: 
//If the screen was just turned on or it just booted up, start your Lock Activity 
     if(action.equals(Intent.ACTION_SCREEN_OFF) || action.equals(Intent.ACTION_BOOT_COMPLETED)) 
     { 
      Intent i = new Intent(context, MainActivity.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } 
} 
} 

después, debe registrarse o llamar al servicio en MainActivity

startService(new Intent(this,LockscreenService.class)); 

Para ver esto en acción, vaya a https://github.com/thomasvidas/Simple-Lockscreen

Cuestiones relacionadas