共用方式為


環境光線感應器

本檔針對具有整合環境光線感應器的裝置設計和開發提供建議。 選取適當的環境光線感應器 (ALS) 裝置非常重要。

下列高階檢查清單適用于將感應器硬體整合到裝置的開發人員。 本檔的其餘部分會詳細說明程式與背景資訊。

  • 選取適當的回光來源。
  • 選取適當的光線感應器。
  • 選取裝置主機殼中光線感應器的優化位置。
  • 根據模型進行校正,並考慮所有因素,例如感應器設定、感應器設定、放置等等。 這應該使用專業、預先校正的光線計量來執行。
  • 以其中一種支援的方式將 感應器整合到裝置。
  • 利用收件匣 HID 感應器類別驅動程式。 透過 USB、SPI 或 I2C HID 傳輸來連線裝置。
  • 將完整的裝置測試為光線測量檢測。 使用各種測試光源類型 (不透明、高效能、LED) ,並比較透過感應器平臺回報的值與高品質的光線計量。 計量應該測量裝置顯示器上的光線事件。
  • 使用 Windows 硬體實驗室套件 (HLK) 裝置需求和相關測試來測試裝置和協力廠商驅動程式。 請確定它會正確執行,並通過所有測試案例。
  • 請確定 OEM、ODM 和 IHV 參與每個裝置硬體主要修訂的機械設計檢閱。
  • 確定感應器實作是以機械方式、光學方式,以及從電子工程的觀點優化。
  • 使用調適型 亮度測試案例中所述的步驟來測試光線感應器和調適型亮度。

整合光線感應器與裝置硬體

數件事可能會大幅影響光線感應器提供的資訊可以完成的工作。 這些考慮包括下列各項:

  • 建議使用感應器類型、數位光感應器
  • 感應器檢視的正確性、解析度和欄位
  • 感應器的動態範圍
  • 基礎結構 (IR) 和 (UV) 拒絕 (人眼回應)
  • 僅數位 (支援的匯流排技術)
  • 數位取樣率
  • 耗電量
  • 封裝和放置選項

下列因素需要特殊考慮:

  • 精確度和解析度:為了在應用程式中提供調適型亮度和光線感知 UI 的最佳使用者體驗,需要精確的感應器資料作為輸入。 一般而言,感應器越精確,對應的使用者體驗就越好。 實際環境光線感應器 (ALS) 校正值是實際光源條件 4% 內的一致精確度。
  • 動態範圍:光線感應器的動態範圍是感應器可以報告的最大和最小值之間的比率,並定義感應器可以有效使用的光源環境範圍。 低動態範圍光線感應器會限制其可使用的環境。 掛接在裝置上的環境光線感應器應該支援室內光源條件,例如行動電話。 S要的範圍可以從 0 到 10,000 lux 或更多。 專為室內使用之裝置設計的 ALS 動態範圍可能較小。 室內光線通常範圍從 0 到 1000 lux。
  • 細微性:為了確保 ALS 在環境光線低於 25 lux 時,ALS 應具有 1 lux 的資料細微性,且當環境光線高於 25 lux 時,環境光線的細微性為 4%。 這可讓調適型亮度演算法執行平滑螢幕亮度轉換。

以下是要參考的常見光源條件:

光源條件 亮度 (lux)
音調黑色 1
非常深 10
深色室內 50
室內暗 100
一般室內 300
室內亮 700
暗 (超播) 1,000
室內 15,000
直射 100,000

環境光線感應器的類型

環境光線感應器有兩種基本類型:

  • 類比光線感應器 會連線到內嵌控制器,其中包含類比對數位 (A/D) 轉換器,並要求韌體能夠精確地解譯光線感應器資料,並補償影響讀數的各種狀況和現象。 這些現象的一些範例包括基礎結構 (IR) 光線拒絕和光線頻率補償。 例如,電筒燈會隨著提供給裝置的 AC 電源頻率而有所不同。 類比感應器通常非常便宜。
  • 數位光感應器 比類比感應器更昂貴,但有優點。 數位光感應器可以自動補償各種狀況和現象。 數位感應器也非常精簡。 某些數位光線感應器可能會提供粗細的離散 lux 測量。 低光條件下的讀數細微性必須仔細考慮。 低光條件下的粗略、離散測量可能會導致使用者的亮度降低體驗。

