对HTML5 Device API相关规范的解惑

      

      在HTML5中,Device API相关内容众多,而且结构比较复杂,内容有所重叠,大家在使用时可能会遇到许多问题,下面我针对这些问题谈一下个人的理解。

1、The Media CaptureAPI VS System Information API,两者都可以访问摄像头和话筒,有什么区别?

     背景:The Media Capture API定义了一个高级别的API来访问设备的摄像头和话筒,SystemInformation API的输入设备展示了系统的输入设备,例如鼠标、键盘、摄像头和话筒。

     答案: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的组成部分

     答案:两者都关注摄像头和话筒。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/

     答案: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/

HTML Media Capture API:http://www.w3.org/TR/2011/WD-html-media-capture-20110414/

System InformationAPI:http://www.w3.org/TR/2010/WD-system-info-api-20100202/

OrientationEvent:http://www.w3.org/TR/orientation-event/

Sensor API: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

原创文章,转载请标明出处:蒋宇捷的专栏

文章导航