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.
There are no receivers provided to detect brightness change.
You have to run a Service or Thread to check the brightness change by yourself.
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.
yes, there is a way by using ContentObserver:
code:
permission in
AndroidManifest.xml
:for API >= 23, you need to request the permission through Settings Activity
other useful links: