对HTML5 Device API相关规范的解惑

最后更新于:2022-04-01 19:43:29

      ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2deb502a.png)       在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(最大支持多少变焦),另外还可以遍历所有摄像头。      所以,前者是高级别接口来实现对摄像头和话筒的可编程访问,后者关注摄像头和话筒的设备状态。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2decf44f.jpg) 摄像头和话筒是手机的重要功能 2、**DeviceOrientationEvent VS System Information API VS Sensor API,三者都可以读取传感器信息,有何区别?**      背景:DeviceOrientationEvent提供了对于设备物理方向和运动信息的事件处理,常见的信息来源包括陀螺仪、罗盘等传感器。System Information API里专门有一部分是传感器结果。而Sensor API本身就是为传感器而定义的API。      **答案**:DeviceOrientationEvent主要关注运动和方位传感器,并且它并不提供对基本传感器数据的访问或者对传感器的控制,而是高层次的封装。      System InformationAPI目前主要关注环境传感器,包括环境亮度、环境温度、大气压力、临近距离(临近传感器,还记的面部贴到iPhone屏幕时屏幕自动关闭吗?),另外没有其他传感器支持。      Sensor API如其名,准备提供对所有已知传感器的访问,并且提供的是原始的传感器数据。      所以,前者是对运动和方位传感器高级别的封装,第二个主要关注环境传感器的信息,第三个会提供所有传感器的原始数据。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2dee27fd.jpg) 传感器支持的重力感应游戏 3、**Speech InputAPI VS The Media Capture API,两者都和语音输入有关,有何异同?**      背景:Speech Input API支持语音输入和识别,The Media Capture API可以获取输入的音频。      **答案**:Speech Input API由Google提出,目前还只是文件草案,而且主要用于语音识别,旨在帮助Web开发者使用标准的语音识别软件。由于未来语音识别的重要性,可以想见这个API在Google、Apple和Microsoft之间将会有一番标准的剧烈争斗,不会轻易的成为工作组草案。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2df0413e.jpg) 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都提供了对它的支持。它非常强大和好玩,可以实时的捕捉视频,不过它更复杂,并且有一些安全问题。 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2df1df95.png) 使用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整体结构如下: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-09_57a9a2df35bd8.png) 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)
';