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: