Android设置屏幕亮度的两种方式

最近项目需要设置Android设备的亮度,本来以为很简单的功能,结果搞了好久才搞定,Android在这里埋了一个坑。下面具体说下:
Android系统的亮度值是0~255,数据类型为int型。
设置屏幕亮度有两种方式,一种是通过WindowManager去设置当前界面的亮度——注意,是当前界面,不是系统的亮度。这种方式代码如下
private void setLight(Activity context, int brightness) {
        WindowManager.LayoutParams lp = context.getWindow().getAttributes();
        lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
        context.getWindow().setAttributes(lp);
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
需要注意其中的context的类型是Activity,不能是Context。
这种方式的特点,是**只在当前设置的界面生效**,离开此界面后,屏幕亮度受亮度自动调节的开关控制。
换句话说,用这种方式设置当前界面的亮度时,会使亮度自动调节失效。
只有离开此界面,亮度自动调节继续生效。这种方式适用某些特殊的,需要高亮显示界面。

第二种方式时通过修改系统数据库来设置亮度。代码如下:
    public void saveBrightness(Activity activity, int brightness) {
        Uri uri = Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
        Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
        activity.getContentResolver().notifyChange(uri, null);
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
这种方式的特点是可以修改系统亮度,即使退出当前界面,设置的亮度值依然生效。这种方式设置的亮度值受亮度自动调节开关的影响。

即开关关闭时,此值生效;开关关闭时,此值其实并没有什么卵用。需要注意的时,设置时需要向系统数据库写入数据,因此需要相应的权限才行。

这两种方式各有各的作用与使用场景,使用的时候需要千万注意,不要混淆。功能虽小,坑却不小,特作文以记之。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值