为了控制屏幕的亮度,特地做了一个工具类文件,直接贴代码,个别问题说明如下:
1、修改系统亮度值时,因为要修改Settings.System.SCREEN_BRIGHTNESS 的值,所以需要相应的系统权限:
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
2、即使系统默认已经开启了自动调整亮度功能,我们仍然可以直接对系统亮度进行修改。
3、系统亮度值范围:0~255;当前应用窗口亮度范围:0.0f~1.0f。(本代码已将两个范围统一转换为0~100)
4、亮度调至0时,系统屏幕将黑屏,按键及触控均停止响应。(本代码限制最低亮度值为1)
源代码如下:
package cn.com.bfyb.brightnesscontrol; import android.app.Activity; import android.content.ContentResolver; import android.net.Uri; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.view.WindowManager; public class BrightnessControler { private Activity activity; private ContentResolver contentResolver; private int stepValue = 10; public BrightnessControler(Activity activity) { // TODO Auto-generated constructor stub this.activity = activity; contentResolver = activity.getContentResolver(); } // 系统当前是否自动调整亮度 public boolean isAutoBrightness() { boolean automicBrightness = false; try { automicBrightness = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; } catch (SettingNotFoundException e) { e.printStackTrace(); } return automicBrightness; } // 获取系统亮度值:0~100 public int getSysBrightness() { int nowBrightnessValue = 0; try { nowBrightnessValue = (int) (android.provider.Settings.System .getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS) / 2.55f); } catch (Exception e) { e.printStackTrace(); } return nowBrightnessValue; } // 获取当前应用亮度值:0~100 public int getAppBrightness() { return (int) (activity.getWindow().getAttributes().screenBrightness * 100); } // 设置系统亮度 public void setSysBrightness(int brightness) { // if(isAutoBrightness()) // stopAutoBrightness(); setAppBrightness(brightness); // 保存亮度至系统 saveBrightnessToSys(brightness); } // 设置当前应用亮度 public void setAppBrightness(int brightness) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.screenBrightness = Float.valueOf(brightness) * (1f / 100f); activity.getWindow().setAttributes(lp); } // 系统亮度增加 public void lighterSys() { int bri = getSysBrightness() + stepValue; if (bri > 100) bri = 100; setSysBrightness(bri); } // 系统亮度降低 public void darkerSys() { int bri = getSysBrightness() - stepValue; if (bri < 1) bri = 1; setSysBrightness(bri); } // 当前应用亮度增加 public void lighterApp() { int bri = getAppBrightness() + stepValue; if (bri > 100) bri = 100; setAppBrightness(bri); } // 当前应用亮度降低 public void darkerApp() { int bri = getAppBrightness() - stepValue; if (bri < 1) bri = 1; setAppBrightness(bri); } // 设置亮度单步增减值 public void setStepValue(int step) { this.stepValue = step; } // 关闭系统自动调整亮度 public void stopAutoBrightness() { Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); } // 开启系统自动调整亮度 public void startAutoBrightness() { Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); } // 保存亮度值至系统 private void saveBrightnessToSys(int brightness) { Uri uri = android.provider.Settings.System .getUriFor(Settings.System.SCREEN_BRIGHTNESS); android.provider.Settings.System.putInt(contentResolver, android.provider.Settings.System.SCREEN_BRIGHTNESS, (int) (brightness * 2.55f)); contentResolver.notifyChange(uri, null); } }
代码下载地址:http://pan.baidu.com/s/1kT7JmGv
原文:http://blog.csdn.net/niuls/article/details/23679097