android 夜间模式
16lz
2021-01-23
自7.0开始谷歌提供了夜间模式,用于将屏幕色彩调成较为柔和的琥珀色,但因该模式需要硬件的支持,所以不是所有设备上都可用,也不常见。
相关代码:
\frameworks\base\services\core\java\com\android\server\display\NightDisplayService.java
\frameworks\base\core\java\com\android\internal\app\NightDisplayController.java
\frameworks\base\core\res\res\values\config.xml
设置中相关代码:
\packages\apps\Settings\src\com\android\settings\display\NightDisplaySettings.java
夜间模式的开启和关闭,相关方法代码的调用,可完全参考设置中的夜间模式,config中默认配置如下,从配置中可见,夜间模式是否能够生效,主要依赖硬件:是否拥有HWC引入功能,能够在不增加耗电、性能、兼容性的情况下,实现颜色矩阵转换操作。
//要修改夜间模式,需要有权限:false 1 false @bool/config_setColorTransformAccelerated 0 79200000 21600000 2596 2850 4082 - 0.0
- 0.0
- 1.0
- -0.00000000962353339
- 0.000153045476
- 0.390782778
- -0.0000000189359041
- 0.000302412211
- -0.198650895
- 0.0
- 0.0
- 1.0
- -0.00000000962353339
- 0.000153045476
- 0.390782778
- -0.0000000189359041
- 0.000302412211
- -0.198650895
设置中夜间模式的所有设置和操作,都是在NightDisplayController中实现,其中主要方法如下:
//开启和关闭public boolean setActivated(boolean activated) { if (isActivated() != activated) { Secure.putStringForUser(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, LocalDateTime.now().toString(), mUserId); } return Secure.putIntForUser(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, activated ? 1 : 0, mUserId); }//设置模式,共三种,不定时,定时开启和关闭,在日落到日出的时间开启public @AutoMode int getAutoMode() { int autoMode = Secure.getIntForUser(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_AUTO_MODE, -1, mUserId); if (autoMode == -1) { if (DEBUG) { Slog.d(TAG, "Using default value for setting: " + Secure.NIGHT_DISPLAY_AUTO_MODE); } autoMode = mContext.getResources().getInteger( R.integer.config_defaultNightDisplayAutoMode); } if (autoMode != AUTO_MODE_DISABLED && autoMode != AUTO_MODE_CUSTOM && autoMode != AUTO_MODE_TWILIGHT) { Slog.e(TAG, "Invalid autoMode: " + autoMode); autoMode = AUTO_MODE_DISABLED; } return autoMode; }//设置色温,如config中配置,最大4082,最小2596public boolean setColorTemperature(int colorTemperature) { return Secure.putIntForUser(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, colorTemperature, mUserId); }//
更多相关文章
- Android操作framebuffer[zz]
- 作业三——观察者模式在Android广播机制上的应用
- Android源代码下载
- 2018-10-11【Android代码重构使用技巧】
- Android studio 删除无用代码
- Android中Activity的四种启动模式
- Android Wi-Fi基本操作