package com.example.lightsensortest;
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.view.Window;
import android.view.WindowManager;
import androidx.appcompat.app.AppCompatActivity;
//需要权限 <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
public class BrightnessA {
//屏幕亮度最亮255,最暗0
//获取系统亮度值
public static int getScreenBrightness(Context context){
// setBrightnessManualMode(context);
ContentResolver contentResolver=context.getContentResolver();
int defaultValue=-1;
return Settings.System.getInt(contentResolver,
Settings.System.SCREEN_BRIGHTNESS, defaultValue);
}
//获取当前app 当前屏幕亮度值
public static float getCurrentAppBrightness(Context context) {
Window window = ((AppCompatActivity)context).getWindow();
WindowManager.LayoutParams lp=window.getAttributes();
return window.getAttributes().screenBrightness *255;
}
//设置屏幕亮度
//注:屏幕亮度最亮255,最暗0
public static void setScreenBrightness(int brightness,Context context) {
if(brightness<0||brightness>255){
throw new SecurityException("=======亮度值需设置在 0-255 之间的int值=======");
}
//设置为手动模式
setBrightnessManualMode(context);
//设置屏幕亮度
Window window = ((AppCompatActivity)context).getWindow();
WindowManager.LayoutParams lp=window.getAttributes();
lp.screenBrightness = brightness / 255.0f;
window.setAttributes(lp);
}
/**设置屏幕最亮**/
public static void setMaxBrightness(Context context){
//设置为手动模式
setBrightnessManualMode(context);
//设置屏幕亮度
setScreenBrightness(255,context);
}
/**设置屏幕最暗**/
public static void setMinBrightness(Context context){
//设置为手动模式
setBrightnessManualMode(context);
//设置屏幕亮度
setScreenBrightness(0,context);
}
//设置屏幕常亮
//需要在界面调用 "setContentView(R.layout.布局id);" 之前调用。
public static void setScreenKeepOn(Context context){
((AppCompatActivity)context).getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
//清除屏幕常亮
//常在activity的onPause()周期内调用(仅供参考)
public static void cancelScreenKeepOn(Context context){
((AppCompatActivity)context).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
//设置亮度调节模式为手动模式
//SCREEN_BRIGHTNESS_MODE_AUTOMATIC:自动调节模式
//SCREEN_BRIGHTNESS_MODE_MANUAL:手动调节模式
private static void setBrightnessManualMode(Context context){
ContentResolver contentResolver=context.getContentResolver();
int model= 0;
try {
model = Settings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
if(model==Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC){
Settings.System.putInt(
contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
}
}