J'ai trois activités dans mon application. Je veux garder l'écran éveillé lors de la deuxième activité. L'écran ne devrait pas s'éteindre dans ma deuxième activité à moins que la touche "verrouillage" soit pressée manuellement. J'ai parcouru de nombreux liens mais ils me semblent peu clairs.
Comme indiqué dans le didacticiel Android Gardez l'écran allumé , vous pouvez le faire de plusieurs manières. Vous pouvez définir le FLAG_KEEP_SCREEN_ON dans la fenêtre de l'activité:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Un équivalent XML pour cela consiste à ajouter l'attribut Android:keepScreenOn="true"
à la vue racine de la présentation de votre activité. L'avantage de définir l'indicateur par programme est que vous pouvez utiliser
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
lorsque vous n'avez plus besoin de forcer l'écran à rester allumé pendant que votre activité est en cours.
Une autre façon de contrôler l'écran (et certaines autres ressources) consiste à utiliser un verrouillage de réveil:
mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();
Le manifeste devra inclure cette autorisation:
<uses-permission Android:name="Android.permission.WAKE_LOCK"/>
Cependant, comme indiqué dans le didacticiel, un verrouillage de réveil est plus approprié pour d'autres cas d'utilisation (comme une tâche de service ou d'arrière-plan nécessitant que le processeur continue de fonctionner alors que l'écran est éteint).
Je trouve cette solution beaucoup plus simple:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" // Whatever your layout is
...
Android:keepScreenOn="true"> // Add this line
Ajoutez-le simplement à la présentation XML de votre activité.
Comme je comprends votre question, je pense que vous devez utiliser WAKE_LOCK
pour cela dans votre application.
Quelque chose comme,
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");
mWakeLock.acquire();
Et dans le fichier manifest.xml de votre application, ajoutez ceci,
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
essayez d'utiliser ceci
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Ce code est obsolète, utilisez-le à la place:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
Après avoir terminé l'utilisation, appelez (la meilleure solution consiste à appeler cette méthode dans la méthode onDestroy d'une activité):
wl.release();
En savoir plus à ce sujet lien