Android P 开启和关闭夜间模式以及调节浓度的方法

这篇博客介绍了如何通过代码来控制Android系统的夜间模式开关,包括打开和关闭的方法。夜间模式的激活状态是通过Secure.NIGHT_DISPLAY_ACTIVATED属性设置,而调节夜间模式的'浓度'则是通过Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE属性,其值范围在2596到4082开尔文之间。此外,修改这些设置需要系统权限。
摘要由CSDN通过智能技术生成

最近在做需求时遇到一个场景,需要打开系统原生的夜间模式功能,退出应用时再关闭。

从settings模块代码中找到夜间模式的入口,通过查找代码,发现是通过一个Secure值控制的,跟踪代码找到该属性。

打开:

Secure.putInt(getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 1);

关闭:

Secure.putInt(getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 0);

在此记录一下。同样,想获取该值则使用 get 方法即可。

需要注意的是:写Secure值需要系统权限,因此使用到了systemUid。

夜间模式“浓度”调节功能

public boolean setColorTemperature(int colorTemperature) {
       return Secure.putIntForUser(mContext.getContentResolver(),
               Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, colorTemperature, mUserId);
}

可以看出,主要调节 Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE 这个值,具体定义数据的大小,通过查找源码,具体为:

930    <integer name="config_nightDisplayColorTemperatureMin">2596</integer>
931
932    <!-- Default color temperature, in Kelvin, to tint the screen when Night display is
933         activated. -->
934    <integer name="config_nightDisplayColorTemperatureDefault">2850</integer>
935
936    <!-- Maximum color temperature, in Kelvin, supported by Night display. -->
937    <integer name="config_nightDisplayColorTemperatureMax">4082</integer>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿部春光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值