無論選取哪種類型的光線感應器,都必須取得精確的讀數,並公開給系統。

光線感應器數目

測量光源條件的環境光線感應器越多,實際亮度的估計值就越好。 不過,每個光線感應器都會增加成本,並使用裝置上的空間。

製造商務必致力於提供系統最精確的環境光線感應器功能的解決方案。 低成本的解決方案可能依賴單一感應器,但高階硬體可以依賴感應器陣列來提供最佳的測量。 如果 OEM 選擇實作多個環境光線感應器 (來解決手部或陰影遮蔽 ALS) 的問題,OEM 應該將一個邏輯 (合併) ALS 公開給 Windows,並回報最精確的資料。

如果有多個感應器公開給系統,則用於自動亮度的單一感應器應該公開 DEVPKEY_SensorData_LightLevel_AutoBrightnessPreferred 屬性。 同樣地,OEM 可能會決定結合多個環境光線感應器,並將結果公開為虛擬光線感應器,也稱為純軟體感應器。 如果實體和虛擬光線感應器都是透過感應器設備磁碟機介面公開,則融合感應器必須公開 DEVPKEY_SensorData_LightLevel_AutoBrightnessPreferred 屬性。

光線感應器放置

正確放置光線感應器是良好系統設計的另一個重要層面。 ALS 的目標是要測量使用者所感知的環境亮度。 最佳理論感應器位置會在使用者眼睛之間。 光線感應器的實際最佳位置通常與顯示器位於相同的平面上,並面向使用者。 放置於顯示器上的感應器有偵測螢幕上可能發生的一些反光的優點。

避免將光線感應器放在電腦區域中,這些電腦在正常使用期間可能會被陰影或使用者的手、手指或手部遮蔽。 下圖說明直接光源位於使用者後方的範例使用者案例。 陰影會在螢幕的下半部和電腦的基底上轉換。 此案例建議靠近螢幕頂端並面向使用者的最佳光線感應器位置。

表示最上半部顯示器中最佳光線感應器位置的圖表,以避免使用者陰影。

請確定裝置可以在平板電腦模式與膝上型電腦模式中 (鍵盤的不同設定,例如,) 不會封鎖光圈,也不會與感應器的視野交集。

最後,請確定感應器的視野不會與任何雜訊的光線來源交集, (相機閃爍、鍵盤反光燈等) ,因為這些可能會造成額外的雜訊或不良讀數。 在考慮與雜訊光源交集的檢視欄位時,請務必考慮裝置可以採取的所有不同組態。

處理不正確光線感應器資料

在某些情況下,環境光線感應器的檢視欄位可能會受到物件或使用者阻礙,使得感應器無法取得精確的讀數。 例如,當使用者的手涵蓋環境光線感應器光圈時,可能會發生這類狀況。 許多其他案例都存在。

環境光線感應器可以將新的感應器樣本及其 PKEY_SensorData_IsValid 資料欄位設定為 FALSE,藉此向作業系統指出這種情況。 適當的硬體設計應該將需要此值設定為 FALSE 的時間和案例降到最低,因為這類案例可防止系統正確控制亮度。 在理想的系統上,環境光線感應器一律能夠測量環境光線,而此值會設定為 TRUE。

光線感應器篩選器、鏡頭、主機殼和校正

設計包含 ALS 的裝置時,必須仔細考慮與 ALS 相關的整個機械、光學和電子元件系統。 下圖說明整合環境光線感應器硬體與 Windows 時,必須考慮並瞭解的重要機械元件。

說明環境光線感應器元件的圖表。

