在非ui线程调用setBrightness
import android.provider.Settings.System
public static void setBrightness(final float fbrightness) {
Log.i("AdjustBright","in setBrightness-1 : " + fbrightness);
act.runOnUiThread(new Runnable() {
public void run() {
WindowManager.LayoutParams lp= act.getWindow().getAttributes();//这个值在0~1.0之间,1为全亮
if (fbrightness ==0.0) {
lp.screenBrightness =0.005F;
} else {
lp.screenBrightness = fbrightness;
}
Log.i("AdjustBright","in setBrightness-2 : " + lp.screenBrightness);
act.getWindow().setAttributes(lp);
}
});
}
public static float getBrightness() {
WindowManager.LayoutParams lp= act.getWindow().getAttributes();//-1表示使用系统默认值
int br =255;
float fb =1.0F;
if (lp.screenBrightness == -1.0) {
try
{
//Get the current system brightness
br = System.getInt(act.getContentResolver(), System.SCREEN_BRIGHTNESS);
fb = br /255.0F;
}
catch (android.provider.Settings.SettingNotFoundException e)
{
//Throw an error case it couldn't be retrieved
Log.e("Error","Cannot access system brightness");
e.printStackTrace();
}
} else {
Log.i("AdjustBright","in getBrightness-1: " + lp.screenBrightness);
fb = lp.screenBrightness;
}
Log.i("AdjustBright","in getBrightness-2: " + fb);
return fb;
}
另外,可通过改系统的亮度设置来改变亮度
android.provider.Settings.System.putInt(act.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
android.provider.Settings.System.putInt(act.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, brightnessInt); // brightnessInt 值的范围0~255
更改系统亮度需要如下权限:
<
uses-permission
android:name
=
"android.permission.WRITE_SETTINGS"
></uses-permission>
参考:
http://android.programmerguru.com/how-to-change-screen-brightness-programmatically/
http://stackoverflow.com/questions/18312609/change-the-system-brightness-programmatically
http://stackoverflow.com/questions/3737579/changing-screen-brightness-programmatically-in-android