我想在android中以编程方式更改屏幕亮度。 目前我使用此代码:
WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
但是这个示例代码适用于蛋糕,而不是最新版本。我使用的是最新版本的SDK。对于较新的Android版本,首选解决方案是什么?
答案 0 :(得分:80)
这可以通过使用:
来实现WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);
另见: http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness
答案 1 :(得分:4)
你必须在Window
创建之前添加参数,否则会抛出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之间。
答案 2 :(得分:2)
@kamal_tech_view:您必须将值 layout.screenBrightness = value; 转换为float
答案 3 :(得分:1)
如何使用IHardwareService接口呢?可以在此tutorial中找到一个示例。
更新:教程链接仍然有效,但下一个答案中也提供了实际代码。
答案 4 :(得分:1)
答案太晚但想改进..
我尝试使用Tor-morten的代码,但它适用于特定的屏幕本身,我想在任何地方改变,我为此做了服务。
Change brightness according to surrounding light in android
希望,这对其他人有用。
答案 5 :(得分:0)
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();