Dim écran pendant que l'utilisateur inactif
J'ai une application qui est utilisé pour le disons 4 heures, mais seulement toutes les 5 minutes, l'utilisateur doit faire une entrée ou à lire l'écran. Mettre le téléphone en veille et l'écran de verrouillage est un peu gênant. J'ai donc deux options:
-
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
qui n'a pas de verrouillage de l'écran, mais l'écran est toujours vif, je tiens à le réduire alors qu'il n'y a pas d'activité. Juste à cause de la batterie la durée de vie, ou n'est-ce pas beaucoup d'importance pour ces 4 heures? -
un signal de verrouillage
SCREEN_DIM_WAKE_LOCK
qui fait ce que je veux, mais on m'a dit plutôt utiliser l'option 1 ci-dessus.
Puis-je obtenir le voulait en quelque sorte sans un signal de verrouillage?
OriginalL'auteur AndyAndroid | 2011-01-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser:
dim/undim l'écran quand vous le souhaitez.
lp.dimAmount=1.0f
diminue la luminosité de l'écran totalement, mais vous pouvez le fixer à votre volonté avec des valeurs allant de 0 (pas de dim à tous) à 1.0 f.Vous pouvez régler une minuterie pour appeler cette après 5 minutes d'inactivité, puis allumez l'écran "retour sur" sur n'importe quel événement tactile ou tel peut-être.
dialog
objet vous parlez ici? De la documentation, il semble que ce champ n'dim tout ce qui est derrière la fenêtre de réglage. Alors, êtes-vous en suggérant la création d'un mannequin (peut-être invisible) fenêtre de dialogue?Turbo, la boîte de dialogue était juste un réel dialogue variable à partir de mon code, mais vous pouvez l'appeler directement à partir de l'activité où vous voulez la luminosité de l'écran (il suffit de retirer la boîte de dialogue"." de la dernière ligne)..je vais l'éditer pour plus de clarté
Je vois. J'étais confus en raison de la formulation de la docs: "indicateur de Fenêtre: tout ce qui est derrière cette fenêtre est grisée." Donc, même si vous appliquez cela à la
Activity
'sWindow
, queActivity
sera toujours grisée, et pas seulement ce qu'il y a derrière? C'est pourquoi j'ai pensé que vous faisiez un mannequinDialog
de l'appliquer à ce que laActivity
derrière elle aurait dim. Mais je suppose que cela affecte également laWindow
vous l'appliquez.Hmm, ce code ne fonctionne pas sur mes appareils. Testé sur Android 6.0 (Nexus 5X et Samsung S7) et Android 5.0 (Nexus 4). J'ai testé flotte de -1, 0 et 1, avec aucun changement. Je suis en mesure de récupérer la dimAmount de 1.
OriginalL'auteur Rick
Même un dim écran consomme une quantité importante de la batterie sur une période de 4 heures. Vous ne voulez vraiment pas à garder l'écran comme ça. Je pense que vous feriez mieux d'utiliser FLAG_SHOW_WHEN_LOCKED, permettant à l'écran pour l'éteindre, mais pour l'utilisateur de se rendre immédiatement dans votre application lors de la mise sur le dos sans avoir à passer par l'écran de verrouillage.
Si vous avez vraiment besoin de garder l'écran dim, vous pouvez utiliser un SCREEN_DIM_WAKE_LOCK. Si vous voulez plus de contrôle, vous pouvez également essayer directement le réglage de la luminosité de l'écran avec WindowManager.LayoutParams.screenBrightness.
OriginalL'auteur hackbod
Est-ce répondre à votre dernière Q à partir de Jan 26 '11 à 15:28
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Mon Tag");
wl.acquire();
..l'écran restera allumé au cours de cette section..
wl.release();
Voir ici pour plus d': http://developer.android.com/reference/android/os/PowerManager.html
Donc ce que je veux dire, c'est que vous devez acquérir du pouvoir des gestionnaires de wake lock avant de lancer votre nouvelle activité pour éviter le verrouillage de l'écran. Et relâchez-le lorsque vous avez terminé.
Vous pourriez également utiliser lp.screenBrightness au lieu de lp.dimAmount
Et assurez-vous d'entrer une valeur supérieure à 0 pour éviter le verrouillage de l'écran:
lp.screenBrightness = 0.01 f + valeur /100.0 f;
OriginalL'auteur Sold Out