极力推荐Android 开发大总结文章:欢迎收藏Android 开发技术文章大总结

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

一、获取系统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);}

修改屏幕亮度包含两种:APPSettings 中屏幕亮度,影响所有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. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

  3. android修改自动背光,android 背光控制

    echo 23 > /sys/devices/platform/atmel_lcdfb.0/backlight/backlight/brightness android 源代码 http://b ...

  4. android关闭屏幕背光,Android 的背光控制

    echo 23 > /sys/devices/platform/atmel_lcdfb.0/backlight/backlight/brightness http://android.git.k ...

  5. Android之屏幕适配方案

    在说明适配方案之前,我们需要对如下几个概念有所了解:屏幕尺寸,屏幕分辨率,屏幕像素密度. 屏幕尺寸 屏幕尺寸指屏幕的对角线的物理长度,单位是英寸,1英寸=2.54厘米. 比如常见的屏幕尺寸:5.0.5 ...

  6. android修改屏幕长宽比例,Android屏幕适配之修改density

    标准:1920px * 1080 5英寸 480 3 三星s10-22801080 6.1英寸 414 2.58 MI mix2-19201080 5.99 368 2.29 android中的dp在 ...

  7. Android 修改屏幕密度(开发者选项中的最小宽度)

    1.adb或者串口形式 查看当前屏幕密度:wm density 设置当前屏幕密度:wm density  640 查看当前屏幕密度:wm density reset 2.源码默认设置屏幕密度 fram ...

  8. android修改自动背光,Android LCD和键盘 背光亮度设置

    亮度设置 应用设计 1.1 设置进度条范围 背光设置是在:设置->声音和显示->亮度,通过进度条来设置的. 文件:packages/apps/Settings/src/com/Androi ...

  9. (一)安卓修改屏幕背光默认亮度(framework修改法)

    本文所在的平台是安卓10 1.修改文件config.xml 本平台路径:/frameworks/base/core/res/res/values/config.xml 搜索 最暗值:config_sc ...

最新文章

  1. react native 导入组件
  2. java ee中javamail注解_JavaEE之注解
  3. 千万别只顾着代码不上厕所
  4. 为取消大小周而欢呼?字节员工可不那么想...
  5. .NET2.0学习资料
  6. Linux的gcc可以看汇编,linux gcc 内嵌汇编
  7. 信号的采样与插值重建(包含matlab)
  8. 从容 IT 人生路,开发工具伴我行——“葡萄城 30 周年”征文
  9. 刘强东卸任!“二号位”徐雷:从摇滚青年到掌舵京东
  10. oracle e18,oracle 体系结构
  11. 百度网盘破解版,满速下载不限速【转载,亲测有效】
  12. 5G网络架构 — 接入网/传输网/核心网
  13. PDF怎么编辑,如何给PDF添加书签
  14. Fabric实战(12)Fabric CA-账号服务器
  15. oracle创建一个永久性表空间,Oracle表空间简单管理永久表空间
  16. Incorrect string value: '\\xE6\\xBF\\x80\\xE5\\x85\\x89...' for column 'rukuName' at row 1 QMYSQL:
  17. mstar v56几路hdmi_MSTAR运用及问题汇总_整理
  18. My Fifty-First Page - 组合总和 - By Nicolas
  19. 计算机音乐红色彼岸花,《抖音》红色彼岸花花瓣遍地撒是什么歌
  20. 14款超时尚的HTML5时钟动画

热门文章

  1. 一种简单有效的锂电池充电均衡电路
  2. input框灰色提示字,输入时提示字消失
  3. MobaXterm下docker容器中运行界面程序
  4. 小程序数据请求注意事项
  5. 鲁班编程语言 电子书籍 第1章(转)
  6. 双11海报设计者居然不是人!没错,是阿里的AI设计师“鲁班”
  7. Arm架构之系统调用
  8. Overflow:auto/scroll隐藏滚动条但可以滚动
  9. Couplet | 用Python写一副对联送给诸位科研汪!~
  10. 3个步骤教你如何用Python实现网页转PDF