Ajustement par programmation de la luminosité du système : un guide complet
La modification de la luminosité du système par programmation est une fonctionnalité utile pour les applications qui nécessitent de contrôler l'éclairage de l'écran de l'appareil. . Cet article présente une solution détaillée à cette tâche.
Approche initiale : définition de l'attribut de luminosité de l'écran
Votre approche initiale utilisant WindowManager.LayoutParams a des limites. Le champ screenBrightness ne prend que des valeurs comprises entre 0,0 et 1,0, et non la valeur maximale attendue de 255.
Solution alternative : utilisation de l'API de paramètres
Une solution plus robuste réside dans le API de paramètres. En utilisant les classes ContentResolver et System, vous pouvez manipuler directement les paramètres de luminosité du système. Voici comment procéder :
1. Initialisation :
a. Définissez une variable privée pour stocker la valeur de luminosité.
b. Récupérez le ContentResolver et l'objet Window actuel.
c. Initialisez la variable de luminosité avec la luminosité actuelle du système.
2. Surveillance des changements de luminosité :
Écrivez du code pour écouter et répondre aux changements de luminosité.
3. Mise à jour de la luminosité :
a. Définissez la luminosité du système à l'aide de Settings.System.putInt() et de la valeur de luminosité mise à jour.
b. Mettez à jour les attributs de la fenêtre en définissant layoutpars.screenBrightness sur la valeur de luminosité normalisée à 1,0.
c. Appliquez les modifications d'attribut à la fenêtre.
4. Autorisations du manifeste :
Pour Android Marshmallow et versions ultérieures, vous devez demander l'autorisation WRITE_SETTINGS via l'activité Paramètres.
Exemple de code :
<code class="java">private ContentResolver cResolver; private Window window; private int brightness; @Override protected void onCreate(Bundle savedInstanceState) { // Initialize settings and brightness. try { Settings.System.putInt(cResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); brightness = Settings.System.getInt(cResolver, Settings.System.SCREEN_BRIGHTNESS); } catch (SettingNotFoundException e) { Log.e("Error", "Cannot access system brightness"); e.printStackTrace(); } // Monitor brightness changes... } // Method to update brightness public void setBrightness(int newBrightness) { // Update system brightness and window attributes. }</code>
En suivant ces étapes, vous pouvez modifier efficacement la luminosité du système par programmation, offrant ainsi une plus grande flexibilité et des options de personnalisation pour vos applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!