Java Android:更改(亮度)设置后如何刷新屏幕
我想做的是创建一个代码,当用户移动SeekBar时,它会改变手机的亮度(移动时),并将其设置为phonesMAIN设置。 我已经剪掉了我认为是问题所在的部分代码Java Android:更改(亮度)设置后如何刷新屏幕,java,android,refresh,settings,screen,Java,Android,Refresh,Settings,Screen,我想做的是创建一个代码,当用户移动SeekBar时,它会改变手机的亮度(移动时),并将其设置为phonesMAIN设置。 我已经剪掉了我认为是问题所在的部分代码 public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { android.provider.Settings.System.putInt(getContentResolver(), android.provider.S
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
android.provider.Settings.System.putInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, progress);
}
如果你需要更多的信息,请告诉我。它确实会改变亮度,但你必须刷新屏幕-按下电源按钮,然后再次解锁-它才能工作,我想不出一种编程方式来实现这一点
任何帮助或建议将不胜感激,谢谢:)您将需要WindowManager帮助您更改亮度。我的英语不好,所以我写了如下示例代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness);
//Brightness is a float-point number between 0 and 1,But getProess() returns Int, so, we can setMax(100), and then we div 100 later.
ScreenBrightnessSeekBar.setMax(100);
ScreenBrightnessSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {}
public void onStartTrackingTouch(SeekBar seekBar) {}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
setScreenBrightness((float)seekBar.getProgress()/100);
}
});
}
private void setScreenBrightness(float b){
//get window attributes and save in layoutParams
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = b;
//display the new brightness
getWindow().setAttributes(layoutParams);
}
//新代码:
SeekBar screenBrightnessSeekBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness);
screenBrightnessSeekBar.setMax(255);
screenBrightnessSeekBar.setProgress((int) (android.provider.Settings.System.getInt(
getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, 255)));
screenBrightnessSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {}
public void onStartTrackingTouch(SeekBar seekBar) {}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, progress);
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = (float)progress / 255;
getWindow().setAttributes(layoutParams);
}
}
});
}
您需要在AndroidManifest.xml中使用此权限
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
谢谢,但这并不是我想要的。我希望能够在操作系统的主设置(设置>显示>亮度)中更改亮度。这只会更改“活动”中的亮度。有什么想法吗?顺便说一句,你的英语很好:)哦,现在我明白你的意思了。事实上,如果你把我们的代码放在一起,你会得到你想要的。新代码已在上面编写。我试过了,效果不错。