Comment éteindre l'écran ou envoyer l'appareil en veille

Je veux envoyer l'appareil en veille ou éteindre l'écran. J'ai enquêté et trouvé ce sujet: Éteindre l'écran sur Android

Fondamentalement, il existe trois façons de le faire, mais j'ai trouvé des problèmes pour les trois:

a) Choix 1:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
manager.goToSleep(int amountOfTime);

Problème: Il provoque des FC. J'ai lu, j'ai besoin de DEVICE_POWER autorisations, mais il ne peut pas être accordée pour la normale apps.

b) Choix 2:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();

Problème: Cela ne fonctionne pas pour moi. Je ne sais pas pourquoi. Il ne me donne pas une FC, mais il est inoffensif.

c) Choix 3:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

Problème: je peux le faire fonctionner, mais lorsque vous essayez d'allumer l'appareil, il fait des choses étranges, comme n'aime pas en retour, ou si mes applications est à l'avant, se met automatiquement en veille juste après avoir appuyé sur le bouton. Cela ressemble plus à une astuce ou une solution de contournement que la normale solution.

Quelqu'un peut-il me dire la bonne méthode pour envoyer l'appareil pour le sommeil ou la tour de l'écran qui peut fonctionner sans problèmes? Il son rare pour moi c'est une fonctionnalité simple comme cela n'a pas une bonne façon de l'utiliser (ou au moins bien documentés)

source d'informationauteur Tibor