在android中以编程方式更改屏幕亮度

我想在android中以编程方式更改屏幕亮度。 目前我使用这个代码:

WindowManager.LayoutParams lp = getWindow().getAttributes(); float brightness=1.0f; lp.screenBrightness = brightness; getWindow().setAttributes(lp); 

但是这个示例代码适用于蛋糕,而不是最新版本。 我正在使用最新版本的SDK ..什么是较新的Android版本的首选解决scheme?

如何使用IHardwareService接口呢? 一个例子可以在这个教程中find。

更新:教程链接仍然有效,但实际的代码也可以在下一个答案。

这可以通过使用:

 WindowManager.LayoutParams layout = getWindow().getAttributes(); layout.screenBrightness = 1F; getWindow().setAttributes(layout); 

另请参阅: http : //developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness

你必须在创buildWindow之前添加Params,否则会抛出java.lang.IllegalArgumentException: Window type can not be changed after the window is added.

看到一个android.app.Dialog.Dialog的例子。

 final Dialog dialog = new Dialog(this) { @Override public void onAttachedToWindow() { super.onAttachedToWindow(); WindowManager.LayoutParams layout = getWindow() .getAttributes(); layout.screenBrightness = 1F; getWindow().setAttributes(layout); } }; dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); dialog.show(); 

请注意,亮度值在0.0F和1.0F之间。

@kamal_tech_view:你必须转换值layout.screenBrightness = value;

答案太迟,但要改善..

我尝试了Tor-Morten的代码,但它本身就是特定的屏幕,我想在任何地方改变,我为此做了服务。

根据android中的周围光线更改亮度

希望对别人有用。

 final Dialog dialog = new Dialog(act); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog .setContentView(R.layout.menubase_brightness_control); dialog.setCanceledOnTouchOutside(true); SeekBar global_brightness_control = (SeekBar) dialog .findViewById(R.id.global_brightness_control); global_brightness_control.setMax(255); global_brightness_control.setProgress(Settings.System.getInt( con.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS)); global_brightness_control .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { Settings.System .putInt(con.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, progress); } }); dialog.show();