研究顯示,螢幕的藍光可能對
睡眠。Android 7.1.1 導入了「夜燈」功能,
裝置螢幕所發出的藍光數量,以配合自然環境
顯示使用者的時段和位置。Android 8.0 導入了
可讓使用者進一步控制夜燈效果的強度。
Android 10 導入了
COLOR_DISPLAY_SERVICE
系統服務 (採用系統 API)
讓系統、設定和系統 UI 進一步控制所有顏色
包括 Night Light。
夜燈功能需要
硬體
Composer HAL 2.0 (HWC 2) 實作,可套用傳入的矩陣
setColorTransform
,以在不影響電源的情況下進行色調,
應用程式的效能和應用程式相容性
實作
裝置製造商可透過下列方式啟用該功能的預設實作方式
使用您在 GCP 控制台中
frameworks/base/core/res/res/values/config.xml
<!-- Control whether Night display is available. This should only be enabled on devices with HWC 2 color transform support. --> <bool name="config_nightDisplayAvailable">false</bool> <!-- Default mode to control how Night display is automatically activated. One of the following values (see NightDisplayController.java): 0 - AUTO_MODE_DISABLED 1 - AUTO_MODE_CUSTOM 2 - AUTO_MODE_TWILIGHT --> <integer name="config_defaultNightDisplayAutoMode">0</integer> <!-- Default time when Night display is automatically activated. Represented as milliseconds from midnight (e.g. 79200000 == 10pm). --> <integer name="config_defaultNightDisplayCustomStartTime">79200000</integer> <!-- Default time when Night display is automatically deactivated. Represented as milliseconds from midnight (e.g. 21600000 == 6am). --> <integer name="config_defaultNightDisplayCustomEndTime">21600000</integer> <!-- Minimum color temperature, in Kelvin, supported by Night display. --> <integer name="config_nightDisplayColorTemperatureMin">2596</integer> <!-- Default color temperature, in Kelvin, to tint the screen when Night display is activated. --> <integer name="config_nightDisplayColorTemperatureDefault">2850</integer> <!-- Maximum color temperature, in Kelvin, supported by Night display. --> <integer name="config_nightDisplayColorTemperatureMax">4082</integer>
程式碼分為架構、系統服務、系統 UI 和設定。
核心功能是由 ColorDisplayManager
控管 (由
ColorDisplayService
)。
裝置製造商應根據
裝置的顯示面板,包括白色點、色調和所需顏色。您可以變更
色彩漸層,而無需變更基本實作。
紅色、綠色、藍色
格式為 vres = vat2 + vbt + vy-int
其中 t 代表輸入的溫度輸入值 (以克耳文表示),
config_nightDisplayColorTemperatureMin
和
config_nightDisplayColorTemperatureMax
(如上所述)
前一節),而 va、vb 和 vy-int 為
指定主線曲線分別的係數、b 係數和 y 截距。
,如下所示。
<string-array name="config_nightDisplayColorTemperatureCoefficientsNative"> <!-- R a-coefficient --> <item>0.0</item> <!-- R b-coefficient --> <item>0.0</item> <!-- R y-intercept --> <item>1.0</item> <!-- G a-coefficient --> <item>-0.00000000962353339</item> <!-- G b-coefficient --> <item>0.000153045476</item> <!-- G y-intercept --> <item>0.390782778</item> <!-- B a-coefficient --> <item>-0.0000000189359041</item> <!-- B b-coefficient --> <item>0.000302412211</item> <!-- B y-intercept --> <item>-0.198650895</item> </string-array> <string-array name="config_nightDisplayColorTemperatureCoefficients"> <!-- R a-coefficient --> <item>0.0</item> <!-- R b-coefficient --> <item>0.0</item> <!-- R y-intercept --> <item>1.0</item> <!-- G a-coefficient --> <item>-0.00000000962353339</item> <!-- G b-coefficient --> <item>0.000153045476</item> <!-- G y-intercept --> <item>0.390782778</item> <!-- B a-coefficient --> <item>-0.0000000189359041</item> <!-- B b-coefficient --> <item>0.000302412211</item> <!-- B y-intercept --> <item>-0.198650895</item> </string-array>
UI 功能
由於夜燈是面向使用者的功能,因此使用者必須能夠控制
基礎架構Android 開放原始碼已完全實作相關設定
專案 (AOSP)
套件/應用程式/設定
可供裝置製造商參照設定專案
。實作者必須處理
Settings.ACTION_NIGHT_DISPLAY_SETTINGS
揭露這項設定的意圖。
設定
夜燈設定需依序輕觸「設定」圖示 >顯示 >夜晚 淺色。使用者可藉此瞭解夜燈功能、設定時間表 開啟或關閉該設定
- 自動開啟
- 永不:夜燈功能一律不會自動開啟, 必須透過手動「開啟 / 關閉」切換鈕來啟用。
- 自訂時間表:夜燈會在指定時間開啟 開始時間 [預設值:晚上 10 點 30 分],並在特定時間關閉 結束時間 [預設:6:30 a.m.]。
- 日落到日出:夜燈會在日落和關閉時開啟 日出時日出和日落的時間取決於裝置所在位置 以及一年中的時節
- 開啟 / 關閉:切換可控制夜間狀態的切換鈕 淺色。這個狀態會遵循現有的自動規則。舉例來說 燈已在下午 5 點 30 分開啟,(在自動規則啟用前 晚上 10:30)夜燈功能仍會在早上 6:30 關閉;如果夜間關閉 燈已在早上 5 點 30 分關閉 (在上午 6 點 30 分之前關閉), 它仍會在晚上 10:30 開啟。
- 強度: 跳轉滑桿 透過滑動從暖色調控制色調你可以使用跳轉滑桿 會在未啟動夜燈時停用。
- 資訊文字:讓使用者清楚瞭解 Night Light 的功能 並說明原因。
設定條件式
開啟夜燈時,這項設定會顯示在「設定」的頂端。
快速設定方塊
「快速設定」方塊的運作方式與開啟 / 關閉相同 開啟「設定」>顯示 >夜燈功能。