Android 修改屏幕背光方案
极力推荐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);}
修改屏幕亮度包含两种:APP
。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 修改屏幕背光方案相关推荐
- Android 修改屏幕亮度方案
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一.获取系统Settings 中的亮度 二.修改APP界面屏幕亮度,不会影响其他APP 三.修改系统Sett ...
- Android开发——Android手机屏幕适配方案总结
0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...
- android修改自动背光,android 背光控制
echo 23 > /sys/devices/platform/atmel_lcdfb.0/backlight/backlight/brightness android 源代码 http://b ...
- android关闭屏幕背光,Android 的背光控制
echo 23 > /sys/devices/platform/atmel_lcdfb.0/backlight/backlight/brightness http://android.git.k ...
- Android之屏幕适配方案
在说明适配方案之前,我们需要对如下几个概念有所了解:屏幕尺寸,屏幕分辨率,屏幕像素密度. 屏幕尺寸 屏幕尺寸指屏幕的对角线的物理长度,单位是英寸,1英寸=2.54厘米. 比如常见的屏幕尺寸:5.0.5 ...
- 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在 ...
- Android 修改屏幕密度(开发者选项中的最小宽度)
1.adb或者串口形式 查看当前屏幕密度:wm density 设置当前屏幕密度:wm density 640 查看当前屏幕密度:wm density reset 2.源码默认设置屏幕密度 fram ...
- android修改自动背光,Android LCD和键盘 背光亮度设置
亮度设置 应用设计 1.1 设置进度条范围 背光设置是在:设置->声音和显示->亮度,通过进度条来设置的. 文件:packages/apps/Settings/src/com/Androi ...
- (一)安卓修改屏幕背光默认亮度(framework修改法)
本文所在的平台是安卓10 1.修改文件config.xml 本平台路径:/frameworks/base/core/res/res/values/config.xml 搜索 最暗值:config_sc ...
最新文章
- react native 导入组件
- java ee中javamail注解_JavaEE之注解
- 千万别只顾着代码不上厕所
- 为取消大小周而欢呼?字节员工可不那么想...
- .NET2.0学习资料
- Linux的gcc可以看汇编,linux gcc 内嵌汇编
- 信号的采样与插值重建(包含matlab)
- 从容 IT 人生路,开发工具伴我行——“葡萄城 30 周年”征文
- 刘强东卸任!“二号位”徐雷:从摇滚青年到掌舵京东
- oracle e18,oracle 体系结构
- 百度网盘破解版,满速下载不限速【转载,亲测有效】
- 5G网络架构 — 接入网/传输网/核心网
- PDF怎么编辑,如何给PDF添加书签
- Fabric实战(12)Fabric CA-账号服务器
- oracle创建一个永久性表空间,Oracle表空间简单管理永久表空间
- Incorrect string value: '\\xE6\\xBF\\x80\\xE5\\x85\\x89...' for column 'rukuName' at row 1 QMYSQL:
- mstar v56几路hdmi_MSTAR运用及问题汇总_整理
- My Fifty-First Page - 组合总和 - By Nicolas
- 计算机音乐红色彼岸花,《抖音》红色彼岸花花瓣遍地撒是什么歌
- 14款超时尚的HTML5时钟动画