1、一般的app没有修改系统屏幕亮度的权限,要system权限才可以!
2、一般分两种:
(1)、当前屏幕activity(window)
(2)、系统屏幕亮度
实现:
设置为手动
/*
* 设置系统参数为手动操作
*/
private void setScrennManualMode() {
ContentResolver contentResolver = this.getContentResolver();
try {
int mode = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE);
if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
}
/设置亮度值
ContentResolver contentResolver;
contentResolver = MoreActivity.this.getContentResolver();
Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, tmpInt);
3、使用进度条拉升的形式修改值
///布局:
<SeekBar
android:id="@+id/seekBar_light"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="7dp"
android:max="255"
android:progressDrawable="@drawable/seekbar_light"
android:thumb="@drawable/night_mode_seekbar_thumb" />
// 取得当前亮度
int normal = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 255);
// 进度条绑定当前亮度
mSeekBarBrightness.setProgress(normal);
mSeekBarBrightness.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 取得当前进度
int tmpInt = seekBar.getProgress();
// 当进度小于80时,设置成80,防止太黑看不见的后果。
if (tmpInt < 50) {
tmpInt = 50;
}
// 根据当前进度改变亮度
if (tmpInt > 0 && tmpInt <= 255) {
Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, tmpInt);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
});