`
modabobo
  • 浏览: 509700 次
文章分类
社区版块
存档分类
最新评论

修改应用亮度和系统亮度

 
阅读更多

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics