设置屏幕的亮度的应用场景很多,比如:阅读电子书,视频,等等。
1.添加权限
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"/>2.设置屏幕亮度
package com.example.wh.myapplication; import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.provider.Settings; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.WindowManager; import android.widget.SeekBar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SeekBar seekBar = findViewById(R.id.seekBar); String model = Build.MODEL; if ("ALP-AL00".equals(model)){ //如果是华为Mate 10 就设置最大亮度是165 seekBar.setMax(165); }else { //其余大部分手机最大亮度是255 seekBar.setMax(255); } //当前 int screenBrightness = getScreenBrightness(getApplicationContext()); seekBar.setProgress(screenBrightness); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { setBrightness(MainActivity.this,i); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(getApplicationContext(), Activity1.class)); } }); } /** * 判断是否开启了自动亮度调节 */ public static boolean isAutoBrightness(Context context) { ContentResolver resolver = context.getContentResolver(); boolean automicBrightness = false; try { automicBrightness = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; } catch (Settings.SettingNotFoundException e) { e.printStackTrace(); } return automicBrightness; } /** * 获取屏幕的亮度 */ public static int getScreenBrightness(Context context) { int nowBrightnessValue = 0; ContentResolver resolver = context.getContentResolver(); try { nowBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS); } catch (Exception e) { e.printStackTrace(); } return nowBrightnessValue; } /** * 设置当前Activity显示时的亮度 * 屏幕亮度最大数值一般为255,各款手机有所不同 * screenBrightness 的取值范围在[0,1]之间 */ public static void setBrightness(Activity activity, int brightness) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f); activity.getWindow().setAttributes(lp); } /** * 开启关闭自动亮度调节 */ public static boolean autoBrightness(Context activity, boolean flag) { int value = 0; if (flag) { value = Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; //开启 } else { value = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;//关闭 } return Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, value); } /** * 保存亮度设置状态,退出app也能保持设置状态 */ public static void saveBrightness(Context context, int brightness) { ContentResolver resolver = context.getContentResolver(); Uri uri = android.provider.Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS); android.provider.Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS, brightness); resolver.notifyChange(uri, null); } }友情链接
http://blog.csdn.net/wangxiaohuhu1314/article/details/79298847