Android 修改屏幕亮度
一、获取系统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 修改屏幕亮度相关推荐
- Android 修改屏幕亮度方案
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一.获取系统Settings 中的亮度 二.修改APP界面屏幕亮度,不会影响其他APP 三.修改系统Sett ...
- WPF 修改屏幕亮度
在 WPF 中可以使用 Dxva2 或 GDI 的方法调整屏幕亮度或获取屏幕亮度 比较推荐使用 Dxva2 的方法修改亮度,但不是所有的屏幕都支持的.假定某个设备有多个屏幕,此时可以使用 User32 ...
- Android 修改屏幕背光方案
极力推荐Android 开发大总结文章:欢迎收藏Android 开发技术文章大总结 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一.获取系统Settin ...
- iOS调用系统闪光灯以及实时修改屏幕亮度
最近看到有个软件上面有闪光灯的效果,觉得很好玩,决定自己也要弄一个这样的小程序出来.在网上搜索了相关资料后,写出来了,代码量并不是很多,主要用到了官方API:avfoundation框架.下面我们看具 ...
- Android设置屏幕亮度
目录 目录 使用场景 屏幕亮度调节模式 获取屏幕亮度值 设置系统屏幕亮度值 设置当前窗口亮度 使用场景 最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度. 其实,调 ...
- android调整屏幕亮度
一:只改变当前程序android屏幕亮度 (1)方法: lp.screenBrightness 取值 0.0 -- 1.0 ※设定值(float)的范围,默认小于 0(系统设定).0.0(暗)-1.0 ...
- Android调整屏幕亮度和改变屏幕亮度调整模式的代码
最近有一个调整屏幕亮度的需求,在网上找了各种代码,心乱如麻.不是长篇大论说源码的,就是只言片语就上代码的,关键是代码还不能直接用. 这里面确实是有一些坑,在这里我会把可以用的代码写出来,并且告诉大家坑 ...
- android系统屏幕亮度调节
在$SDK/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java中修改,PhoneWi ...
- android+系统屏幕亮度,android 设置系统屏幕亮度
android 设置系统屏幕亮度 权限 /** * 获得当前屏幕亮度的模式 * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHT ...
- 重温Android——调节屏幕亮度
唔,明天要去网易笔试Android实习生,于是翻出以前写的Android代码,温习一下,想象一下,当然,这必然不会导致太多的本质改变,不过总得试试,就这样, 上代码. 1 package androi ...
最新文章
- Android源码下载总结
- 基于jquery多种切换效果的焦点图(兼容ie6)
- 在Qt(C++)中使用QThread实现多线程
- 文巾解题 100. 相同的树
- java文件处理之压缩,分割
- java 方法 示例_Java语言环境getVariant()方法与示例
- SpringBoot整合ElasticSearch实现多版本的兼容
- 大家觉得现在最赚钱的电商形式是什么?
- java面向对象三个关键字,Java 面向对象(三)static 关键字
- 关于latex的网站推荐
- SCCM 2012系列13 操作系统播发②
- Spark SQL 源代码分析之Physical Plan 到 RDD的详细实现
- Python 集合 day3
- 假如时光倒流,我会这么学习Java 【转载】
- 文件如何自动上传到服务器,ftp如何自动上传文件到服务器
- 射频信号源及射频信号测试接口案例-纳米软件
- 精通Apache Flink读书笔记
- Mac解决JAVA_HOME问题
- ESD静电保护二极管应用行业举例
- itemarray的意思