如何检测Android中的屏幕亮度是否发生了变化? [英] How to detect if screen brightness has changed in Android?
问题描述
我进行了广泛搜索,找不到类似的问题.
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.
我已经尝试在应用启动时存储旧值,并使用 Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);
进行比较以比较初始值和最终值屏幕亮度值,这不是一个好方法.
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.
谢谢
该问题表明我已经尝试过使用 Settings.System.SCREEN_BRIGHTNESS
来获取当前屏幕值并定期检查屏幕亮度变化的解决方案.我正在寻找一种更有效的方法来进行这种操作.
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.
推荐答案
是的,有一种方法可以使用 ContentObserver :
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)
其他有用的链接:
这篇关于如何检测Android中的屏幕亮度是否发生了变化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!