修改应用亮度和系统亮度

来源:互联网 发布:excel表格重复数据筛选 编辑:程序博客网 时间:2024/04/30 10:18

为了控制屏幕的亮度,特地做了一个工具类文件,直接贴代码,个别问题说明如下:

 

 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 stubthis.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~100public 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~100public 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

8 0
原创粉丝点击