安卓调节屏幕亮度Seekbar

来源:互联网 发布:jsp和javascript 编辑:程序博客网 时间:2024/06/05 14:50
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);
    }

}







0 0
原创粉丝点击