首页 > 其他 > 详细

修改应用亮度和系统亮度

时间:2014-04-14 18:57:49      阅读:465      评论:0      收藏:0      [点我收藏+]

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

 

 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

修改应用亮度和系统亮度,布布扣,bubuko.com

修改应用亮度和系统亮度

原文:http://blog.csdn.net/niuls/article/details/23679097

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!