1、只改变当前程序屏幕亮度

当前屏幕亮度的取值范围:attrs.screenBrightness  0.0(暗)~1.0(亮)

需要屏幕恢复到系统亮度,可将 attrs.screenBrightness 设为 -1

(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE

调用方法

<pre name="code" class="html">public static void setBrightness(int brightValue) {WindowManager.LayoutParams lp = getWindow().getAttributes();lp.screenBrightness = (brightValue <= 0 ? -1.0f : brightValue / 255f);getWindow().setAttributes(lp);}

2、调用系统亮度

所需权限

  <uses-permission android:name="android.permission.WRITE_SETTINGS" />  

可以分为:手动调节和自动调节两种方式( Android   2. 1 以后 提供了自动调节的功能 )

(1)判读是系统是哪种模式:手动还是自动模式

public static boolean isAutoBrightness(Activity activity) {boolean autoBrightness = false;ContentResolver contentResolver = activity.getContentResolver();try {autoBrightness = Settings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;} catch (SettingNotFoundException e) {e.printStackTrace();}return autoBrightness;}

(2)获取当前系统的亮度值:

public static int getBrightness(Activity activity) {int brightValue = 0; ContentResolver contentResolver = activity.getContentResolver();try {brightValue = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);} catch (SettingNotFoundException e) {e.printStackTrace();}  return brightValue;}

(3)设置当前系统的亮度值:

public static void setBrightness(Activity activity, int brightValue) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.screenBrightness = (brightValue <= 0 ? -1.0f : brightValue / 255f);activity.getWindow().setAttributes(lp);}

(4)开启自动调节模式:

public static void startAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");  activity.getContentResolver().notifyChange(uri, null);  }

(5)关闭自动调节模式:

public static void stopAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");  activity.getContentResolver().notifyChange(uri, null);  }

3、封装上述方法

 package com.why.example;import android.app.Activity;
import android.content.ContentResolver;
import android.net.Uri;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.view.WindowManager;/*** 封装系统亮度* @author why*/
public class SystemBrightManager {// 判断是否开启了自动亮度调节public static boolean isAutoBrightness(Activity activity) {boolean autoBrightness = false;ContentResolver contentResolver = activity.getContentResolver();try {autoBrightness = Settings.System.getInt(contentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;} catch (SettingNotFoundException e) {e.printStackTrace();}return autoBrightness;}// 获取当前系统亮度值public static int getBrightness(Activity activity) {int brightValue = 0; ContentResolver contentResolver = activity.getContentResolver();try {brightValue = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);} catch (SettingNotFoundException e) {e.printStackTrace();}  return brightValue;}// 改变屏幕亮度public static void setBrightness(Activity activity, int brightValue) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.screenBrightness = (brightValue <= 0 ? -1.0f : brightValue / 255f);activity.getWindow().setAttributes(lp);}// 开启亮度自动亮度模式public static void startAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");  activity.getContentResolver().notifyChange(uri, null);  }// 停止自动亮度模式public static void stopAutoBrightness(Activity activity) {Settings.System.putInt(activity.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);Uri uri = android.provider.Settings.System.getUriFor("screen_brightness");  activity.getContentResolver().notifyChange(uri, null);  }/** * 设置当前屏幕亮度的模式  * SCREEN_BRIGHTNESS_MODE_AUTOMATIC=1 为自动调节屏幕亮度 * SCREEN_BRIGHTNESS_MODE_MANUAL=0 为手动调节屏幕亮度 */  public static void setBrightnessMode(Activity activity, int brightMode) {  Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, brightMode);  }
}

4、MainActivity 主函数

package com.why.example;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;import com.why.example.R;/*** 1.滑动SeekBar 改变当前屏幕的亮度值 * 2.点击button  调用系统的亮度(手动和自动两种模式)*                根据系统判断是手动还是自动* @author why*/
public class MainActivity extends Activity {private Button button;private SeekBar lightSeek;private boolean flag = false;private int defalutValue = 75;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.button);lightSeek = (SeekBar) findViewById(R.id.light_seekBar);lightSeek.setOnSeekBarChangeListener(seekBarChange);}public void System (View v) {if (flag) {flag = false;button.setTextColor(getResources().getColor(R.color.black));button.setText(getResources().getString(R.string.star));setScreenLight(defalutValue);} else {flag = true; button.setTextColor(getResources().getColor(R.color.red));button.setText(getResources().getString(R.string.close));boolean isAutoBrightness = SystemBrightManager.isAutoBrightness(this);if (isAutoBrightness) {  // 自动调整亮度SystemBrightManager.setBrightness(this, -1);} else {int brightValue = SystemBrightManager.getBrightness(this);SystemBrightManager.setBrightness(this, brightValue);}}}private OnSeekBarChangeListener seekBarChange = new OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {setScreenLight(progress);}};public void setScreenLight(int progress) {if (progress < 1) {progress = 1;} else if (progress > 255) {progress = 255;}final WindowManager.LayoutParams attrs = getWindow().getAttributes();attrs.screenBrightness = progress / 255f;getWindow().setAttributes(attrs);defalutValue = progress;}}

5、main.xml 布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white" ><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:text="@string/app_name"android:textColor="@color/black"android:textSize="16sp" /><LinearLayoutandroid:id="@+id/linearLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/textView"android:layout_marginTop="15dp"android:layout_centerHorizontal="true" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="@string/change"android:textColor="@color/black"android:textSize="13sp" /><SeekBarandroid:id="@+id/light_seekBar"android:layout_width="180dp"android:layout_height="wrap_content"android:maxHeight="10.0dip"android:minHeight="4.0dip"android:paddingLeft="15dip"android:paddingRight="15dip"android:progress="75"android:max="255" /></LinearLayout><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/linearLayout"android:layout_centerHorizontal="true"android:layout_marginTop="15dp"android:onClick="System"android:text="@string/star"android:background="@color/white"android:textColor="@color/black" /></RelativeLayout>

demo下载地址

Android 调节屏幕亮度(当前应用和系统亮度)相关推荐

