废话不多说了,网上搜刮得来的,我只是进行了一些实验后,成功了,再加上自己的一些想法弄得一篇文章,大家可以看看,非喜勿喷啊!
import android.app.Activity;
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.Settings.SettingNotFoundException;
import android.view.WindowManager;
/**
* 屏幕亮度设置和保存
*
* @author luckchoudog
*/
public class ScreenBrightnessTools {
// Android的屏幕亮度好像在2.1+的时候提供了自动调节的功能。
// 所以,如果当开启自动调节功能的时候, 我们进行调节好像是没有一点作用的。
// 因此,在调节屏幕亮度之前首先进行判断设备是否开启自动亮度调节。
// 使用方法:ScreenBrightnessTools.isScreenAutoBrightness(getContentResolver());
/**************************************
* 判断设备屏幕是否开启了自动亮度调节*
**************************************/
public static boolean isScreenAutoBrightness(ContentResolver contentResolver) {
boolean automicBrightness = false;
try {
automicBrightness = android.provider.Settings.System.getInt(contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE) == android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
} catch (SettingNotFoundException e) {
e.printStackTrace();
}
return automicBrightness;
}
// 如果设备真的是自动亮度调节,咱们想自己调节,得先将系统的关掉
/********************
* 停止自动亮度调节 *
********************/
public static void stopAutoBrightness(Activity activity) {
android.provider.Settings.System.putInt(activity.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
// 如果自己想再次开启自动亮度调节,那就再次开启呗,咱们得能开能关是不是
/*******************
* 开启亮度自动调节*
*******************/
public static void startAutoBrightness(Activity activity) {
android.provider.Settings.System.putInt(activity.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
// 获取当前屏幕亮度,获取到的数据是0~255之间的数字,255表示最亮。
/*******************
* 获取当前屏幕亮度*
*******************/
public static int getScreenBrightness(Activity activity) {
int nowBrightnessValue = 0;
ContentResolver resolver = activity.getContentResolver();
try {
nowBrightnessValue = android.provider.Settings.System.getInt(resolver, android.provider.Settings.System.SCREEN_BRIGHTNESS);
} catch (Exception e) {
e.printStackTrace();
}
return nowBrightnessValue;
}
// 接下来设置屏幕亮度
/**********************************************************
* 设置设备屏幕亮度,传入Activity和想要的亮度数值(0~255)*
**********************************************************/
public static void setBrightness(Activity activity, int brightness) {
WindowManager.LayoutParams layoutParams = activity.getWindow().getAttributes();
layoutParams.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
activity.getWindow().setAttributes(layoutParams);
}
// 最后一步,保存自己的设置
/*******************
* 保存亮度设置状态*
*******************/
public static void saveBrightness(ContentResolver contentResolver, int brightness) {
Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(contentResolver, "screen_brightness", brightness);
contentResolver.notifyChange(uri, null);
}
}