Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Android : Changer la luminosité de l'écran

17 octobre 2022

Dans ce nouvel article, je vous propose de voir comment il est possible de changer la luminosité de l’écran au sein d’une application Android.

A titre personnel, j’ai eu ce besoin dans le cadre du développement de l’application pour l’Instant Lab, mais on retrouve ce fonctionnel dans de nombreuses applications. Un cas d’usage classique est l’affichage d’une QR Code, d’un billet, etc. au sein d’une application afin de le scanner directement depuis son téléphone. C’est typiquement le cas dans les applications SNCF.

Quand on fait des recherches sur internet, on trouve de multiples solutions pour répondre à cette problématique. On trouve notamment des solutions qui nécessitent d’écrire dans des préférences systèmes à l’aide de permissions particulières. En plus de ne pas fonctionner, ces solutions sont compliquées à mettre en place. Je vous propose donc dans la suite de cet article une solution à la fois simple et fonctionnel.

Mettre la luminosité à fond

Pour ce faire, il convient simplement de se rendre dans une Activity et de manipuler l’attribut window de la classe et plus particulièrement les attributs de ce dernier.

Dans ces attributes, il est possible de manipuler la propriété screenBrightness et de lui affecter la valeur 1 :

private fun setMaxBrightness()
{
  window?.let {
    it.attributes?.let { layoutParams ->
      layoutParams.screenBrightness = 1.0f

      it.attributes = layoutParams
    }
  }  
}

Restaurer la luminosité de l’utilisateur

Pour restaurer la luminosité de l’utilisateur, il convient de manipuler la même propriété afin, ce coup-ci, de lui retrancher ma valeur 1 :

private fun setUserBrightness()
{
  window?.let {
    it.attributes?.let { layoutParams ->
      layoutParams.screenBrightness = -1.0f

      it.attributes = layoutParams
    }
  }
}

Commentaires