  1. android 屏幕亮度广播,Android调节屏幕亮度实现代码

    调节屏幕亮度时,先设置当前activity亮度,再并保存为系统亮度即可. 1 onCreate()里检查系统亮度并设置seekBar: private void screenBrightness_ch ...

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

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

  3. [03] Android系统亮度调节

    链接:http://developer.android.com/reference/android/provider/Settings.System.html 最近在做的项目,需要使用亮度调节实现夜间 ...

  4. android调节当前屏幕亮度的实现方式

    我们平时使用的一些应用可能会有调节当前屏幕亮度却不改变系统亮度的功能,比如小说APP在阅读电子书时就拥有调节亮度的功能,但这个功能却在退出阅读模式后就失效了,这是怎么实现的? 以下就是调节当前屏幕亮度 ...

  5. android 系统亮度,android 设置系统屏幕亮度

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

  6. Android开发之调节屏幕亮度

    在很多app中进入二维码显示界面时会自动调整屏幕亮度,那么如何实现调节app的屏幕亮度呢?下面我来为大家介绍: 注:调节屏幕亮度的核心思想就是对安卓系统提供的ContentProvider进行操作 1 ...

  7. Win11系统调节屏幕亮度的方法

    目前Win11系统是一款非常火热的电脑操作系统,很多用户都想安装体验,电脑安装了Win11系统后发现屏幕太亮了,看久了眼睛很疲累,于是想要重新修改一下屏幕亮度,但是这个该如何操作呢?接下来小编就来为大 ...

  8. win10调节屏幕亮度_Win8系统笔记本电脑如何调节屏幕亮度?

    Win8系统电脑如何调整笔记本屏幕的亮度?笔记本是Win8系统的,该如何调节屏幕亮度?下面给大家分享具体操作方法. 解决办法: 1.首先,我们移动鼠标点击桌面上的"控制面板",然后 ...

  9. win10的怎么调计算机亮度,Win10系统调节屏幕亮度的三种方法【图文】

    全新的Win10系统里面的界面设计非常好看,而且有些也是色彩十分明亮.那么如果觉得太亮的话,要怎么调节呢?下面就给大家介绍Win10系统调节屏幕亮度的四种方法. 调节方法一: 1.首先打开开始菜单,接 ...

最新文章

  1. 【NCEPU】凌亮:Linux实践
  2. 日常工作问题的处理流程
  3. Windows平台kafka环境的搭建
  4. 《Linux防火墙(第4版)》——1.3 传输层机制
  5. error_reporting()的用法
  6. python不能卸载原因_linux上python卸载不了是什么原因?
  7. c语言中小数在内存中的存储,c语言中小数在内存中的存储
  8. 无法从计算机中删除,【求助】Windows无法从该家庭组中删除你的计算机
  9. python列表嵌套元组拆分,将包含整数和字符串的列表转换为嵌套元组Python
  10. mac苹果电脑安装非app store软件无法安装的解决办法
  11. 《Qt图形界面编程入门》实验
  12. 把网站部署到IIS后访问不了,报错IIS管理器无法验证此内置账户是否有访问权
  13. 如何把桌面计算机和回收站隐藏,电脑回收站怎么隐藏图标,隐藏我的电脑和回收站...
  14. 【海码学院】web前端基础入门JavaScript之JavaScript起源和基础语法学习笔记
  15. 微信小程序——添加广告
  16. 从零开始的openGL--cs游戏(14) 延迟渲染G缓冲。
  17. Unity 回合制战斗系统(初级篇)
  18. jos lab 2-3函数说明
  19. 用 visual foxpro 也可以编写“迅雷下载”
  20. php 原生session,$_SESSION

热门文章

  1. 学科实践活动感悟50字_初中学科实践活动记录50字3篇
  2. Codeforces - 750A. New Year and Hurry
  3. 在字符串中查找一个字符
  4. 基于单片机的CO浓度检测及报警系统设计(电路+程序流程)
  5. 【风险管理】(第三篇)风险管理报表体系
  6. 【4G模块】中移物联ML302 + GD32F407 使用支持MQTT协议AT指令接入阿里云物联网平台
  7. java对象的访问定位_深入理解java虚拟机---对象的访问定位(十)
  8. u盘计算机软件,电脑U盘管理工具 计算机U盘管理软件的使用
  9. 揭秘精准诈骗,骗子为何知道你妈是谁
  10. cocos2dx 字体外发光_cocos2d-x位图字体生成工具bmfont使用图文教程 美术字使用