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

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

从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>

上一篇:导出mysql数据库文件为excel文件


下一篇:SpringCloud升级之路2020.0.x版-17.Eureka的实例配置