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

一、获取系统Settings 中的亮度

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

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

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

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

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

/*** 2.设置 APP界面屏幕亮度值方法* **/private void setAppScreenBrightness(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* **/public void setScreenManualMode(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 权限* **/private static final int REQUEST_CODE_WRITE_SETTINGS = 1000;private void allowModifySettings() {// Settings.System.canWrite(MainActivity.this)// 检测是否拥有写入系统 Settings 的权限if (!Settings.System.canWrite(MainActivity.this)) {AlertDialog.Builder builder = new AlertDialog.Builder(this,android.R.style.Theme_Material_Light_Dialog_Alert);builder.setTitle("请开启修改屏幕亮度权限");builder.setMessage("请点击允许开启");// 拒绝, 无法修改builder.setNegativeButton("拒绝",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"您已拒绝修系统Setting的屏幕亮度权限", Toast.LENGTH_SHORT).show();}});builder.setPositiveButton("去开启",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 打开允许修改Setting 权限的界面Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:"+ getPackageName()));startActivityForResult(intent,REQUEST_CODE_WRITE_SETTINGS);}});builder.setCancelable(false);builder.show();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {// Settings.System.canWrite方法检测授权结果if (Settings.System.canWrite(getApplicationContext())) {// 5.调用修改Settings屏幕亮度的方法 屏幕亮度值 200ModifySettingsScreenBrightness(MainActivity.this, 200);Toast.makeText(this, "系统屏幕亮度值" + getScreenBrightness(this),Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "您已拒绝修系统Setting的屏幕亮度权限",Toast.LENGTH_SHORT).show();}}}}

修改Setting 中屏幕亮度值 实现
拥有系统签名的应用可以直接调用此方法修改系统屏幕亮度,非系统签名应用,只有用户授权后才可以修改。

/*** 5.修改Setting 中屏幕亮度值* * 修改Setting的值需要动态申请权限 <uses-permission* android:name="android.permission.WRITE_SETTINGS"/>* **/private void ModifySettingsScreenBrightness(Context context,int birghtessValue) {// 首先需要设置为手动调节屏幕亮度模式setScreenManualMode(context);ContentResolver contentResolver = context.getContentResolver();Settings.System.putInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS, birghtessValue);}

四、完整代码实现

完整代码实现如下:

package com.example.test;import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//获取屏幕亮度getScreenBrightness(this);Toast.makeText(this, "系统屏幕亮度值" + getScreenBrightness(this),Toast.LENGTH_SHORT).show();// 设置APP 屏幕亮度后,系统Setting亮度将对此app 不生效setAppScreenBrightness(100);allowModifySettings();setContentView(R.layout.activity_main);}/*** 1.获取系统默认屏幕亮度值 屏幕亮度值范围(0-255)* **/private int getScreenBrightness(Context context) {ContentResolver contentResolver = context.getContentResolver();int defVal = 125;return Settings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS, defVal);}/*** 2.设置 APP界面屏幕亮度值方法* **/private void setAppScreenBrightness(int birghtessValue) {Window window = getWindow();WindowManager.LayoutParams lp = window.getAttributes();lp.screenBrightness = birghtessValue / 255.0f;window.setAttributes(lp);}/*** 3.关闭光感,设置手动调节背光模式* * SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节屏幕亮度模式值为1* * SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节屏幕亮度模式值为0* **/public void setScreenManualMode(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();}}/*** 4.非系统签名应用,引导用户手动授权修改Settings 权限* **/private static final int REQUEST_CODE_WRITE_SETTINGS = 1000;private void allowModifySettings() {// Settings.System.canWrite(MainActivity.this)// 检测是否拥有写入系统 Settings 的权限if (!Settings.System.canWrite(MainActivity.this)) {AlertDialog.Builder builder = new AlertDialog.Builder(this,android.R.style.Theme_Material_Light_Dialog_Alert);builder.setTitle("请开启修改屏幕亮度权限");builder.setMessage("请点击允许开启");// 拒绝, 无法修改builder.setNegativeButton("拒绝",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"您已拒绝修系统Setting的屏幕亮度权限", Toast.LENGTH_SHORT).show();}});builder.setPositiveButton("去开启",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 打开允许修改Setting 权限的界面Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:"+ getPackageName()));startActivityForResult(intent,REQUEST_CODE_WRITE_SETTINGS);}});builder.setCancelable(false);builder.show();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {// Settings.System.canWrite方法检测授权结果if (Settings.System.canWrite(getApplicationContext())) {// 5.调用修改Settings屏幕亮度的方法 屏幕亮度值 200ModifySettingsScreenBrightness(MainActivity.this, 200);Toast.makeText(this, "系统屏幕亮度值" + getScreenBrightness(this),Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "您已拒绝修系统Setting的屏幕亮度权限",Toast.LENGTH_SHORT).show();}}}}/*** 5.修改Setting 中屏幕亮度值* * 修改Setting的值需要动态申请权限 <uses-permission* android:name="android.permission.WRITE_SETTINGS"/>* **/private void ModifySettingsScreenBrightness(Context context,int birghtessValue) {// 首先需要设置为手动调节屏幕亮度模式setScreenManualMode(context);ContentResolver contentResolver = context.getContentResolver();Settings.System.putInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS, birghtessValue);}
}

Android 修改屏幕亮度相关推荐

  1. Android 修改屏幕亮度方案

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一.获取系统Settings 中的亮度 二.修改APP界面屏幕亮度,不会影响其他APP 三.修改系统Sett ...

  2. WPF 修改屏幕亮度

    在 WPF 中可以使用 Dxva2 或 GDI 的方法调整屏幕亮度或获取屏幕亮度 比较推荐使用 Dxva2 的方法修改亮度,但不是所有的屏幕都支持的.假定某个设备有多个屏幕,此时可以使用 User32 ...

  3. Android 修改屏幕背光方案

    极力推荐Android 开发大总结文章:欢迎收藏Android 开发技术文章大总结 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一.获取系统Settin ...

  4. iOS调用系统闪光灯以及实时修改屏幕亮度

    最近看到有个软件上面有闪光灯的效果,觉得很好玩,决定自己也要弄一个这样的小程序出来.在网上搜索了相关资料后,写出来了,代码量并不是很多,主要用到了官方API:avfoundation框架.下面我们看具 ...

  5. Android设置屏幕亮度

    目录 目录 使用场景 屏幕亮度调节模式 获取屏幕亮度值 设置系统屏幕亮度值 设置当前窗口亮度 使用场景 最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度. 其实,调 ...

  6. android调整屏幕亮度

    一:只改变当前程序android屏幕亮度 (1)方法: lp.screenBrightness 取值 0.0 -- 1.0 ※设定值(float)的范围,默认小于 0(系统设定).0.0(暗)-1.0 ...

  7. Android调整屏幕亮度和改变屏幕亮度调整模式的代码

    最近有一个调整屏幕亮度的需求,在网上找了各种代码,心乱如麻.不是长篇大论说源码的,就是只言片语就上代码的,关键是代码还不能直接用. 这里面确实是有一些坑,在这里我会把可以用的代码写出来,并且告诉大家坑 ...

  8. android系统屏幕亮度调节

    在$SDK/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中修改,PhoneWi ...

  9. android+系统屏幕亮度,android 设置系统屏幕亮度

    android 设置系统屏幕亮度 权限 /** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHT ...

  10. 重温Android——调节屏幕亮度

    唔,明天要去网易笔试Android实习生,于是翻出以前写的Android代码,温习一下,想象一下,当然,这必然不会导致太多的本质改变,不过总得试试,就这样, 上代码. 1 package androi ...

最新文章

  1. Android源码下载总结
  2. 基于jquery多种切换效果的焦点图(兼容ie6)
  3. 在Qt(C++)中使用QThread实现多线程
  4. 文巾解题 100. 相同的树
  5. java文件处理之压缩,分割
  6. java 方法 示例_Java语言环境getVariant()方法与示例
  7. SpringBoot整合ElasticSearch实现多版本的兼容
  8. 大家觉得现在最赚钱的电商形式是什么?
  9. java面向对象三个关键字,Java 面向对象(三)static 关键字
  10. 关于latex的网站推荐
  11. SCCM 2012系列13 操作系统播发②
  12. Spark SQL 源代码分析之Physical Plan 到 RDD的详细实现
  13. Python 集合 day3
  14. 假如时光倒流,我会这么学习Java 【转载】
  15. 文件如何自动上传到服务器,ftp如何自动上传文件到服务器
  16. 射频信号源及射频信号测试接口案例-纳米软件
  17. 精通Apache Flink读书笔记
  18. Mac解决JAVA_HOME问题
  19. ESD静电保护二极管应用行业举例
  20. itemarray的意思

热门文章

  1. SpringBoot大数据分析后台管理系统平台
  2. Java实现PDF文件生成并且打印pdf文件(附demo)
  3. html回到上一步,【答疑】Photoshop返回上一步和下一步快捷键是什么? - 视频教程线上学...
  4. javaWeb连接数据库实现简单的登陆注册功能
  5. 已解决 | burp无法抓取iphone https数据包
  6. 明清徽州宗族的异姓承继
  7. 网页视频之ACC格式解析
  8. html的根标签是什么,html标签
  9. java实现阳历农历节以及节假日日期计算
  10. 重庆首个程序员社区成立