web-dev-qa-db-fra.com

Comment afficher l'activité lorsque l'écran est verrouillé?

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 ?

29
Pachanka

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*/
}
43
RN3KK Nick

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.

21
hackbod

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(); 
4
Mitech

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);
4
Carlos