2012-03-03 7 views
6

Ho esaminato molte domande simili e ho scoperto che è non possibile creare un blocco schermo come gli armadietti standard di Android. Ciò che è possibile è creare un'app che disabiliti il ​​LockScreen e usi un "lock" diverso da quello standard. Sto pensando di creare un lockscreen personalizzato con un diverso tipo di blocco. Quello che non so è possibile è:"Blocca schermo" con password di sicurezza personalizzata

  1. ci sono modi di useing un layout .xml per una lockscreen
  2. Posso quindi scrivere come un'applicazione normale

non voglio referenze a app esistenti sul mercato.

risposta

1

Credo che tu abbia ragione perché non ho trovato un modo per sostituire il lockscreen originale. Come hai detto, possiamo disabilitare l'originale e fingere un altro.

Ho un concetto e si possono trovare questa pagina utile anche: http://chandan-tech.blogspot.com/2010/10/handling-screen-lock-unlock-in-android.html

Si disattiva l'originale, aggiungere un ascoltatore ACTION_SCREEN_ON, e una volta che viene attivato, visualizzare la vostra lockscreen falso, e da ora è possibile scrivere è come una normale app e credo che il layout xml sia totalmente pratico.

Per implementarlo effettivamente, è necessario creare un servizio che deve essere eseguito con l'avvio del sistema. Nella tua attività dovresti anche disabilitare la barra di notifica e i pulsanti.

+0

Grazie mille per il link – Magakahn

0

Si può provare l'override KeyguardManager

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

È necessario inserire questo in un service.Go come qualcosa di simile:

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(); 
} 

E poi LockscreenReceiver, è necessario implementare questa azione:

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); 
     } 
} 
} 

Successivamente, è necessario registrarsi o chiamare il servizio in MainActivity

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

Per vedere in azione, andare a https://github.com/thomasvidas/Simple-Lockscreen

Problemi correlati