但是啊,系统亮度是需要权限的,但是获取权限会影响用户体验,所以直接PASS。
如何解决?
然后发现了一个可以监听系统亮度发生变化的方法。
//监听屏幕亮度变化
getContentResolver().registerContentObserver(
Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),
true,
mBrightnessObserver);
/*
-
屏幕亮度变化监听的回调
-
*/
private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
// 当前系统的屏幕亮度(当用户改变了系统亮度后,会回调到该方法)
int currentValue = Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);
}
};
最终解决!
在监听里,当监听到用户第一次主动去修改屏幕亮度时,调用setActivityBrightness(2)让我们设置的屏幕亮度失效即可。
//在进入Act的时候调用
setActivityBrightness(1.0f)
//将当前Act的亮度设置为最亮(这个时候用户修改系统亮度是没法修改的)
//然后在刚才的监听里这