Catégories

Je les lis (et ils le valent bien!)

Empêcher la mise en veille : Wake Locks et keepScreenOn

Logo AndroidL’une des fonctionnalités de l’App d’aide de jeu pour le Val des Étoiles est de proposer un compteur de Majesté pour chacun des deux joueurs. L’idée est donc d’avoir le smartphone au milieu de la table avec les deux compteurs visibles. Sauf que… Au bout d’un moment le smartphone va se mettre en veille et éteindre l’écran.

Je voulais donc a/ proposer une fonctionnalité qui bloque la Mise en Veille sur l’écran des Majestés et b/ que cette fonctionnalité soit activable ou pas via les préférences.

En faisant quelques recherches, la première chose sur laquelle je suis tombé est une explication de l’utilisation du WAKE LOCK (http://supertos.free.fr/supertos.php?page=1057) mais j’ai vu qu’il y avait un problème par rapport à ce que je voulais pour mon application : utiliser cette fonctionnalité impliquait une Permission. (J’évoque les Permissions dans un post précédent)

Hors, je voulais, dans la mesure du possible ne demander aucune Permission pour le Val des Étoiles.

Après quelques recherches complémentaires, j’ai enfin trouvé mon bonheur, en tous cas un début : un attribut de layout => android:keepScreenOn="true"

Qui dit attribut de layout, dit que c’est modifiable programmatiquement. Du coup j’ai mis au point une fonction que j’appelle au OnCreate de l’écran des Majestés ainsi qu’au retour de PreferenceActivity (pour mettre à jour en cas de modification de la préférence). Au sujet des préférences : Dév Android : Mise en place des Préférences.

    /**
     * Activation/désactivation du blocage de la Mise en veille
     */
    protected void keepScreen(){
        View ecran = findViewById(R.id.linearLayoutMajestes);
        ecran.setKeepScreenOn(blocageVeille);
    }

R.id.linearLayoutMajestes est la balise englobante du layout liée à l’Activity MajestesActivity.
blocageVeille est un boolean issus des Préférences. S’il est à true, le smartphone ne passera pas en veille (et n’éteindra pas l’écran) tant que R.id.linearLayoutMajestes est affiché à l’écran.

Et voilà !

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

  

  

  

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.