因为国内的系统魔改源码,最大亮度不是255,超过了很多
/**
* 更新当前亮度
* */
private void updateCurrentLight() {
Activity activity = (Activity) mContext;
int maxBrightness = getMaxBrightness(mContext,100);
float screenBrightness = getWindowBrightness(activity.getWindow());
mSeekBarLight.setProgress((int) (screenBrightness/(float)maxBrightness * 100));
}
/**
* 获取最大亮度
* */
public int getMaxBrightness(Context context, int defaultValue){
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if(powerManager != null) {
Field[] fields = powerManager.getClass().getDeclaredFields();
for (Field field: fields) {
//https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/os/PowerManager.java
if(field.getName().equals("BRIGHTNESS_ON")) {
field.setAccessible(true);
try {
return (int) field.get(powerManager);
} catch (IllegalAccessException e) {
return defaultValue;
}
}
}
}
return defaultValue;
}
/**
* 获取窗口亮度
*
* @param window 窗口
* @return 屏幕亮度
*/
public static int getWindowBrightness(final Window window) {
WindowManager.LayoutParams lp = window.getAttributes();
float brightness = lp.screenBrightness;
if (brightness < 0) return getBrightness();
return (int) (brightness * 255);
}
/**
* 获取屏幕亮度
*
* @return 屏幕亮度
*/
public static int getBrightness() {
try {
return Settings.System.getInt(
Utils.getApp().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS
);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
return 0;
}
}