在此圖表中,我們會看到下列內容:

  • 玻璃 - 螢幕的外部表面
  • 筆跡檢測 - 螢幕周圍的黑色框線
  • 淺色防護 - 防止光線消失
  • 光線管道 - 收集光線並將光線導向感應器
  • 周遭環境光感應器
  • 主機板

注意

通常不需要光線管道,而且在許多情況下可能會降低 ALS 效能。 如需有關這類光學元件的指引,請參閱光線感應器製造商。

此圖表參考兩個光線等級:

  1. $LUX_ {1} $:顯示器表面裝置周圍事件光線等級。 此層級是由環境光線感應器透過感應器平臺測量和報告。

  2. $LUX_ {2} $:ALS 表面的事件光線等級。 這不是透過感應器平臺報告的正確光線等級,因為它不會考慮光學的衰減因數。

衰減因數會對應到裝置外部表面之間的各種元件會封鎖多少光線, (通常是玻璃) 和 ALS 的感應器表面。 衰減的計算方式如下: A = (1 - transmittance)

重要

環境光線感應器會報告它所感知的環境光線強度。 由於光學的可轉譯性,原始 ALS 讀數會報告衰減的 lux 值,而且不應該在沒有更正的情況下使用。 可轉譯性是可降低環境光線強度的光學特性,也會拒絕光 (IR) 光。 如果光學是使用筆跡繪製來呈現可見外觀,則必須使用衰減因數來補償相對應的環境光線強度降低。

$LUX_ {2} $ 應一律低於 $LUX_ {1} $

這兩個 lux 值之間的差異稱為衰減因數。 衰減因數會考慮玻璃 ($LUX_ {1} $) 頂端表面與環境光線感應器的裸表面 ($LUX_ {2} $) 之間的光傳輸百分比總計。 使用繪製的玻璃表面時,這是最重大的。 OEM 支援感應器 IHV 時,應該先測量衰減因數,並在硬體中修正它,再將 lux 值公開至作業系統。

注意

傳輸是 ALS 表面的光線層級比例,除以裝置周圍的環境光線等級。

在下列範例中,假設玻璃頂端表面與環境光線感應器裸表面之間的光線傳輸百分比總計為 5%。 為了支援所需的 lux 範圍,選取的光線感應器必須支援裸機感應器上的下列範圍:

  • $Minimum = 1 lux × 0.05 = 0.05 lux$
  • $Maximum = 100,000 lux × 0.05 = 5000 lux$

在韌體或驅動程式中,根據實作硬體或軟體 ALS 解決方案而定,下列轉換是用來考慮衰減因數:

$Output LUX = LUX_ {1} = LUX_ {2} / (總計 % _{light _transmittance}) $

針對 100 lux 的裸環境光線感應器讀數,以下是產生的輸出 lux:

$Output LUX = 100 / 0.05 = 2000 LUX$

整個系統也應該使用適當的光線測量設備進行校正。 此範例只會示範正式校正之前部分選取和初始校正的一般考慮。 強烈建議每個單位處理站校正,以獲得最佳且最一致的使用者體驗。 感應器通常具有從單位到單位的精確度範圍 +/- 20%,可透過每個單位工廠校正來考慮。

此外,檢視領域是環境光線感應器放置和設計中要考慮的重要因素。 檢視欄位越小,感應器的效能就越差。 一般規則是 55 度半形的檢視欄位, (總計為 110 度,) 為公平目標。 較寬的視野,感應器較不容易挑選單一點光源,或可能無法正確反映真實光線環境的陰影區域。

使用 HID 和 SPB 的感應器連線能力

下圖說明如何使用 HID 通訊協定和 IHV 特定的 SPB 驅動程式來整合 ALS。

提示

HID 通訊協定是整合 ALS 的建議路徑,利用 Windows 中的收件匣 HID 驅動程式。

HID 感應器硬體、驅動程式和軟體堆疊如下所示:

說明 HID 感應器硬體、驅動程式和軟體堆疊的圖表。

方塊從上到下:感應器應用程式、感應器 API、感應器類別延伸模組、使用者模式 HID 驅動程式、HID-I2C 驅動程式、韌體中的 I2C 控制器、HID 介面和 ALS 硬體

