Xml布局
<SeekBar
android:id="@+id/mySeekBar_light"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:max="255" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/mTextView_light"
android:layout_alignBottom="@+id/mTextView_light"
android:layout_alignLeft="@+id/mySeekBar_light"
android:text="屏幕亮度:" />
<TextView
android:id="@+id/mTextView_light"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/mySeekBar_light"
android:layout_marginLeft="26dp"
android:layout_marginTop="42dp"
android:layout_toRightOf="@+id/textView1" />
MainActivity.class中
public class MainActivity extends Activity {
private int mBrightness = 0;
private SeekBar mSeekBar_light;
private TextView mTextView_light;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSeekBar_light = (SeekBar) findViewById(R.id.mySeekBar_light);
mTextView_light = (TextView) findViewById(R.id.mTextView_light);
mSeekBar_light
.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
mBrightness = BrightnessUtils.getScreenBrightness(MainActivity.this);
mTextView_light.setText(""+mBrightness);
mSeekBar_light.setProgress(mBrightness);
}
// 进度条值改变时,调节屏幕亮度
private class OnSeekBarChangeListenerImp implements
SeekBar.OnSeekBarChangeListener {
// 触发操作,拖动
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
mBrightness = seekBar.getProgress();
mTextView_light.setText(""+mBrightness);
BrightnessUtils.setCurWindowBrightness(MainActivity.this, mBrightness);
}
// 表示进度条刚开始拖动,开始拖动时候触发的操作
public void onStartTrackingTouch(SeekBar seekBar) {
}
// 停止拖动时候
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
}
BrightnessUtils.java类中(工具类封装监听屏幕亮度的方法)
package cn.itas109.brightnessadjust;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.WindowManager;
/*
* Android调节屏幕亮度工具类
* by itas109
* http://blog.csdn.net/itas109
*
* 注意:需要添加setting权限
* <uses-permission android:name="android.permission.WRITE_SETTINGS" />
*/
public class BrightnessUtils {
// 判断是否开启了自动亮度调节
public static boolean IsAutoBrightness(Context context) {
boolean IsAutoBrightness = false;
try {
IsAutoBrightness = Settings.System.getInt(
context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
}
catch (SettingNotFoundException e)
{
e.printStackTrace();
}
return IsAutoBrightness;
}
// 获取当前屏幕的亮度
public static int getScreenBrightness(Context context) {
int nowBrightnessValue = 0;
ContentResolver resolver = context.getContentResolver();
try {
nowBrightnessValue = android.provider.Settings.System.getInt(
resolver, Settings.System.SCREEN_BRIGHTNESS);
}
catch (Exception e) {
e.printStackTrace();
}
return nowBrightnessValue;
}
// 设置亮度
// 程序退出之后亮度失效
public static void setCurWindowBrightness(Context context, int brightness) {
// 如果开启自动亮度,则关闭。否则,设置了亮度值也是无效的
if (IsAutoBrightness(context)) {
stopAutoBrightness(context);
}
// context转换为Activity
Activity activity = (Activity) context;
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
// 异常处理
if (brightness < 1) {
brightness = 1;
}
// 异常处理
if (brightness > 255) {
brightness = 255;
}
lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
activity.getWindow().setAttributes(lp);
}
// 设置系统亮度
// 程序退出之后亮度依旧有效
public static void setSystemBrightness(Context context, int brightness) {
// 异常处理
if (brightness < 1) {
brightness = 1;
}
// 异常处理
if (brightness > 255) {
brightness = 255;
}
saveBrightness(context, brightness);
}
// 停止自动亮度调节
public static void stopAutoBrightness(Context context) {
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
// 开启亮度自动调节
public static void startAutoBrightness(Context context) {
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
// 保存亮度设置状态
public static void saveBrightness(Context context, int brightness) {
Uri uri = android.provider.Settings.System
.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(context.getContentResolver(),
"screen_brightness", brightness);
context.getContentResolver().notifyChange(uri, null);
}
}
<SeekBar
android:id="@+id/mySeekBar_light"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:max="255" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/mTextView_light"
android:layout_alignBottom="@+id/mTextView_light"
android:layout_alignLeft="@+id/mySeekBar_light"
android:text="屏幕亮度:" />
<TextView
android:id="@+id/mTextView_light"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/mySeekBar_light"
android:layout_marginLeft="26dp"
android:layout_marginTop="42dp"
android:layout_toRightOf="@+id/textView1" />
MainActivity.class中
public class MainActivity extends Activity {
private int mBrightness = 0;
private SeekBar mSeekBar_light;
private TextView mTextView_light;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSeekBar_light = (SeekBar) findViewById(R.id.mySeekBar_light);
mTextView_light = (TextView) findViewById(R.id.mTextView_light);
mSeekBar_light
.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
mBrightness = BrightnessUtils.getScreenBrightness(MainActivity.this);
mTextView_light.setText(""+mBrightness);
mSeekBar_light.setProgress(mBrightness);
}
// 进度条值改变时,调节屏幕亮度
private class OnSeekBarChangeListenerImp implements
SeekBar.OnSeekBarChangeListener {
// 触发操作,拖动
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
mBrightness = seekBar.getProgress();
mTextView_light.setText(""+mBrightness);
BrightnessUtils.setCurWindowBrightness(MainActivity.this, mBrightness);
}
// 表示进度条刚开始拖动,开始拖动时候触发的操作
public void onStartTrackingTouch(SeekBar seekBar) {
}
// 停止拖动时候
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
}
BrightnessUtils.java类中(工具类封装监听屏幕亮度的方法)
package cn.itas109.brightnessadjust;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.WindowManager;
/*
* Android调节屏幕亮度工具类
* by itas109
* http://blog.csdn.net/itas109
*
* 注意:需要添加setting权限
* <uses-permission android:name="android.permission.WRITE_SETTINGS" />
*/
public class BrightnessUtils {
// 判断是否开启了自动亮度调节
public static boolean IsAutoBrightness(Context context) {
boolean IsAutoBrightness = false;
try {
IsAutoBrightness = Settings.System.getInt(
context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
}
catch (SettingNotFoundException e)
{
e.printStackTrace();
}
return IsAutoBrightness;
}
// 获取当前屏幕的亮度
public static int getScreenBrightness(Context context) {
int nowBrightnessValue = 0;
ContentResolver resolver = context.getContentResolver();
try {
nowBrightnessValue = android.provider.Settings.System.getInt(
resolver, Settings.System.SCREEN_BRIGHTNESS);
}
catch (Exception e) {
e.printStackTrace();
}
return nowBrightnessValue;
}
// 设置亮度
// 程序退出之后亮度失效
public static void setCurWindowBrightness(Context context, int brightness) {
// 如果开启自动亮度,则关闭。否则,设置了亮度值也是无效的
if (IsAutoBrightness(context)) {
stopAutoBrightness(context);
}
// context转换为Activity
Activity activity = (Activity) context;
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
// 异常处理
if (brightness < 1) {
brightness = 1;
}
// 异常处理
if (brightness > 255) {
brightness = 255;
}
lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
activity.getWindow().setAttributes(lp);
}
// 设置系统亮度
// 程序退出之后亮度依旧有效
public static void setSystemBrightness(Context context, int brightness) {
// 异常处理
if (brightness < 1) {
brightness = 1;
}
// 异常处理
if (brightness > 255) {
brightness = 255;
}
saveBrightness(context, brightness);
}
// 停止自动亮度调节
public static void stopAutoBrightness(Context context) {
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
// 开启亮度自动调节
public static void startAutoBrightness(Context context) {
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
}
// 保存亮度设置状态
public static void saveBrightness(Context context, int brightness) {
Uri uri = android.provider.Settings.System
.getUriFor("screen_brightness");
android.provider.Settings.System.putInt(context.getContentResolver(),
"screen_brightness", brightness);
context.getContentResolver().notifyChange(uri, null);
}
}