感應器
感應器可讓應用程式知道裝置與其周圍實體世界之間的關聯性。 感應器可以告訴應用程式裝置的方向、方向和移動。 這些感應器可以提供獨特的輸入形式,例如使用裝置的動作來排列螢幕上的字元,或模擬駕駛艙中的字元,並使用裝置做為方向盤,以協助您的遊戲、擴增實境應用程式或公用程式應用程式更有用且互動。
作為一般規則,從一開始就決定您的應用程式是否完全依賴感應器,或者感應器是否僅提供額外的控制機制。 例如,使用裝置作為虛擬方向盤的駕駛遊戲也可以透過螢幕上的 GUI 進行控制 - 這樣,無論系統上有哪些感應器可用,應用程式都可以執行。 另一方面,大理石傾斜迷宮可以編碼為僅在具有適當感應器的系統上工作。 您必須選擇是否完全依賴感應器。 請注意,滑鼠/觸控控制方案以沉浸感換取更好的控制。
主題 | 說明 |
---|---|
校正感應器 | 由於環境因素,基於磁力計的裝置中的感應器 (指南針、傾斜計和方向感應器) 可能需要校準。 MagnetometerAccuracy 列舉可協助您判斷裝置需要校正時的動作。 |
感應器方向 | OrientationSensor 類別的感應器資料是由其參考座標軸所定義。 這些軸由裝置的橫向方向定義,並隨著使用者轉動裝置而旋轉。 |
使用加速計 | 了解如何使用加速計來回應使用者移動。 |
使用指南針 | 了解如何使用指南針來判斷目前的標題。 |
使用陀螺儀 | 了解如何使用陀螺儀來偵測使用者移動的變化。 |
使用傾角儀 | 了解如何使用傾斜計來判斷傾斜度、滾筒和偏轉。 |
使用光感應器 | 了解如何使用環境光線感應器來偵測光源的變化。 |
使用方向感應器 | 了解如何使用方向感應器來判斷裝置方向。 |
感應器批處理
某些感應器支援批處理的概念。 這會根據可用的個別感應器而有所不同。 當感應器實現批次時,它會在指定的時間間隔內收集多個資料點,然後一次傳輸所有資料。 這與一般行為不同,當感應器執行讀取時,就會報告其結果。 請參考下圖,它顯示了資料是如何收集然後交付的,首先是正常交付,然後是批量交付。
感應器批處理的主要優點是延長電池使用時間。 未立即傳送資料時,可節省處理器電源,並防止資料立即處理。 系統的某些部分可以睡眠,直到需要它們,這會產生顯著的省電。
您可以透過調整延遲來影響感應器發送批次的頻率。 例如,Accelerometer 感應器具有 ReportLatency 屬性。 當為應用程式設定此屬性時,感應器將在指定的時間後發送資料。 您可以藉由設定 ReportInterval 屬性來控制在指定延遲中累積的資料量。
在設定延遲方面,請記住幾個注意事項。 第一個注意事項是每個感應器都有 MaxBatchSize ,它可以根據感應器本身支援。 這是感應器在強制傳送事件之前可以快取的事件數目。 如果您將 MaxBatchSize 乘以 ReportInterval,則決定最大 ReportLatency 值。 如果您指定的值高於此值,則會使用最大延遲,讓您不會遺失資料。 此外,多個應用程式可以設定所需的延遲。 為了符合所有應用程式的需求,將會使用最短的延遲期間。 由於這些事實,您在應用程式中設定的延遲可能不符合觀察到的延遲。
如果感應器使用批次報告,呼叫 GetCurrentReading 將會清除目前的資料批次,並啟動新的延遲期間。
加速計
加速計感應器會沿著裝置的 X、Y 和 Z 軸測量 G 強制值,非常適合簡單的動作型應用程式。 請注意,G-force 值包括因重力而加速。 如果裝置在表格上具有 FaceUp 的 SimpleOrientation,則加速計會在 Z 軸上讀取 -1 G。 因此,加速計不一定只測量座標加速 – 速度變化的速度。 使用加速計時,請務必區分引力向量與重力和線性加速向量與運動。 請注意,靜止裝置的引力向量應該正規化為 1。
下圖說明:
- V1 = 向量 1 = 因重力而強制
- V2 = 向量 2 = 裝置底座的 -Z 軸 (螢幕背面的點數)
- 2i = 傾斜角度 (傾斜) = 裝置底座的 –Z 軸與重力向量之間的角度
使用加速計感應器的應用程式包括遊戲,螢幕上的彈珠滾向您傾斜裝置的方向 (引力向量)。 這種類型的功能會密切反映傾角計的功能,也可以使用間距和滾筒的組合,使用該感應器來完成。 使用加速計的重力向量可稍微簡化此動作,方法是為裝置傾斜提供輕鬆的數學操作向量。 另一個範例是一個應用程式,當使用者透過空氣 (線性加速向量) 輕觸裝置時,發出鞭子的裂縫聲音。
如需範例實作,請參閱加速計範例。
活動感應器
活動感應器會決定連結至感應器之裝置的目前狀態。 此感應器經常用於健身應用程式中,以追蹤攜帶裝置或行走的使用者何時執行或行走。 如需此感應器 API 可以偵測到的可能活動清單,請參閱 ActivityType。
如需範例實作,請參閱活動感應器範例。
Altimeter
Altimeter 感應器會傳回值,指出感應器的高度。 這可讓您根據距離海平面的公尺來追蹤海拔變化。 可能使用此應用程式的其中一個範例是執行中的應用程式,它會追蹤跑步期間提高授權的變化,以計算燃燒的卡路里。 在此情況下,此感應器資料可以與活動感應器結合,以提供更精確的追蹤資訊。
如需範例實作,請參閱測高儀範例。
Barometer
Barometer 感應器可讓應用程式取得對稱讀數。 天氣應用程式可以使用這項資訊來提供目前的大氣壓力。 這可以用來提供更詳細的資訊,並預測潛在的天氣變化。
如需範例實作,請參閱氣壓錶範例。
指南針
指南針感應器會根據地球的水準平面傳回相對於磁北的 2D 標題。 指南針感應器不應用於判斷特定裝置方向,或用於在 3D 空間中代表任何專案。 地理特徵可能會導致標題的自然下降,因此某些系統同時支援HeadingMagneticNorth 和 HeadingTrueNorth。 想想您的應用程式偏好哪一個,但請記住,並非所有系統都會回報真正的北方值。 陀螺儀和磁力計 (測量磁力級裝置) 感應器結合其資料來產生指南針標題,其凈效應是穩定資料 (由於電氣系統元件,磁場強度非常不穩定)。
想要顯示指南針玫瑰或瀏覽地圖的應用程式通常會使用指南針感應器。
如需範例實作,請參閱羅盤範例。
Gyrometer
陀螺儀感應器會測量沿著 X、Y 和 Z 軸的角速度。 這些在簡單的動作型應用程式中非常有用,這些應用程式不關心裝置方向,但關心裝置以不同的速度旋轉。 陀螺儀可能會因資料中的雜訊或沿著一或多個軸的常數偏差而受到影響。 您應該查詢加速度計來驗證裝置是否正在移動,以確定陀螺儀是否有偏差,然後在您的應用程式中進行補償。
可以使用陀螺儀感應器的應用程式的一個例子是根據裝置的快速旋轉猛烈旋轉輪盤賭輪的遊戲。
如需範例實作,請參閱陀螺儀範例。
Inclinometer
傾角計 感應器會指定裝置的偏轉、傾斜和滾滾值,並與關心裝置在空間中位置的應用程式搭配使用。 傾斜和滾滾是藉由採用加速計重力向量,以及整合陀螺儀的資料來衍生。 偏航是根據磁力計和陀螺儀 (類似於羅盤航向) 資料確定的。 傾角計會以容易消化且可理解的方式提供進階方向資料。 當您需要裝置方向,但不需要操作感應器資料時,請使用傾斜計。
變更其檢視以符合裝置方向的應用程式可以使用傾角計感應器。 此外,顯示符合裝置偏轉、傾斜和滾動的飛機的應用程式也會使用傾斜計讀數。
如需範例實作,請參閱傾角計範例 https://github.com/Microsoft/Windows-universal-samples/tree/main/Samples/Inclinometer。
光感應器
光感應器能夠判斷感應器周圍的環境光線。 這可讓應用程式判斷裝置周圍的光線設定何時變更。 例如,具有石板裝置的使用者可能會在陽光明媚的一天從室內到戶外行走。 智慧型應用程式可以使用此值來增加背景和正在轉譯的字體之間的對比度。 這會使內容在更明亮、更戶外的環境中仍然可讀。
如需範例實作,請參閱光感應器範例。
方向感應器
裝置方向會透過四元數和旋轉矩陣來表示。 OrientationSensor 提供高度精確度,以判斷裝置在絕對標題方面位於空間中的位置。 OrientationSensor 資料衍生自加速計、陀螺儀和磁力計。 因此,傾角計和指南針感應器都可以衍生自四元數值。 四元數和旋轉矩陣非常適合進階數學操作,而且通常用於圖形化程序設計。 使用複雜操作的應用程式應該優先使用方向感應器,因為許多轉換是以四元數和旋轉矩陣為基礎。
方向感應器通常用於進階擴增實境應用程式,這些應用程式會根據裝置背面指向的方向,在周圍繪製重疊。
如需範例實作,請參閱方向感應器樣本。
計步器
Pedometer 感應器會追蹤攜帶連線裝置的使用者所採取的步驟數目。 感應器已設定為追蹤指定時段內的步驟數目。 數個健身應用程式,例如追蹤採取的步驟數目,以協助使用者設定並達成各種目標。 接著可以收集並儲存這項資訊,以顯示一段時間的進度。
關於範例實現,請參閱計步器範例。
近接感測器
近接感應器可用來指出感應器是否偵測到物件。 除了判斷物件是否在裝置範圍內之外,鄰近感應器也可以判斷所偵測到物件的距離。 其中一個可以使用的範例是,當使用者位於指定範圍內時,想要從睡眠狀態中出現的應用程式。 該裝置可以處於低功耗睡眠狀態,直到接近感應器檢測到物體,然後可以進入更活躍的狀態。
如需範例實作,請參閱接近感應器樣本。
簡單方向
SimpleOrientationSensor 會偵測指定裝置目前的象限方向,或正視或直下。 它有六種可能的 SimpleOrientation 狀態 (NotRotated、Rotated90、Rotated180、Rotated270、FaceUp、FaceDown)。
根據裝置與地面平行或垂直的情況改變其顯示的讀取器應用程式將使用 SimpleOrientationSensor 的值來確定裝置的握持方式。
如需範例實作,請參閱簡單感應器樣本。