Android調整画面輝度分析ソース

6404 ワード

皆さんはandroidの中でどのように明るさを調節するか知っていますか?次に劉さんはandroidの中で明るさを調整するコード解析を見てみましょうbrightness(明るさ)はwindowの中の1つの属性で明るさを修正するには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 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); } } }