09. Input and Sensors
Input
Windows 8 輸入方式除了舊有之滑鼠鍵盤後,還新增不少支援,主要方式如下︰
輸入方式 | 說明 |
touch | 使用觸式設備接觸屏幕。 |
speech recognition | 語音識別功能,Windows 8 內置多種語言*之識別功能。 |
keyboard(hard/ soft) | 傳統的鍵盤(hard)和由系統在屏幕上模擬的虛擬鍵盤(soft)。 |
mouse | 傳統的滑鼠輸入。 |
Stylus | 手寫功能,Windows 8 提供筆跡( Inking )設定,內置多種語言*之手寫識別功能。 |
*Windows 8 目前支援以下語言輸入︰英語(美國和英國),法語,德語,日語,韓語,普通話(中國,簡體中文和繁體中文),西班牙語
Windows 8 提供了一個統一框架來處理所有輸入,開發者可以使用預設框架來免去不同輸入的差異。例如普通的mousedown事件中,不單可以處理滑鼠,包括手寫筆和觸式輸入都可以一併處理,而不需考慮手觸式和手寫筆之間對屏幕壓力差異因此要設定多種情況。
手勢
手勢 ( Gestures )就是對不同的觸摸動作定義,除了下表列出之windows預設手勢後,開發者並可以自行定義新的手勢。但要注意Windows 8 市集並不容許改變了預設手勢的程式上架。下表為預設手勢列表︰
手勢 | 名稱 | 處理事件 |
一只手指接觸屏幕後抬起 | Tap for primary action | click 或MSGestureTap |
一只手指接觸屏幕並維持原地 | Press and hold | MSGestureHold |
一或多只手指指接觸屏幕並向相同方向滑動 | Slide to pan | MSGestureStart,MSGestureChange,MSGestureEnd |
一或多只手指指接觸屏幕並向相同方向滑動短距離 | Swipe to select | MSGestureStart,MSGestureChange,MSGestureEnd |
兩或多只手指指接觸屏幕並互相靠近 | Pinch and stretch to zoom |
MSGestureStart,MSGestureChange,MSGestureEnd 或使用 -ms-content-zooming: zoom 和-ms-touch-action: pinch-zoom 之CSS設定 |
兩或多只手指指接觸屏幕並作出順逆時針旋轉 | Turn to rotate | MSGestureStart, MSGestureChange, MSGestureEnd |
一或多只手指指接觸屏幕頂端或底部,並向中心移動 | Swipe from top or bottom edge for app commands | Windows.UI.Input.EdgeGesture |
一或多只手指指接觸屏幕左方或右方,並向中心移動 | Swipe from edge for system commands | focus ,blur |
Sensor
接收信號或刺激並反應的器件,能將待測物理量或化學量轉換成另一對應輸出的裝置。Windows 8 支援以下感測器︰
感測器 | 說明 |
Gyrometer 陀螺儀 | 目前主要的動作感應器,由一個位於軸心且可旋轉的輪子構成。可以提供三維度的加減速數據和目前姿態。 |
6-axis motion and orientation sensing system 6軸運動和方向感應系統
|
舊有的三維感測系統由加速感應器的x,y,z,三個維度之加速度,和磁力感應器對x,y,z,三個維度之磁力變化,共同組成一個動作感應器。此系統除了必須要連接指南針後,指南針提供的數值並不準確,不夠靈敏和反應緩慢。故現在漸被陀螺儀取代。 |
Inclinometer 測斜儀 | 感應目前三個維度的傾斜度。 |
Orientation Sensor 方向傳感器 | 感應目前三個維度的旋轉方向。 |
Light Sensor 光度感應器 | 感應四周光度變化。 |
Compass 指南針 |
分辨東南西北方向。 |
GPS 全球定位系统 | 供地理位置使用,定位目前在地球的位置。 |
感測器參考文章︰
http://blogs.msdn.com/b/b8/archive/2012/01/24/supporting-sensors-in-windows-8.aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/gg463473.aspx
Windows8傳感器
自適應亮度
第一個系統的特點是自動顯示亮度控制,或我們稱之為“自適應亮度。”這是一個,我們首先介紹了在Windows 7中使用環境光傳感器(ALS),,移動石板,可轉換債券的形式等因素,並有針對性的功能,和筆記本電腦。隨著今天的顯示面板,支持亮度水平大約兩倍的強度是什麼常見的短短幾年前,這個功能是比以往任何時候都更重要。通過動態控制屏幕亮度的基礎上不斷變化的環境光線條件下,我們可以優化閱讀舒適度的水平,並節省電池壽命,在較暗的環境中時,屏幕變暗。
自適應亮度(左)在惡劣的室外照明,沒有一台平板電腦(右)
自適應亮度可以幫助你看到屏幕上的內容更清晰,屏幕自動變亮,當平板進入明亮的環境中,你可以在這裡看到。而對於那些你誰使用您的台式電腦,在一個陽光明媚的房間,你知道同樣的事情可以發生在一天的不同時間在不同的季節。
自動屏幕旋轉
已經建立了許多智能手機和其他移動設備的期望,當你旋轉設備,圖形顯示也將旋轉和適應新的方向(包括適應寬高比的變化)。一個加速度計的數據,允許的移動設備以確定其基本取向。自動旋轉屏幕,人們可以在一個更加自然和直觀的方式使用他們的設備(主要為板岩和敞篷),而不需要手動旋轉屏幕控制軟件或硬件按鈕。
Windows 8的開始屏幕在橫向和縱向方向
傳感器的開發人員支持
除了搞清楚如何在Windows 8系統可能會使用傳感器的基本原理,我們還需要思考如何應用程序可能會使用傳感器。我們看著各種傳感器功能的應用程序的例子,包括遊戲,商業應用程序,工具和實用程序,以幫助我們確定哪些方案來支持。
名單上的第一個應用程序來理解運動和屏幕旋轉的能力。這需要一個加速度計 - 一種裝置,可用於測量的力,由於重力的作用,設備本身的運動的。但是,大多數情況下需要更多的不僅僅是一個理解的運動和重力。取向也是許多應用中的一個重要要求。為了使一台PC來了解我們需要的功能集成指南針方向。
支持指南針最低要求的3D加速度計(測量三個軸的加速度)和三維磁(3軸測量磁場強度)。這種組合傳感器就是所謂的6軸運動和方向感應系統,並且可以支持一個基本的傾斜補償羅盤,屏幕旋轉,像一個迷宮式的遊戲和某些休閒遊戲應用程序。然而,在我們的測試和原型設計,我們發現6軸運動感應系統有兩個主要缺陷:零星羅盤不準確,缺乏3D互動遊戲所需要的響應。
最近,一種新類型的傳感器已開始出現在電話平台 - 陀螺儀傳感器。陀螺傳感器測量角速度,通常3軸沿。你也可以使用陀螺儀傳感器的數據,三維動作感應系統的響應性和精度的提高。陀螺儀傳感器非常靈敏,但它缺乏任何形式的方向參考(如重力或北標題)。
此圖顯示了如何被表示為一組三個旋轉沿設備的三個主要軸陀螺儀數據:
起初,有人認為,這種傳感器需要範圍極少數的應用程序,如專門的遊戲。但我們研究了三維運動和方向感應問題,我們更意識到,應用程序更加身臨其境的吸引力,如果它們運動的那種人類可以很容易理解,如震動,曲折的反應,並在多個維度的旋轉。有了這些傳感器,它肯定會成為可能,打造非常逼真的3D遊戲,但它也使許多其他應用程序更自然地響應輸入的各種議案,其中包括地圖和導航應用,測量公用事業,互動(之間兩台機器)應用,以及休閒遊戲的簡單的應用程序一樣。
工程挑戰
我們開始我們的探索運動的應用程序原型的一些3D體驗。第一個挑戰是設備的物理方向直接映射到應用程序中的一個虛擬的3D環境。我們決定將模擬一個簡單的增強現實體驗,通過模擬一個平板電腦作為一個虛擬世界的一個窗口。這個概念相當簡單:當您移動設備,同時看著屏幕,虛擬環境(裡面的一個房間)似乎保持靜止。
最初,我們嘗試了一個實驗,使用的加速度計的映射設備的移動,向上和向下運動的3D環境響應。當你持有的設備,現場仍然應該保持穩定。傾斜的移動設備時,該視圖應傾斜,向上或向下。向右走,我們遇到了一個問題:加速度傳感器的數據,甚至當設備被固定在3D環境造成人心惶惶運動的“噪音”。我們可以清楚地看到這種噪聲捕捉加速度計數據和圖表。
無噪音,在圖表上的線是直的,沒有垂直偏差。傳統的方法來消除這種噪聲是申請一個低通濾波器的原始數據流。當我們在我們的原型,實施此緩解了最終的運動流暢和穩定(無抖動)。但是,低通濾波器引入了另一個問題:應用程序失去響應速度和響應議案時感到呆滯。我們需要一種方式來補償這種抖動不降低響應。
接下來的實驗提供“望左”和“右看”我們的虛擬3D環境中的應用程序的能力。我們使用了6軸羅盤解決方案(3D加速度+ 3D磁力計)來支持這種類型的運動。雖然這樣的工作的話,運動是不一致的,由於一般的6軸羅盤的不穩定。它也具有挑戰性的混合左,右移動的向上和向下的運動。
從這些實驗中,很明顯,這個組合的傳感器不能提供我們想要的流暢性和響應的經驗。加速度傳感器不提供乾淨的數據,並且不能被單獨使用,以確定設備的方向。磁力更新緩慢,易受電磁干擾(想偶爾在一個位置,堅持一個羅盤針)。我們尚未與陀螺傳感器的實驗,但因為陀螺儀只能確定轉速,目前還不清楚他們如何能幫助。
創建“傳感器融合”
但是,進一步的實驗表明,所有三個傳感器一起使用,可以解決這個問題。事實證明,一個加速度計,磁力計,陀螺儀可以配合每個其他的弱點,有效地填補數據和數據響應的差距。使用這些傳感器的組合,它有可能創造一個更好,更靈敏,更流暢的體驗比傳感器可以提供個人。結合多個傳感器的輸入產生更好的整體效果是一個過程,我們稱之為傳感器融合。
從本質上講,傳感器融合是整體大於部分之和的情況下。一個典型的傳感器融合系統使用3D加速度,三維磁力,和創建一個聯合的“9軸傳感器融合”系統的三維陀螺儀。要明白這個系統是如何工作的,讓我們來看看在輸入和輸出。
此圖顯示了兩種類型的輸出:通過傳感器數據直接傳遞到應用程序,通過輸出和傳感器融合輸出傳感器數據合成為更強大的數據類型。
有些應用程序可以使用直通傳感器數據直接。這些數據可以被用在各種場景中的“面值”。這樣的一個場景是一個應用程序,實現了一個計步器來計算你的,你走的步驟。下面的圖表顯示了一個人走與平板電腦的加速度計輸出。此圖清楚地表明,它有可能檢測該人已採取的每一個步驟。
但是,正如我們的實驗中發現,許多應用程序不能有效地利用原始傳感器數據。這些應用程序包括:
- 指南針應用程序
- 增強的導航和增強現實應用
- 休閒遊戲
- 3D遊戲應用程序
這裡有一個3D遊戲樣本截圖:
3D第一人稱射擊遊戲(如圖/ /構建/)
這些應用程序需要使用傳感器融合數據,以支持它們實現的功能。傳感器融合的“神奇”數學是所有三個傳感器的數據結合起來,產生更複雜的輸出,包括傾斜補償羅盤,傾角儀(露出偏航,俯仰和橫滾)和更先進的設備方向表示。有了這樣的數據,更複雜的應用程序,可以產生自然運動的快速,流暢,反應迅速的反應。
Windows 8的通過集成傳感器融合解決方案,提供全方位的應用的完整解決方案。在Windows中的傳感器融合解決問題風聲鶴唳運動和生澀過渡,減少了數據完整性問題,並提供數據,允許無縫代表性的完整設備運動在三維空間中(不帶任何尷尬的過渡)。
與硬件合作夥伴
雖然設計的傳感器融合解決方案為Windows,我們還需要幫助硬件設計人員通過與他們合作,早期採取這種解決方案的優勢。設計一個傳感器融合系統是比較容易,如果你正在設計一個單一的設備。但是Windows上運行多種電腦在許多外形,使用許多不同製造商的硬件組件。我們需要提供一個解決方案,使整個生態系統的Windows硬件合作夥伴參加。
第一步是傳感器包,將與Windows的傳感器融合解決方案提供性能的基準。使用Windows認證準則,我們提供了傳感器的性能規格。為了幫助硬件廠商驗證他們的解決方案與Windows兼容,我們建立了一些測試,這是我們提供的Windows認證套件。
降低開發和支持司機的成本是另一個挑戰。為了讓簡單的傳感器硬件製造商和PC廠商,我們寫了一個單一的微軟提供的驅動程序,將工作與所有Windows連接通過USB和更低的電源總線,如I2C兼容的傳感器包。該傳感器類驅動程序使硬件企業創新與傳感器硬件,同時確保他們的硬件可以輕鬆地與Windows操作系統附帶的驅動程序支持。
為了幫助加快採用類驅動程序,微軟與業界夥伴合作,引入到公共標準規範。2011年7月的標準傳感器HID(人機接口設備)規範中引入了USB-IF(HID規範1.12版,介紹了審查請求#39)。這種標準化使任何傳感器公司建立一個公共標準的USB-IF規格兼容的設備固件與Windows 8兼容的傳感器封裝。這減少了所需的時間和成本,集成傳感器與Windows 8的PC的硬件。其他好處包括降低支持成本和更一致的硬件功能,為Windows 8電腦都配備了傳感器。
但規範類驅動程序之外,我們還希望優化的傳感器融合解決方案的性能,最大限度地減少其對電池壽命的影響。系統上的每個有源傳感器引出電源,和發送數據的堆棧消耗的內存和CPU時間。我們最大限度地減少了功率和性能的影響傳感器融合系統上運行的Windows 8主要在兩個方面:
1。傳感器融合架構接口,在Windows 8中,啟用多傳感器融合數據處理發生在硬件層面。此硬件級的傳感器融合能力意味著計算昂貴的算法不具有在主CPU上運行,省電和CPU週期。
2。我們實施了強大的過濾機制,我們直接連接到傳感器的應用程序的需求,在任何給定的時間點上運行。播放此薪酬數據和事件模型是指傳感器數據只發送了堆棧的速度,應用程序需要的數據,並沒有更快。這會導致傳感器的數據吞吐量大大降低CPU使用率。
傳感器和Metro風格的應用程序
拉一起,我們最後的挑戰是使電源和傳感器融合的承諾提供給那些編寫Metro風格的應用程序。要啟用此功能,我們設計了傳感器的一部分,新的WinRT API作為。通過這些API,開發人員可以訪問任何Metro風格應用的傳感器融合的力量。這些API是乾淨和簡單,並在同一時間給開發商獲得所需要的數據,以支持來自休閒遊戲的一切虛擬現實應用。當然,這些功能都是可作為Win32 API的遊戲開發商或其他用途,在桌面應用程序。
下面的JavaScript代碼片段顯示了它是多麼容易獲得的加速度和訂閱使用Windows運行時的事件:
VAR加速度,
加速度= { VAR accelX = e.reading.accelerationX; VAR accelY = e.reading.accelerationY; VAR accelZ e.reading.accelerationZ; }
您可能想知道如何在這一點上,你可以嘗試在Windows 8傳感器融合,甚至可以編寫一些應用程序使用這些新功能。開發誰出席了/ /構建/會議於2011年收到三星Windows 8開發者預覽版的平板電腦,其中包括一套完整的傳感器。那些給出了約4000只,所以當然,不是每個人都有機會得到一個。好消息是,同樣的9軸傳感器融合系統被內置到Windows開發者預覽設備現在可在網上購買從ST微電子。“ST微電子情感發展局為Windows 8”(模型編號STEVAL,MKI119V1)連接,通過USB傳感器與HID類驅動程序包含在Windows 8中的工作。如果你已經下載的Windows 8開發者預覽版本,並渴望嘗試傳感器的經驗,你應該考慮讓這些設備之一。
參考文章http://blogs.msdn.com/b/b8/archive/2012/01/24/supporting-sensors-in-windows-8.aspx?Redirected=true