Android調整画面輝度分析ソース
6404 ワード
皆さんはandroidの中でどのように明るさを調節するか知っていますか?次に劉さんはandroidの中で明るさを調整するコード解析を見てみましょうbrightness(明るさ)はwindowの中の1つの属性で明るさを修正するにはwindowの属性を取得する方法が必要です.
?
コードクリップ、ダブルクリックコピー
01
02
03
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
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
?
コードクリップ、ダブルクリックコピー
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
public
class
SeekBarPreference
extends
DialogPreference
implements
OnSeekBarChangeListener{
private
static
final
String TAG =
"SeekBarPreference"
;
private
static
final
int
MINIMUM_BACKLIGHT =
30
;
//
private
static
final
int
MAXIMUM_BACKLIGHT =
255
;
private
SeekBar bar;
private
int
oldBrightness;
private
SharedPreferences sp;
private
static
String KEY=
"brightness"
;
public
SeekBarPreference(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
protected
void
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
protected
void
onDialogClosed(
boolean
positiveResult) {
// TODO Auto-generated method stub
super
.onDialogClosed(positiveResult);
if
(positiveResult){
/*do nothing*/
}
else
{
sp.edit().putInt(KEY, oldBrightness).commit();
}
}
@Override
public
void
onProgressChanged(SeekBar seekbar,
int
progress,
boolean
arg2) {
// TODO Auto-generated method stub
sp.edit().putInt(KEY, progress+MINIMUM_BACKLIGHT).commit();
// ,
}
@Override
public
void
onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public
void
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
public
class
ControlBrightness
extends
PreferenceActivity
implements
OnSharedPreferenceChangeListener {
private
SeekBarPreference seekBarPreference;
private
Button enBtn;
private
Button disBtn;
@Override
protected
void
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
public
void
onSharedPreferenceChanged(SharedPreferences sp, String key) {
// TODO Auto-generated method stub
if
(TextUtils.equals(key,
"brightness"
)){
int
brightness=sp.getInt(
"brightness"
,
125
);
LayoutParams lp= getWindow().getAttributes();
lp.screenBrightness=brightness/
255
.0f;
getWindow().setAttributes(lp);
}
}
}