Modification de la Luminosité de l'Écran de Réglage du Système Android
Je suis d'essayer de changer la luminosité de l'écran à partir de l'intérieur d'un service, comme suit:
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, bright);
Problème est que est ne fonctionne pas. Eh bien, en fait il arrive à changer le réglage de la luminosité, mais la luminosité de l'écran ne change en fait jusqu'à ce que je vais dans les téléphones paramètres, regardez la nouvelle valeur et cliquez sur Ok.
Il y a une chose que j'ai à faire après le réglage de la valeur pour obtenir la luminosité pour changer?
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème de changement de la luminosité de l'écran à partir de l'intérieur d'un service, et il y a quelques jours j'ai réussi à la résoudre(et mise à jour de mon application Téléphone Calendrier avec une luminosité, fonctionnalité 😉 ).
Ok, donc c'est le code que vous mettez dans votre service:
Veuillez Noter que dans l'extrait de code ci-dessus, je suis l'aide de deux variables pour la luminosité. On est
brightness
, qui est un nombre à virgule compris entre 0.0 et 1.0, l'autre estbrightnessInt
, qui est un entier entre 0 et 255. La raison pour cela est queSettings.System
nécessite un entier pour stocker à l'échelle du système de valeur de luminosité, tandis que lelp.screenBrightness
que vous allez voir dans l'extrait de code suivant nécessite un flotteur. Ne me demandez pas pourquoi ne pas utiliser la même valeur, c'est juste la façon dont il est dans le kit SDK d'Android, donc nous allons devoir vivre avec elle.C'est le code pour DummyBrightnessActivity:
Voici comment ajouter votre activité AndroidManifest.xml probablement la partie la plus importante:
Une petite explication sur ce qu'il en est.
android:taskAffinity
doit être différente, que votre nom de paquet! Il fait DummyBrightnessActivity être n'a pas commencé dans votre pile d'activités, mais dans un autre, ce qui signifie que lorsque DummyBrightnessActivity est fermé, vous ne verrez pas la prochaine activité, quelle qu'elle puisse être. Jusqu'à ce que j'ai compris cette ligne, la fermeture de DummyBrightnessActivity lançais mon activité principale.android:excludeFromRecents="true"
fait de cette activité qui n'est pas disponible dans la liste des récemment lancé des applications, ce qui vous ne voulez.android:theme="@style/EmptyActivity"
définit la façon dont les DummyBrightnessActivity ressemble à l'utilisateur, et c'est là que vous la rendre invisible. C'est une façon de définir ce style dans la styles.xml fichier:De cette façon, votre DummyBrightnessActivity sera invisible pour l'utilisateur. Je ne suis pas shure si tous ces paramètres de style sont vraiment nécessaires, mais il travaille pour moi de cette façon.
J'espère que l'explique, mais si vous avez des questions, laissez-moi savoir.
EmptyActivity
<style name="EmptyActivity" parent="android:Thème.Boîte de dialogue"> .... (la même qu'posté par Anton Cherkashyn) <item name="android:windowBackground">@android:couleur/transparent</item> <item name="android:backgroundDimEnabled">false</item> <item name="android:windowIsFloating">true</item> </style>android:theme="@android:style/Theme.Translucent"
pour votre activité. Aussi, vous pouvez diminuer le message retard de 500ms et il marche encore.Theme.Translucent.NoTitleBar
si vous ne voulez pas voir la barre de titre clignote.Theme.Translucent.NoTitleBar
pour mon Activité.AndroidManifest.xml
pour faire ce travail:<!-- Needed to write update to screen brightness --> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
Je viens de vérifier dans JB. Le code suivant suffit de régler la luminosité à partir d'un service
première ligne remplace le réglage automatique de la luminosité.
Vous pourriez avoir à le faire par le biais de la
Window
objet.Par exemple,
La moins intrusive moyen (en utilisant beaucoup moins de code) est: