admin 管理员组

文章数量: 1184232

一、获取系统Settings 中的亮度
二、修改APP界面屏幕亮度,不会影响其他APP
三、修改系统Settings 中屏幕亮度,影响所有APP
四、完整代码实现

一、获取系统Settings 中的亮度

系统屏幕亮度值在(0~255)之间,获取方法很简单,只需要调用以下方法即可。

/**
	 * 1.获取系统默认屏幕亮度值 屏幕亮度值范围(0-255)
	 * **/privateintgetScreenBrightness(Context context){
   
   ContentResolver contentResolver = context.getContentResolver();int defVal =125;returnSettings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS, defVal);}

修改屏幕亮度包含两种:
1.修改APP界面屏幕亮度,不会影响其他APP。
2.修改系统 Settings 中屏幕亮度,影响所有APP.

二,修改APP界面屏幕亮度,不会影响其他APP

修改自身 APP 亮度很简单,只需要在Activity OnCreate 方法调用如下代码即可。

/**
	 * 2.设置 APP界面屏幕亮度值方法
	 * **/privatevoidsetAppScreenBrightness(int birghtessValue){
   
   Window window =getWindow();WindowManager.LayoutParams lp = window.getAttributes();
		lp.screenBrightness = birghtessValue /255.0f;
		window.setAttributes(lp);}

三、修改系统Settings 中屏幕亮度,影响所有APP

修改系统 Settings 中的屏幕亮度,由于会影响到所有APP,需要申请修改Settings 的权限<uses-permission * android:name=“android.permission.WRITE_SETTINGS”/>,同时需要取消光感自动调节屏幕亮度的功能,设置为手动调节模式,否则光感传感器会随着光照强度的变化修改系统屏幕亮度,并且非系统签名的APP,需要用户手动授权后才可以修改背光亮度。
关闭光感,设置手动调节背光模式实现方法如下:

/**
	 * 3.关闭光感,设置手动调节背光模式
	 * 
	 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节屏幕亮度模式值为1
	 * 
	 * SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节屏幕亮度模式值为0
	 * **/publicvoidsetScreenManualMode(Context context){
   
   ContentResolver contentResolver = context.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();}}

非系统签名应用,引导用户手动授权修改Settings 权限
非系统签名应用,无法直接修改Settings,需要引导用户手动授权。

/**
	 * 4.非系统签名应用,引导用户手动授权修改Settings 权限
	 * **/privatestaticfinalint REQUEST_CODE_WRITE_SETTINGS =1000;privatevoidallowModifySettings(){
   
   // Settings.System.canWrite(MainActivity.this)// 检测是否拥有写入系统 Settings 的权限if(!Settings.System.canWrite(MainActivity.this)){
   
   AlertDialog.Builder builder =newAlertDialog.Builder(this,android.R.style.Theme_Material_Light_Dialog_Alert);
			builder.setTitle("请开启修改屏幕亮度权限"

本文标签: 修改 亮度 系统