I have searched extensively and couldn't find a similar question.
I would like to know if there is any way to detect when the screen brightness of a mobile device has been changed.
I have already tried to store the old value when the app starts and repeatedly check usingSettings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS); to compare the initial and final value of screen brightness , which is not a good way of doing so.
Thanks
EDIT: This question states that I have already tried the solution of using Settings.System.SCREEN_BRIGHTNESS to get current screen values and periodically check for screen brightness changes. I am looking for a more efficient way of doing such an operation.
yes, there is a way by using ContentObserver:
code:
  // listen to the brightness system settings
  val contentObserver = object:ContentObserver(Handler())
  {
      override fun onChange(selfChange:Boolean)
      {
          // get system brightness level
          val brightnessAmount = Settings.System.getInt(
                  contentResolver,Settings.System.SCREEN_BRIGHTNESS,0)
          // do something...
      }
  }
  // register the brightness listener upon starting
  contentResolver.registerContentObserver(
          Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),
          false,contentObserver)
  // .....
  // unregister the listener when we're done (e.g. activity destroyed)
  contentResolver.unregisterContentObserver(contentObserver)
other useful links:
There are no receivers provided to detect brightness change.
You have to run a Service or Thread to check the brightness change by yourself.
Settings.System.getInt(getContext().getContentResolver(), 
             Settings.System.SCREEN_BRIGHTNESS);
The above code will give you current system brightness level. Periodically detect the brightness and compare with the old one.
Note: If the system is in Auto Brightness mode, you can't get current brightness level. See this answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With