设置屏幕的亮度的应用场景很多,比如:阅读电子书,视频,等等。
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);
}
}
友情链接
CoordinatorLayout与AppBarLayout实现顶部悬停效果
http://blog.csdn.net/wangxiaohuhu1314/article/details/79298847