SPB 感應器硬體、驅動程式和軟體堆疊如下所示:

說明感應器 SPB 堆疊的圖表。

方塊從上至下:感應器應用程式、感應器 API、感應器類別延伸模組、UMDF 使用者模式感應器驅動程式、SPB 介面、I2C 控制器驅動程式和 ALS 感應器

如需透過 HID 通訊協定整合感應器硬體的詳細資訊,包括 HID 和 I2C,請參閱 感應器 HID 類別驅動程式

如需透過 SPB 匯流排整合感應器的詳細資訊,請參閱 GitHub 上的感應器組合範例驅動程式原始程式碼

環境光線感應器校正

強烈建議使用受控制光源環境中的專業預先校正感應器,在整合式系統中校正 ALS。 這些預先校正的感應器通常稱為光線計量,可供電子設備廠商和線上零售商購買。

其他校正技術

如需其他 ALS 監視和校正工具的詳細資料,請參閱 Microsoft 環境光線工具 一文。

光線感應器驗證

在第一個步驟中,您應該一律執行感應器 (,也就是輸入) Hardware Lab Kit 測試來驗證環境光線感應器。 確定所有 最低硬體需求和 Windows 硬體相容性計畫 測試都通過。

若要驗證環境光線感應器正常運作:

  • 請確定 DisplayEnhancementService 已啟動。
  • 啟用自動亮度,並將滑杆設定為 50%。
  • 驗證光源變更時顯示亮度變更。
  • 使用較淺的暗灰色來緩慢地向上和向下傾斜環境光線,並確保 lux 值 會順暢地 向上和向下傾斜。 粗略和離散的光線變更會產生次佳的螢幕亮度回應,而且應該避免。
  • 使用專業 lux 計量來確保 ALS 讀數正確無誤。 至少請確認下列幾點:0、10、100、500 和 1000 lux。
  • 在僅自訂 ALR 曲線的系統中,使用使用者測試行為,以驗證 ALR 資料符合使用者的期望。

最低硬體需求和 Windows 硬體相容性計畫

最低硬體需求和 Windows 硬體相容性計畫需求是建立 Windows 相容感應器體驗的基礎。 雖然程式是選擇性的,但建議音訊產品符合這兩組需求,以確保基本音訊品質。

如需詳細資訊,請參閱 Windows 硬體相容性計畫

下列各節涵蓋感應器的建議。 為了確保高品質的體驗,所有裝置都應該根據這些效能需求進行測試。

區域 指引類型 應測試哪些裝置
Device.Input.Sensor.AmbientLightSensor 根據軟體介面、通訊協定和資料格式,提供元件層級指導方針,以最佳方式使用主機 OS。 所有整合式環境光線感應器都應該根據這些效能需求進行測試。
System.Client.Sensor.AmbientLightSensor 提供系統層級指導方針,以在軟體介面、通訊協定和資料格式方面,以最佳方式與主機 OS 運作。 所有整合式環境光線感應器都應該根據這些效能需求進行測試。

環境回應曲線

如果環境光線感應器報告環境光線回應曲線,則必須遵循:

資料欄位 資料類型 定義
PKEY_LightSensor_ResponseCurve VT_VECTOR VT_UI4

感應器的回應曲線必須至少有兩點,且漸層必須是正數或平面。 如需詳細資訊,請參閱 回應曲線

支援色彩

環境光線感應器不需要偵測色彩。 如果環境光線感應器支援色彩,則必須報告色彩相關屬性、閾值和資料欄位。 具備色彩功能的光線感應器必須報告下列列舉屬性:

資料欄位 資料類型 定義
DEVPKEY_LightSensor_ColorCapable VT_BOOL 指定此光線感應器是否支援色彩。

具備色彩功能的光線感應器必須報告下列其中一個資料欄位組合:

  • Lux、kelvins、chromaticity x、chromaticity y
  • Lux, chromaticity x, chromaticity y

如需詳細資訊,請參閱 光線感應器資料欄位

