Android调节屏幕亮度分析源码

来源:互联网 发布:淘宝店装修视频 编辑:程序博客网 时间:2024/05/22 02:08
大家知道在android中是怎么调节亮度了吗,接下来刘让我们去看看使用android中调亮点的代码解析吧

  brightness(亮度)是window中的一个属性

  修改亮度需要取得window属性

  方法为:
?
代码片段,双击复制
01
02
03
      WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
  layoutParams.screenBrightness = b;// b是亮度
  getWindow().setAttributes(layoutParams);

  b是一个浮点数 从0~1 ,表示亮度

  因此可以通过设置b的值预览屏幕的亮度,然后通过

  Settings.System.putInt(mContext.getContentResolver(),  Settings.System.SCREEN_BRIGHTNESS,brightness);s设置屏幕亮度,brightness值为30-255

  实现如图所示效果代码:
  1.自定义一个SeekbarPreference继承dialogPreference实现亮度预览
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
publicclass SeekBarPreference extendsDialogPreference implementsOnSeekBarChangeListener{
privatestatic final String TAG = "SeekBarPreference";
privatestatic final int MINIMUM_BACKLIGHT = 30;//最低亮度
privatestatic final int MAXIMUM_BACKLIGHT = 255;
privateSeekBar bar;
privateint oldBrightness;
private   SharedPreferences sp;
privatestatic String KEY="brightness";
publicSeekBarPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogLayoutResource(R.layout.seekbar_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
setDialogIcon(R.drawable.ic_settings_display);
}
@Override
protectedvoid onBindDialogView(View view) {
super.onBindDialogView(view);
sp=getSharedPreferences();
bar= (SeekBar) view.findViewById(R.id.seekbar);
bar.setMax(MAXIMUM_BACKLIGHT-MINIMUM_BACKLIGHT);
oldBrightness=sp.getInt(KEY,125);
bar.setOnSeekBarChangeListener(this);//进度条改变 <a href="\"http://www.2cto.com\"" target="\"_blank\"">www.2cto.com</a>
bar.setProgress(oldBrightness-MINIMUM_BACKLIGHT);//初始化进度条
}
@Override
protectedvoid onDialogClosed(booleanpositiveResult) {
// TODO Auto-generated method stub
super.onDialogClosed(positiveResult);
if(positiveResult){
/*do nothing*/
}else{
sp.edit().putInt(KEY, oldBrightness).commit();
}
}
@Override
publicvoid onProgressChanged(SeekBar seekbar, intprogress, booleanarg2) {
// TODO Auto-generated method stub
sp.edit().putInt(KEY, progress+MINIMUM_BACKLIGHT).commit();   //进度条改变时改变存储数据,
}
@Override
publicvoid onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
publicvoid onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
}

  2.调节亮度
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
publicclass ControlBrightness  extendsPreferenceActivity implementsOnSharedPreferenceChangeListener {
private  SeekBarPreference seekBarPreference;
privateButton enBtn;
privateButton disBtn;
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.buttonbar);
addPreferencesFromResource(R.xml.custom_setting);
SharedPreferences sp=  getSharedPreferences(BatteryUtils.FILE_NAME, MODE_WORLD_WRITEABLE);
sp.registerOnSharedPreferenceChangeListener(this);//监听数据变化,调节屏幕亮度
}
@Override
publicvoid onSharedPreferenceChanged(SharedPreferences sp, String key) {
// TODO Auto-generated method stub
if(TextUtils.equals(key,"brightness")){
intbrightness=sp.getInt("brightness",125);
LayoutParams lp=   getWindow().getAttributes();
lp.screenBrightness=brightness/255.0f;
getWindow().setAttributes(lp);
}
}
}
原创粉丝点击