? ? ??
? ? ? 在HTML5中,Device API相關內容眾多,而且結構比較復雜,內容有所重疊,大家在使用時可能會遇到許多問題,下面我針對這些問題談一下個人的理解。
1、**The Media CaptureAPI VS System Information API,兩者都可以訪問攝像頭和話筒,有什么區別?**
? ? ?背景:[The Media Capture API](http://www.w3.org/TR/media-capture-api/)定義了一個高級別的API來訪問設備的攝像頭和話筒,SystemInformation API的[輸入設備](http://www.w3.org/TR/2010/WD-system-info-api-20100202/#output-devices)展示了系統的輸入設備,例如鼠標、鍵盤、攝像頭和話筒。
? ? ?**答案**:The Media CaptureAPI定義的API提供了對設備的音頻、圖像和視頻的捕捉能力。注意,它是一個高級別的接口,實現了照相機和話筒的可編程訪問。
? ? ?System InformationAPI集中在關注設備狀態(雖然它也有set方法)。例如可以讀取攝像頭以下屬性:supportsVideo(是否支持視頻錄制)、hasFlash(是否支持閃光燈)、sensorPixels(圖像傳感器像素)、maxZoomFactor(最大支持多少變焦),另外還可以遍歷所有攝像頭。
? ? ?所以,前者是高級別接口來實現對攝像頭和話筒的可編程訪問,后者關注攝像頭和話筒的設備狀態。

攝像頭和話筒是手機的重要功能
2、**DeviceOrientationEvent VS System Information API VS Sensor API,三者都可以讀取傳感器信息,有何區別?**
? ? ?背景:DeviceOrientationEvent提供了對于設備物理方向和運動信息的事件處理,常見的信息來源包括陀螺儀、羅盤等傳感器。System Information API里專門有一部分是傳感器結果。而Sensor API本身就是為傳感器而定義的API。
? ? ?**答案**:DeviceOrientationEvent主要關注運動和方位傳感器,并且它并不提供對基本傳感器數據的訪問或者對傳感器的控制,而是高層次的封裝。
? ? ?System InformationAPI目前主要關注環境傳感器,包括環境亮度、環境溫度、大氣壓力、臨近距離(臨近傳感器,還記的面部貼到iPhone屏幕時屏幕自動關閉嗎?),另外沒有其他傳感器支持。
? ? ?Sensor API如其名,準備提供對所有已知傳感器的訪問,并且提供的是原始的傳感器數據。
? ? ?所以,前者是對運動和方位傳感器高級別的封裝,第二個主要關注環境傳感器的信息,第三個會提供所有傳感器的原始數據。

傳感器支持的重力感應游戲
3、**Speech InputAPI VS The Media Capture API,兩者都和語音輸入有關,有何異同?**
? ? ?背景:Speech Input API支持語音輸入和識別,The Media Capture API可以獲取輸入的音頻。
? ? ?**答案**:Speech Input API由Google提出,目前還只是文件草案,而且主要用于語音識別,旨在幫助Web開發者使用標準的語音識別軟件。由于未來語音識別的重要性,可以想見這個API在Google、Apple和Microsoft之間將會有一番標準的劇烈爭斗,不會輕易的成為工作組草案。

Google與Apple將會有一番龍爭虎斗
? ? ?The Media Capture API作為目前W3C認可的工作組草案,關注的主要是音頻采集。
? ? ?所以,前者主要是用于語音識別的文件草案,而后者是關注音頻采集的工作組草案。
4、**The Media Capture VS HTML Media Capture,兩者有何聯系和區別?**
? ? ?背景:兩者命名類似,又都是[DeviceAPI的組成部分](http://www.w3.org/2009/dap/)。
? ? ?**答案**:兩者都關注攝像頭和話筒。HTML Media Capture API如起名,只能通過表單在捕獲后獲取到圖像和音視頻,它是一個簡單的,很容易實現的,能在大多數情況下方便使用的API。The Media Capture API(getUserMedia)來源于Device標簽,是對攝像頭和話筒的可編程訪問,未來將成為webRTC的一個規范(有可能不屬于HTML5),Opera Mobile和Chrome都提供了對它的支持。它非常強大和好玩,可以實時的捕捉視頻,不過它更復雜,并且有一些安全問題。

使用HTML Media Capture來進行文件上傳時的多媒體采集
5、**Device APIVS Device Characteristics,兩者有何聯系和區別?**
? ? ?背景:Device API包含SystemInformation API,而System Information API包括Device Characteristics、Sensor Results和Network Characteristics,見[http://dev.w3.org/2009/dap/system-info/](http://dev.w3.org/2009/dap/system-info/)。
? ? ?**答案**:Device API是設備整體所有相關的API,包括硬件、軟件等多個方面,而Device Characteristics集中在設備硬件特性上。Device API整體結構如下:

Device API結構
? ? ?最后,你會注意到在大部分HTML5草案頁面里“Statusof This Document”都會有如下文字“Publication as a Working Draft does not imply endorsement by the?W3C?Membership.This is a draft document and may be updated, replaced or obsoleted by otherdocuments at any time. It is inappropriate to cite this document as other thanwork in progress.”,這代表這些規范都還只是草案,并不是最終穩定狀態,W3C隨時有可能會進行調整。
附:API地址
The Media Capture API:[http://www.w3.org/TR/media-capture-api/](http://www.w3.org/TR/media-capture-api/)
HTML Media Capture API:[http://www.w3.org/TR/2011/WD-html-media-capture-20110414/](http://www.w3.org/TR/2011/WD-html-media-capture-20110414/)
System InformationAPI:[http://www.w3.org/TR/2010/WD-system-info-api-20100202/](http://www.w3.org/TR/2010/WD-system-info-api-20100202/)
OrientationEvent:[http://www.w3.org/TR/orientation-event/](http://www.w3.org/TR/orientation-event/)
Sensor API:[http://dev.w3.org/2009/dap/system-info/Sensors.html](http://dev.w3.org/2009/dap/system-info/Sensors.html)
Speech InputAPI:[http://www.w3.org/2005/Incubator/htmlspeech/2010/10/google-api-draft.html](http://www.w3.org/2005/Incubator/htmlspeech/2010/10/google-api-draft.html)
原創文章,轉載請標明出處:[蔣宇捷的專欄](http://blog.csdn.net/hfahe)
- 前言
- AutoPager的簡單實現
- 利用CSS3特性巧妙實現漂亮的DIV箭頭
- IE9在Win7下任務欄新特性簡介
- 瀏覽器九宮格的簡單實現
- Raphael js庫簡介
- 使用CSS3構建Ajax加載動畫
- 用CSS3創建動畫價格表
- 用CSS3實現瀏覽器的縮放功能
- 用純CSS3實現QQ LOGO
- 用CSS3創建旋轉載入器
- 使用Javascript開發移動應用程序
- 用HTML5創建超酷圖像灰度漸變效果
- 使用CSS3創建文字顏色漸變(CSS3 Text Gradient)
- 僅用CSS創建立體旋轉幻燈片
- 如何創建跨瀏覽器的HTML5表單
- 用CSS3實現動畫進度條
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas動畫實例
- 談HTML5和CSS3的國際化支持
- 實現跨瀏覽器的HTML5占位符
- 前端開發必備工具:WhatFont Bookmarklet-方便的查詢網頁上的字體
- 使用HTML5和CSS3來創建幻燈片
- HTML5之美
- 如何使用HTML5創建在線精美簡歷
- 以小見大、由淺入深-談如何面試Javascript工程師
- 快速入門:HTML5強大的Details元素
- 用CSS3實現圖像風格
- HTML5視頻字幕與WebVTT
- 用純CSS3實現Path華麗動畫
- 用3個步驟實現響應式網頁設計
- 遇見CSS3濾鏡
- 關于CSS3濾鏡的碎念
- 用純CSS3繪制萌系漫畫人物動態頭像
- CSS3新的鼠標樣式介紹
- 用HTML5獻上愛的3D玫瑰
- 對HTML5 Device API相關規范的解惑
- 如何使用HTML5實現拍照上傳應用
- 2012第一季度國外HTML5移動開發趨勢
- HTML5新特性:范圍樣式
- 百度開發者大會-《用HTML5新特性開發移動App》PPT分享
- Chrome 19對于HTML5最新支持的動態:電池狀態API,全屏API,震動API,語音API
- 遇見Javascript類型數組(Typed Array)
- 用HTML5 Audio API開發游戲音樂
- 用HTML5實現人臉識別
- 用Javascript實現人臉美容
- Chrome 20對于HTML5最新支持的動態:顏色輸入,網絡信息API,CSS著色器
- 用HTML5實現手機搖一搖的功能
- 用HTML5實現iPad應用無限平滑滾動
- 用非響應式設計構建跨端Web App
- 了解SVG
- HTML5圖像適配介紹
- HTML5安全:內容安全策略(CSP)簡介
- HTML5安全:CORS(跨域資源共享)簡介
- 用CSS3 Region和3D變換實現書籍翻頁效果
- 談談移動App的思維誤區
- Chrome新特性:文件夾拖拽支持
- 《關注HTML5安全》
- HTML5安全風險詳析之一:CORS攻擊
- HTML5安全風險詳析之二:Web Storage攻擊
- HTML5圖像適配最新進展:響應式圖片規范草案
- HTML5移動Web App相關標準狀態及路線圖
- HTML5安全風險詳析之三:WebSQL攻擊
- Chrome引入WebRTC支持視頻聊天App
- HTML5安全風險詳析之四:Web Worker攻擊
- HTML5安全風險詳析之五:劫持攻擊
- HTML5安全風險詳析之六:API攻擊
- HTML5安全攻防詳析之七:新標簽攻擊
- 在iOS Safari中播放離線音頻
- 使用WebRTC實現遠程屏幕共享
- Firefox、Android、iOS遇見WebRTC
- HTML5光線傳感器簡介
- HTML5安全攻防詳析之八:Web Socket攻擊
- HTML5安全攻防詳析之完結篇:HTML5對安全的改進
- 激動人心!在網頁上通過語音輸入文字 - HTML5 Web Speech API介紹
- Web滾動性能優化實戰
- 用CSS3設計響應式導航菜單
- 用HTML5構建高性能視差網站
- 漫談@supports與CSS3條件規則
- HTML5下載屬性簡介
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(一)
- 如何開發優秀的HTML5游戲?-迪斯尼《尋找奧茲之路》游戲技術詳解(二)
- 趨勢:Chrome為打包應用提供強大新特性
- 從HTML5移動應用現狀談發展趨勢
- 基于HTML5的Web跨設備超聲波通信方案