對於光線感應器報告的色彩資料欄位,也必須支援臨界值。 當符合至少一個臨界值時,必須報告範例。 如需詳細資訊,請參閱 光線感應器閾值

資料欄位屬性

環境光線感應器必須報告必要的資料欄位屬性。 如需詳細資訊,請參閱 光線感應器資料欄位

資料類型

需要環境光線感應器才能報告光線資料。 如需詳細資訊,請參閱 光線感應器資料欄位

最小報表間隔

Windows 中支援非色彩的環境光線感應器需要支援 250 毫秒或更少的報告間隔。 Windows 中支援具有色彩的環境光線感應器,才能支援 1000 毫秒或更少的報告間隔。

臨界值

需要光線感應器才能支援 lux 上的臨界值。 如果支援絕對臨界值,則必須符合百分比和絕對 lux 閾值,才能報告資料樣本。

假設絕對閾值為 1 lux,而百分比閾值為 25%:

最後一個範例 下一個範例 結果
4 lux 3 lux 下一個範例會報告,因為變更大於或等於上一個報告樣本中的 1 lux,而且大於或等於最後一個報告樣本的 25%。
1 lux 0.5 lux 下一個樣本 不會 報告,因為上次報告樣本中的變更小於 1 lux。
100 lux 90 lux 下一個範例 不會 報告,因為變更小於上次回報樣本的 25%。

如需詳細資訊,請參閱 光線感應器閾值

慣用自動亮度

如果環境光線感應器是要與自動亮度功能搭配使用,則需要報告下列列舉屬性:

資料類型 定義
DEVPKEY_LightSensor_AutoBrightnessPreferred VT_BOOL 指定此光線感應器是否應該是用於 Windows 自動亮度服務的慣用光線感應器。

系統必須只有一個環境光線感應器報告此屬性。

色彩校正

環境光線感應器不需要支援色彩。 如果環境光線感應器支援色彩,則需要正確校正。

雖然光源直接以感應器為目標:

  • 偵測到的環境 lux 在實際傳入光線的 10% 或 1 lux 內
  • 偵測到的色度 x 和 y 位於實際傳入光線的 0.025 內

列舉屬性

環境光線感應器必須報告DEVPKEY_Sensor_ConnectionType,即使這不是其他感應器的必要列舉屬性

有效

環境光線感應器在光線感應器樣本有效或無效時不需要報告。 如果環境光線感應器 支援 此功能,則必須報告下列資料欄位:

資料欄位 資料類型 定義
PKEY_SensorData_IsValid VT_BOOL 指出目前的資料範例是否有效。

如果PKEY_SensorData_IsValid值變更,則不論是否已符合閾值,都必須報告範例。

假設 lux 閾值為 1 lux:

最後一個範例 下一個範例 結果
100 lux 100 lux,但感應器現在已封鎖, (先前範例的PKEY_SensorData_IsValid為 true) 目前的範例會回報 100 lux,並將 PKEY_SensorData_IsValid設定為 false。
100 lux,且在先前範例的PKEY_SensorData_IsValid (遭到封鎖) 100000 lux,且感應器仍會遭到封鎖, (PKEY_SensorData_IsValid為 false) 未報告任何範例。
0 lux 和感應器已封鎖, (先前樣本的PKEY_SensorData_IsValid為 false) 0 lux,但感應器現在已解除封鎖, (PKEY_SensorData_IsValid為 true) 目前的範例會回報為 0 lux,但PKEY_SensorData_IsValid設為 true。

光線校正

Windows 中的自動亮度服務需要光線感應器來報告環境中光線等級的精確測量。 當光源直接以不支援色彩的光線感應器為目標時,報告光線等級必須位於實際傳入光線層級的 4%, 或至少 1 lux 內

光線範圍

Windows 中的自動亮度服務必須能夠偵測從 1 到 10,000 lux 的合理光線等級範圍。 如果範圍小於此範圍,調整後的自動亮度可能無法符合環境的實際亮度。

另請參閱