Android亮度调节关键API与技巧,实现APP亮度个性化设置

移动开发 Android
Android中并未直接提供针对于APP层面的亮度调节方式。对于需要进行APP的亮度调节,可以通过系统亮度调节或当前屏幕的亮度调节方式间接来实现。

Android系统亮度调节

Android系统亮度调节全局性最高,常见于系统设置中的亮度设置项。Android中提供了获取和设置系统亮度值(“手动模式下的亮度值”)的接口,调用相应的API获取当前的屏幕亮度值和设置一个特定的值。返回的亮度值是处于0-255之间的整型数值。

// 获取系统亮度
Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS);

// 设置系统亮度
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS,systemBrightness);

Android2.X以后的系统中,系统亮度调节中新增了“自动亮度”选项。“自动亮度”是依据外界光源来自动的改变系统亮度,目前大部分手机中对“自动亮度”还可以进行小幅度的调节其值。与自动亮度相对应的是“手动亮度”,当处于“手动亮度”下,设置拖动亮度进度条会大幅度的改变Android系统亮度。“手动亮度”和“自动亮度”分别称之为Android系统的“亮度模式”。

// 获取系统亮度模式
Settings.System.getInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE);

// 设置系统亮度模式
Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,systemMode);

Android中并未提供处于“自动亮度”模式下的亮度值接口。上面的获取系统亮度值接口实际上都是指“手动亮度”模式下的亮度值。通过手动亮度值以及设置系统亮度模式接口,可以满足常规的大部分针对Android系统亮度设置编码需求,以完成系统亮度调节。

Android当前Window亮度调节

常见场景:打开收付款界面时屏幕亮度变亮

//brightness是一个0.0-1.0之间的一个float类型数值。
Window window = activity.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = brightness;
window.setAttributes(lp);

默认情况下,当我们直接修改了系统亮度值后,当前Window中是可以即时反应出来亮度效果的,这是因为默认情况下,WindowManager.LayoutParams的screenBrightness的默认值为WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE。表示Window没有自己的亮度参数,将跟随系统亮度效果的变化。当调整系统亮度后,所有Window都即时反应出系统亮度设置效果。

Android APP亮度调节

Android中并未直接提供针对于APP层面的亮度调节方式。对于需要进行APP的亮度调节,可以通过系统亮度调节或当前屏幕的亮度调节方式间接来实现。

  1. 记录下系统亮度值和亮度模式,用户在APP界面时,直接修改系统亮度值,当用户退出此APP,或APP至于后台(如按下Home按键等),再将记录的系统亮度值还原。
  2. 对每个Window进行亮度设置,在基类Activity中对APP亮度值进行设置以实现每个当前屏幕的亮度调节。


责任编辑:武晓燕 来源: 沐雨花飞蝶
相关推荐

2013-05-15 22:30:49

DebianDebian LinuUbuntu

2020-06-28 07:00:00

推荐系统智能商务服务平台

2020-08-31 12:00:17

Linux终端颜色命令

2021-10-19 08:00:00

Windows 11Windows微软

2023-03-21 12:46:30

智慧城市人工智能大数据

2014-03-18 15:39:36

Fedora屏幕亮度

2020-12-04 05:56:19

Vscode 代码 编辑器

2011-09-07 14:31:59

ubuntu屏幕亮度

2022-11-01 07:19:45

推荐系统非个性化

2010-04-30 17:07:03

组策略部署

2024-03-25 07:57:10

ChatGPTPromote人工智能

2011-01-20 10:19:21

PowerShell个性化

2016-09-29 12:09:47

大数据搜索个性化服务

2015-05-07 10:38:19

IBMFacebook营销云

2015-06-08 22:41:36

云鸽

2016-04-08 11:39:49

用户画像个性化推荐标签

2018-09-07 18:51:24

APP算法应用

2022-05-12 15:33:03

iOS苹果个性化广告

2009-07-13 15:33:24

桌面虚拟化虚拟化IT

2011-05-04 14:38:53

海尔江山帝景一体机
点赞
收藏

51CTO技术栈公众号