在7月5日,由天翼空間·開發者工廠主辦,infoq協助策劃的第十一期專家講壇活動上,來自windows embedded方向mvp施炯( @浙萬院電信物聯網專業-施炯) 向開發者介紹了wp7裝置感測器開發的相關知識,主要談到了accelerometer類、compass類和gyroscope類的使用,motion api的使用,並針對開源控制項accelerometerhelper、shake gesture library進行了分享。
分享主要包含wp7裝置感測器裝置簡介,如何使用accelerometer、compass和gyroscope,例項專案running mate實踐等。
wp7裝置上包含的感測器主要有加速計(accelerometer)、麥克風(microphone)、a-gps、攝像頭(camera)、羅盤(compass)、陀螺儀(gyroscope)。
加速計主要用來檢測手機受到的加速度大小和方向,手機靜置時只受到重力加速度影響,所以又有人把加速計功能又叫做重力感應功能。wp7裡的加速度計 也能夠響應手機的突然移動,比如顫動或突然晃動,可以用來**骰子或其他型別的隨機運動。加速計通常有三個軸(x,y,z),同時遵循笛卡爾右手座標體 統。在開發過程中,需要注意landscape分為左landscape模式和右landscape模式。
羅盤也稱之為磁力計,主要用來測試磁場強度和方向,磁力計的強項在於定位裝置的方位。可以測量出當前裝置與東南西北四個方向上的夾角。磁力計主要提供了以下層面的資料:
由於受到外部電磁場的干擾,會使得手機的compass資料精度降低,在這種情況下,我們必須提示使用者遠離磁場干擾,並且對compass進行校 準。在windows phone 7上,與currentvaluechanged一樣,os為compass提供了校準事件處理compass_calibrate。在os檢測到 heading accuracy的絕對值大於20度時,就會觸發該事件。在對compass進行校準時,一般顯示乙個,提示使用者對手機進行繞「8」字移動。陀螺儀就是內部有乙個陀螺,它的軸由於陀螺效應始終與初始方向平行,這樣就可以通過與初始方向的偏差計算出實際方向。手機裡陀螺儀實際上是乙個結構 非常精密的晶元,內部包含超微小的陀螺。陀螺儀測量是參考標準是內部中間在與地面垂直的方向上進行轉動的陀螺。通過裝置與陀螺的夾角得到結果。陀螺儀的強 項在於測量裝置自身的旋轉運動。對裝置自身運動更擅長。但不能確定裝置的方位。
motion api所做的事情,其實質就和gpsid類似。在應用程式開發過程中,如果開發者獲取原始的感測器資料,然後對其資料進行分析,從而去判斷手機的姿態和移 動方向,這樣乙個處理流程確實有點複雜,而且有時候也很難處理,如加速度感測器的返回值中,不僅僅包含了手機移動的加速度,還包括了重力加速度(事實上, 在windows phone os 7.0上,處理加速度感測器時,我們的確是需要經歷上面的過程)。
因此,在windows phone os 7.1(mango)中,引入了motion api,用它來對底層的感測器資料進行分析和處理,從而得到開發者需要的資訊,如裝置的姿態(yaw, pitch, and roll)、旋轉加速度和線性加速度。需要注意的是,一代的windows phone 7手機沒有開放motion api。因此,如果想要在windows phone os 7.0上寫基於motion的應用程式,那是無法實現的。但是,自從這個月初微軟提供了mango公升級以後,很多裝置廠商都對其生產的wp7推送了 mango更新。在os公升級以後,有些裝置就提供了對motion api的支援。
此外,在分享過程中,施炯還羅列了開發中的一些注意點:
在問答環節,施炯回答了網友的提問,詳細資訊如下:compass與gyro返回的數值不同:compass返回角度,gyro返回弧度
問:windows phone都有哪些感測器介面?是不是所有windows phone都具有這些感測器?關於講師答:windows phone主要的感測器包括加速度感測器、數字羅盤、陀螺儀等等。需要注意的是,並不是任何乙個wp7手機都支援這些感測器。比如,compass並不是 必須的。換句話說,微軟並沒有對其進行強制規定,硬體廠商可以根據自己的意願來選擇是否對其生產的windows phone 7裝置加入數字羅盤的支援。例如,對於我的三星focus i917而言,它支援加速度感測器和compass,但是卻並不支援gyro。
問:wp感測器都可以用來哪些相關型別應用軟體的開發,是否需要外界硬體裝置的支援?
答:wp感測器比較多,可以用到很多應用中,有遊戲、工具等等。開發這些應用,首先要確保你的手機支援這些感測器,這樣才能除錯。目前sdk的模擬器中,只給出了加速度感測器的模擬。
問:windows phone rtm版本和windows phone mango版本有什麼不同呢?
答:rtm就是os 7.0,mango就是os 7.1。
問:phonegap是否提供了對感測器的支援?
答:phonegap支援加速度感測器和數字羅盤,具體資訊可參考:getting started with windows phone。
問:基於陀螺儀api可以開發哪些型別的wp7應用呢?感覺對陀螺儀的作用和相關應用還是不太明白?
答:陀螺儀的資料反映了手機在三個軸方向的旋轉加速度。相對而言,我覺得motion api中的三個姿態更加有用。
關於專家講壇
天翼空間開發者社群專家講壇是天翼空間開發者社群(www.189works.com)2023年針對開發者推出的一項提公升專業能力的系列講座,每週四晚,邀請移動網際網路開發領域的權威專家,通過語音頻道專題講座,線上論壇訪談,以及微博、qq群線上同步直播的形式,為社群的開發者使用者提供系統的技術講座,答疑,以及運營知識方面的培訓。
往期內容回顧
關於專家講壇更多詳情,官方**。infoq也會對後續的活動進行跟蹤報道。
WP7上的Image使用技巧
部分翻譯摘錄自swick的blog 如果不是必須要使用透明,jpg是最好的選擇,wp7的jpg編碼速度要大大快於png resource vs.content 將 或其它種類資源 用何種型別進行xap編譯繫結的時候。resource和content有很大的不同,resource會繫結到dll之中,在...
WP7上的Image使用技巧
部分翻譯摘錄自swick的blog 如果不是必須要使用透明,jpg是最好的選擇,wp7的jpg編碼速度要大大快於png resource vs.content 將 或其它種類資源 用何種型別進行xap編譯繫結的時候。resource和content有很大的不同,resource會繫結到dll之中,在...
獲取WP7手機的本機裝置資訊
廢話少說,原始碼奉上 using microsoft.phone.info using system.windows.media.imaging devicemanufacturer 生產廠商 deviceextendedproperties.getvalue devicemanufacturer ...