Android屏幕亮度
本篇文章主要介绍下android 屏幕亮度相关的内容.
1: 申请权限
修改屏幕亮度需要申请WRITE_SETTINGS权限
<uses-permissionandroid:name="android.permission.WRITE_SETTINGS"tools:ignore="ProtectedPermissions"/>WRITE_SETTINGS权限无法通过动态申请的方式来申请.
比如demo中我们单独只申请android.permission.WRITE_SETTINGS权限.
打开demo的应用信息,可以看到应用权限中提示的是 未申请任何权限
那如何来申请权限呢?
我们可以通过跳转相关页面进行手动设置:
startActivity(newIntent(Settings.ACTION_MANAGE_WRITE_SETTINGS))2: 判断权限是否申请.
上面我们只是跳转了权限设置的页面,那么如何判断是否已经设置成功呢?
这里用到系统的方法:
Settings.System.canWrite(this);我们添加下判断方法:
@RequiresApi(api =Build.VERSION_CODES.M)privatebooleanisCanWrite(){
returnSettings.System.canWrite(this);}3:判断是否自动亮度
接着我们关注下屏幕亮度下的自动亮度功能.
首先我们可以根据屏幕亮度mode这个字段来判断:
/**
* Control whether to enable automatic brightness mode.
*/publicstaticfinalStringSCREEN_BRIGHTNESS_MODE="screen_brightness_mode";mode有:
/**
* SCREEN_BRIGHTNESS_MODE value for manual mode.
*/publicstaticfinalintSCREEN_BRIGHTNESS_MODE_MANUAL=0;/**
* SCREEN_BRIGHTNESS_MODE value for automatic mode.
*/publicstaticfinalintSCREEN_BRIGHTNESS_MODE_AUTOMATIC=1;通过调用Settings.System.getInt()方法获取屏幕亮度模式,如果返回值为Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC,则表示开启了自动亮度调节,具体的代码如下:
/**
* SCREEN_BRIGHTNESS_MODE判断是否设置自动亮度
* @return
*/privatebooleanisAutoScreenBrightness(){
try{
int mode =Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE);return mode ==Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;}catch(Settings.SettingNotFoundException e){
e.printStackTrace();}returnfalse;}4: 关闭打开自动亮度
关闭打开自动亮度的开关也很简单,就是修改SCREEN_BRIGHTNESS_MODE的值即可,代码如下:
开启自动亮度
privatevoidopenAutoScreenBrightness(){ Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);}关闭自动亮度
privatevoidcloseAutoScreenBrightness(){ Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);}


发布评论