Mon application est lancée lors d'un événement d'amarrage de voiture, je veux réveiller le téléphone (fait par le système) et déverrouiller l'écran lorsque je branche mon appareil. C'est possible ?
Je suis utilisé pour faire monter l'activité au plus haut niveau
private Window wind;
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
/******block is needed to raise the application if the lock is*********/
wind = this.getWindow();
wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
/* ^^^^^^^block is needed to raise the application if the lock is*/
}
Utilisez Activity.getWindow () pour obtenir la fenêtre de votre activité; utilisez Window.addFlags () pour ajouter l'un des indicateurs suivants dans WindowManager.LayoutParams que vous désirez: FLAG_DISMISS_KEYGUARD , FLAG_SHOW_WHEN_LOCKED , FLAG_TURN_SCREEN_ON
C'est ainsi que l'application de station d'accueil (et de bureau) standard implémente ce comportement.
Vous pourrez utiliser FLAG_DISMISS_KEYGUARD
uniquement pour les téléphones qui ne disposent pas de verrous de sécurité comme le verrouillage de modèle.
FLAG_SHOW_WHEN_LOCKED
n'affichera votre activité actuelle qu'en haut, si l'utilisateur essaie de se déplacer ailleurs, il devra déverrouiller l'écran.
Alternativement, vous pouvez ajouter une autorisation dans votre manifeste:
<uses-permission Android:name="Android.permission.DISABLE_KEYGUARD"/>
Et, dans votre activité sur créer:
KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard();
Lors de l'utilisation d'un schéma de verrouillage ou d'une entrée de broche, j'ai également dû ajouter les éléments suivants, car l'écran s'est éteint en moins de 5 secondes:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);