文章源自:http://blog.csdn.net/phonegapcn/article/details/6692540
提供对设备音频、图像和视频采集功能的访问。
对象:
- Capture
- CaptureAudioOptions
- CaptureImageOptions
- CaptureVideoOptions
- CaptureCB
- CaptureErrorCB
- ConfigurationData
- MediaFile
- MediaFileData
方法:
- capture.captureAudio
- capture.captureImage
- capture.captureVideo
- MediaFile.getFormatData
范围:
capture对象被分配给navigator.device对象,因此作用域为全局范围。
简单的范例:
// 全局范围的capture对象 var capture = navigator.device.capture;属性:
- supportedAudioModes:当前设备所支持的音频录制格式。(ConfigurationData[] 类型)
- supportedImageModes:当前设备所支持的拍摄图像尺寸及格式。(ConfigurationData[] 类型)
- supportedVideoModes:当前设备所支持的拍摄视频分辨率及格式。(ConfigurationData[] 类型)
方法:
- capture.captureAudio:启动设备录制音频剪辑的音频录制应用程序。
- capture.captureImage:启动设备拍摄照片的摄像头应用程序。
- capture.captureVideo:启动设备拍摄视频的视频录制应用程序。
支持的平台:
- Android
- BlackBerry WebWorks (OS 5.0或更高版本)
- iOS
capture.captureAudio :启动录音机应用程序并返回采集的音频剪辑文件。
navigator.device.capture.captureAudio(CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureAudioOptions options] );说明:
该方法通过设备默认的音频录制应用程序开始一个异步操作以采集音频录制。该操作允许设备用户在一个会话中同时采集多个录音。
当用户退出音频录制应用程序,或系统到达CaptureAudioOptions的limit参数所定义的最大录制数时都会停止采集操作。如果没有设置limit参数的值,则使用其默认值1,也就是说当用户录制好一个音频剪辑后采集操作就会终止。
当采集操作结束后,系统会调用CaptureCB回调函数,传递一个包含所有采集到的音频剪辑文件的MediaFile对象数组。如果用户在完成一个音频剪 辑采集之前终止采集操作,系统会调用CaptureErrorCB回调函数,并传递一个包含 CaptureError.CAPTURE_NO_MEDIA_FILES错误代码的CaptureError对象。
支持的平台:
- Android
- BlackBerry WebWorks (OS 5.0或更高版本)
- iOS
简单的范例:
// 采集操作成功完成后的回调函数 var captureSuccess = function(mediaFiles) { var i, path, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { path = mediaFiles[i].fullPath; // 对文件进行感兴趣的操作 } }; // 采集操作出错后的回调函数 var captureError = function(error) { navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error'); }; // 开始采集音频 navigator.device.capture.captureAudio(captureSuccess, captureError, {limit:2});完整的范例:
<!DOCTYPE html> <html> <head> <title>Capture Audio</title> <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> <script type="text/javascript" charset="utf-8" src="json2.js"></script> <script type="text/javascript" charset="utf-8"> // 采集操作成功完成后的回调函数 function captureSuccess(mediaFiles) { var i, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { uploadFile(mediaFiles[i]); } } // 采集操作出错后的回调函数 function captureError(error) { var msg = 'An error occurred during capture: ' + error.code; navigator.notification.alert(msg, null, 'Uh oh!'); } // “Capture Audio”按钮点击事件触发函数 function captureAudio() { // 启动设备的音频录制应用程序, // 允许用户最多采集2个音频剪辑 navigator.device.capture.captureAudio(captureSuccess, captureError, {limit: 2}); } // 上传文件到服务器 function uploadFile(mediaFile) { var ft = new FileTransfer(), path = mediaFile.fullPath, name = mediaFile.name; ft.upload(path, "http://my.domain.com/upload.php", function(result) { console.log('Upload success: ' + result.responseCode); console.log(result.bytesSent + ' bytes sent'); }, function(error) { console.log('Error uploading file ' + path + ': ' + error.code); }, { fileName: name }); } </script> </head> <body> <button onclick="captureAudio();">Capture Audio</button> </body> </html>
BlackBerry WebWorks的特异情况:
- 在BlackBerry WebWorks上,PhoneGap会尝试启动RIM提供的Voice Notes Recorder应用程序来采集音频录制。如果设备没有安装该应用程序,开发者会收到一个CaptureError.CATURE_NOT_SUPPORTED错误代码。
iOS的特异情况:
- iOS没有默认的音频录制应用程序,因此仅提供一个简单的用户界面。
CaptureAudioOptions:封装音频采集的配置选项。
属性:
- limit:在单个采集操作期间能够记录的音频剪辑数量最大值,必须设定为大于等于1(默认值为1)。
- drration:一个音频剪辑的最长时间,单位为秒。
- mode:选定的音频模式,必须设定为capture.supportedAudioModes枚举中的值。
简单的范例:
// 限制采集上限为3个媒体文件,每个文件不超过10秒 var options = { limit: 3, duration: 10 }; navigator.device.capture.captureAudio(captureSuccess, captureError, options);
Android的特异情况:
- 不支持duration参数,无法通过程序限制录制长度。
- 不支持mode参数,无法通过程序修改音频录制格式。使用自适应多速率(AMR)格式(audio/amr)进行音频录制编码。
BlackBerry WebWorks的特异情况:
- 不支持duration参数,无法通过程序限制录制长度。
- 不支持mode参数,无法通过程序修改音频录制格式。使用自适应多速率(AMR)格式(audio/amr)进行音频录制编码。
iOS的特异情况:
- 不支持limit参数,每次调用只能创建一个录制。
- 不支持mode参数,无法通过程序修改音频录制格式。使用波形音频(WAV)格式(audio/wav)进行音频录制编码。
capture.captureImage:开启摄像头应用程序,返回采集到的图像文件信息。
navigator.device.capture.captureImage( CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureImageOptions options] );说明:
该方法通过设备的摄像头应用程序开始一个异步操作以采集图像。该操作允许设备用户在一个会话中同时采集多个图像。
当用户退出摄像头应用程序,或系统到达CaptureImageOptions的limit参数所定义的最大图像数时都会停止采集操作。如果没有设置limit参数的值,则使用其默认值1,也就是说当用户采集到一个图像后采集操作就会终止。
当 采集操作结束后,系统会调用CaptureCB回调函数,传递一个包含每个采集到的图像文件的MediaFile对象数组。如果用户在完成一个图像采集之 前终止采集操作,系统会调用CaptureErrorCB回调函数,并传递一个包含 CaptureError.CAPTURE_NO_MEDIA_FILES错误代码的CaptureError对象。
支持的平台:
- Android
- BlackBerry WebWorks (OS 5.0或更高版本)
- iOS
简单的范例:
// 采集操作成功完成后的回调函数 var captureSuccess = function(mediaFiles) { var i, path, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { path = mediaFiles[i].fullPath; // 对文件进行感兴趣的操作 } }; // 采集操作出错后的回调函数 var captureError = function(error) { navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error'); }; // 开始采集图像 navigator.device.capture.captureImage(captureSuccess, captureError, {limit:2});完整的范例:
<!DOCTYPE html> <html> <head> <title>Capture Image</title> <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> <script type="text/javascript" charset="utf-8" src="json2.js"></script> <script type="text/javascript" charset="utf-8"> // 采集操作成功完成后的回调函数 function captureSuccess(mediaFiles) { var i, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { uploadFile(mediaFiles[i]); } } // 采集操作出错后的回调函数 function captureError(error) { var msg = 'An error occurred during capture: ' + error.code; navigator.notification.alert(msg, null, 'Uh oh!'); } // “Capture Image”按钮点击事件触发函数 function captureImage() { // 启动设备的摄像头应用程 // 允许用户最多采集2个图像 navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 2}); } // 上传文件到服务器 function uploadFile(mediaFile) { var ft = new FileTransfer(), path = mediaFile.fullPath, name = mediaFile.name; ft.upload(path,"http://my.domain.com/upload.php", function(result) { console.log('Upload success: ' + result.responseCode); console.log(result.bytesSent + ' bytes sent'); }, function(error) { console.log('Error uploading file ' + path + ': ' + error.code); }, { fileName: name }); } </script> </head> <body> <button onclick="captureImage();">Capture Image</button> </body> </html>CaptureImageOptions:封装图像采集的配置选项。
属性:
- limit: 在单个采集操作期间能够采集的图像数量最大值,必须设定为大于等于1(默认值为1)。
- mode: 选定的图像模式,必须设定为capture.supportedImageModes枚举中的值。
简单的范例:
// 最多采集3幅图像 var options = { limit: 3 }; navigator.device.capture.captureImage(captureSuccess, captureError, options);
Android的特异情况:
- 不支持mode参数,无法通过程序修改图像的大小和格式。不过设备用户可以修改图像的大小,图像会以JPEG格式(image/jpeg)存储。
BlackBerry WebWorks的特异情况:
- 不支持mode参数,无法通过程序修改图像的大小和格式。不过设备用户可以修改图像的大小,图像会以JPEG格式(image/jpeg)存储。
iOS的特异情况:
- 不支持limit参数,每调用一次采集一幅图像。
- 不支持mode参数,无法通过程序修改图像的大小和格式。图像会以JPEG格式(image/jpeg)存储。
capture.captureVideo:开启视频录制应用程序,返回采集到的视频剪辑文件信息。
// 最多采集3幅图像 var options = { limit: 3 }; navigator.device.capture.captureImage(captureSuccess, captureError, options);
说明:
该方法通过设备的视频录制应用程序开始一个异步操作以采集视频录制。该操作允许设备用户在一个会话中同时采集多个视频录制。
当用户退出视频录制应用程序,或系统到达CaptureVideoOptions的limit参数所定义的最大录制数时都会停止采集操作。如果没有设置limit参数的值,则使用其默认值1,也就是说当用户录制到一个视频剪辑后采集操作就会终止。
当 采集操作结束后,系统会调用CaptureCB回调函数,传递一个包含每个采集到的视频剪辑文件的MediaFile对象数组。如果用户在完成一个视频剪 辑采集之前终止采集操作,系统会调用CaptureErrorCB回调函数,并传递一个包含 CaptureError.CAPTURE_NO_MEDIA_FILES错误代码的CaptureError对象。
支持的平台:
- Android
- BlackBerry WebWorks (OS 5.0或更高版本)
- iOS
简单的范例:
// 采集操作成功完成后的回调函数 var captureSuccess = function(mediaFiles) { var i, path, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { path = mediaFiles[i].fullPath; // 对文件进行感兴趣的操作 } }; // 采集操作出错后的回调函数 var captureError = function(error) { navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error'); }; // 开始采集视频 navigator.device.capture.captureVideo(captureSuccess, captureError, {limit:2});完整的范例:
<!DOCTYPE html> <html> <head> <title>Capture Video</title> <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> <script type="text/javascript" charset="utf-8" src="json2.js"></script> <script type="text/javascript" charset="utf-8"> // 采集操作成功完成后的回调函数 function captureSuccess(mediaFiles) { var i, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { uploadFile(mediaFiles[i]); } } // 采集操作出错后的回调函数 function captureError(error) { var msg = 'An error occurred during capture: ' + error.code; navigator.notification.alert(msg, null, 'Uh oh!'); } // “Capture Video”按钮点击事件触发函数 function captureVideo() { // 启动设备的视频录制应用程序, // 允许用户最多采集2个视频剪辑 navigator.device.capture.captureVideo(captureSuccess, captureError, {limit: 2}); } // 上传文件到服务器 function uploadFile(mediaFile) { var ft = new FileTransfer(), path = mediaFile.fullPath, name = mediaFile.name; ft.upload(path,"http://my.domain.com/upload.php", function(result) { console.log('Upload success: ' + result.responseCode); console.log(result.bytesSent + ' bytes sent'); }, function(error) { console.log('Error uploading file ' + path + ': ' + error.code); }, { fileName: name }); } </script> </head> <body> <button onclick="captureVideo();">Capture Video</button> </body> </html>BlackBerry WebWorks 的特异情况:
- 在BlackBerry WebWorks上,PhoneGap会尝试启动RIM提供的Video Recorder应用程序来采集视频录制。如果设备没有安装该应用程序,开发者会收到一个CaptureError.CATURE_NOT_SUPPORTED错误代码。
CaptureVideoOptions:封装视频采集的配置选项。
属性:
- limit:在单个采集操作期间能够采集的视频剪辑数量最大值,必须设定为大于等于1(默认值为1)。
- drration: 一个视频剪辑的最长时间,单位为秒。
- mode: 选定的视频采集模式,必须设定为capture.supportedVideoModes枚举中的值。
简单的范例:
// 最多采集3个视频剪辑 var options = { limit: 3 }; navigator.device.capture.captureVideo(captureSuccess, captureError, options);Android的特异情况:
- 不支持duration参数,无法通过程序限制录制长度。
- 不支持mode参数,无法通过程序修改视频的大小和格式。不过,设备用户可以修改这些参数,默认情况下视频会以3GPP格式(video/3gpp)存储。
BlackBerry WebWorks的特异情况:
- 不支持duration参数,无法通过程序限制录制长度。
- 不支持mode参数,无法通过程序修改视频的大小和格式。不过,设备用户可以修改这些参数,默认情况下视频会以3GPP(video/3gpp)格式存储。
iOS的特异情况:
- 不支持limit参数,每调用一次采集一个视频。
- 不支持duration参数,无法通过程序限制录制长度。
- 不支持mode参数,无法通过程序修改视频的大小和格式。默认情况下视频会以MOV(video/3gpp)格式存储。
CaptureCB:媒体采集成功后调用的回调函数。
说明:
当完成一个成功的采集操作后会调用该函数。这意味着已经采集到一个媒体文件,同时要么用户已经退出媒体采集应用程序,要么已经到达采集数量上限。
每个MediaFile对象都指向一个采集到的媒体文件。
简单的范例:
// 采集操作成功完成后的回调函数 function captureSuccess(mediaFiles) { var i, path, len; for (i = 0, len = mediaFiles.length; i < len; i += 1) { path = mediaFiles[i].fullPath; //对文件进行感兴趣的操作 } }
CaptureErrorCB:媒体采集操作发生错误后调用的回调函数。
说明:
出现以下情况会调用该函数:试图在采集应用程序繁忙时启动媒体采集操作而引起错误、采集操作正在工作时出现错误、用户在没有任何媒体文件采集完成前取消采集操作。
该函数调用时会传递一个包含相应错误代码的CaptureError对象。
简单的范例:
// 采集操作出错后的回调函数 var captureError = function(error) { navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error'); }ConfigurationData:封装设备支持的媒体采集参数集。
说明:
该对象用于描述设备所支持的媒体采集模式,配置数据包括MIME类型和采集尺寸(适用于视频和图像采集)。
MIME类型应该符合RFC2046规范,例如:
- video/3gpp
- video/quicktime
- image/jpeg
- audio/amr
- audio/wav
属性:
- type:用小写ASCII编码字符串表示的媒体类型。(DOMString格式)
- height: 用像素表示的图像或视频高度,音频剪辑为0。(数字类型)
- width: 用像素表示的图像或视频宽度,音频剪辑为0。(数字类型)
简单的范例:
// 获得支持的图像模式 var imageModes = navigator.device.capture.supportedImageModes; // 选择最高水平分辨率的模式 var width = 0; var selectedmode; foreach (var mode in imageModes) { if (mode.width > width) { width = mode.width; selectedmode = mode; } }没有任何一个平台支持,所有配置数据数组都为空。
MediaFile:封装采集到的媒体文件的属性。
属性:
- name:不含路径信息的文件名。(DOMString类型)
- fullPath: 包含文件名的文件全路径。(DOMString类型)
- type: MIME类型。(DOMString类型)
- lastModifiesDate:文件最后修改的日期和时间。(日期类型)
- size:以字节数表示的文件大小。(数字类型)
方法:
- MediaFile.getFormatData: 获取媒体文件的格式信息
MediaFile.getFormatData:获取采集到的媒体文件的格式信息。
mediaFile.getFormatData( MediaFileDataSuccessCB successCallback, [MediaFileDataErrorCB errorCallback] )
说明:
该方法通过异步方式尝试获取媒体文件的格式信息。获取成功的情况下该方法会调用MediaFileDataSuccessCB回调并传递一个MediaFileData对象,尝试失败的情况下该方法会调用MediaFileDataErrorCB回调。
支持的平台:
- Android
- BlackBerry WebWorks (OS 5.0或更高版本)
- iOS
BlackBerry WebWorks的特异情况:
- 没有提供媒体文件格式信息的API,因此,所有MediaFileData对象都会返回默认值。参考MediaFileData文档。
Android的特异情况:
- 获取媒体文件格式信息的API受到限制,因此,不是所有的MediaFileData属性都支持。参考MediaFileData文档。
iOS的特异情况:
- 获取媒体文件格式信息的API受到限制,因此,不是所有的MediaFileData属性都支持。参考MediaFileData文档。
MediaFileData:封装媒体文件的格式信息。
属性:
- codecs: 音频及视频内容的实际格式。(DOMString类型)
- bitrate:文件内容的平均比特率。对于图像文件,属性值为0。(数字类型)
- height: 用像素表示的图像或视频高度,音频剪辑的该属性值为0。(数字类型)
- width: 用像素表示的图像或视频的宽度,音频剪辑的该属性值为0。(数字类型)
- duration: 以秒为单位的视频或音频剪辑时长,图像文件的该属性值为0。(数字类型)
BlackBerry WebWorks的特异情况:
没有提供媒体文件格式信息的API,因此MediaFile.getFormatData方法返回的MediaFileData对象包含以下默认值:
- codecs: 不支持,该属性始终为空。
- bitrate:不支持,该属性始终为0。
- heigh: 不支持,该属性始终为0。
- width: 不支持,该属性始终为0。
- duration: 不支持,该属性始终为0。
Android的特异情况:
MediaFileData属性的支持情况如下:
- codecs:不支持,该属性始终为空。
- bitrate:不支持,该属性始终为0。
- height:支持(仅限图像或视频文件)。
- width:支持(仅限图像或视频文件)。
- duration:支持(仅限音频或视频文件)。
iOS的特异情况:
MediaFileData属性的支持情况如下:
- codecs:不支持,该属性始终为空。
- bitrate:iOS4设备上仅支持音频,对于图像和视频此属性值为0。
- height:支持(仅限图像或视频文件)。
- width:支持(仅限图像或视频文件)。
- duration: 支持(仅限音频或视频文件)
相关推荐
这个"PhoneGap API帮助文档.zip"压缩包显然包含了关于如何使用PhoneGap API的详细指南,对于开发者来说是非常宝贵的资源。下面我们将深入探讨PhoneGap API中的关键组件及其功能。 1. **加速度计(Accelerometer)**...
网上的phonegap中文帮助文档尚少,翻译也不太好,在此收集了一些翻译优秀的文章,并制作成chm的帮助文档,以帮助各位学习,此文档包含了phonegap的主要使用功能,并提供了完整示例
本文档主要介绍**PhoneGap**中的**Capture API**,该API提供了访问音频、图片和视频采集设备的功能。 #### 二、核心概念 ##### 1. 对象 **Capture API**定义了几种关键对象用于配置和处理捕捉任务: - **...
标题:PhoneGap,API帮助文档翻译整理4-Compass(指南针) 描述:本文档将深入探讨PhoneGap中Compass API的功能与应用,包括如何获取设备的指南针方向、监听指南针变化以及如何处理相关事件。 ### 一、Compass API...
### PhoneGap Contacts API详解 #### 一、简介 在移动应用开发中,有时我们需要访问用户的通讯录以便于实现社交功能或其他交互式应用需求。PhoneGap(现称Cordova)为开发者提供了一套丰富的API,使得跨平台应用...
PhoneGap API 提供了一系列的事件,这些事件可以帮助开发者响应移动设备上的特定操作,从而实现更丰富的用户体验。本文将详细介绍 PhoneGap 中的事件类型及其使用方法。 1. **backbutton**:当用户在 Android 设备...
在本篇文档中,我们关注的是 PhoneGap 的 Media API,它提供了对移动设备媒体(如音频)的访问和控制能力。 Media API 提供了对音频文件的操作,包括播放、暂停、停止以及获取当前播放位置等功能。以下是对 Media ...
知识点:PhoneGap设备API及其应用 一、PhoneGap设备API概览 PhoneGap是一个开源框架,允许开发者使用HTML、CSS和JavaScript开发跨平台移动应用程序。设备API是PhoneGap提供的核心功能之一,它允许开发者访问设备的...
最新的Phonegap api 中文翻译版。让你快速入门。
知识点:PhoneGap的Camera API详解 一、PhoneGap与Camera API简介 PhoneGap是一个开源框架,允许开发者使用HTML,CSS和JavaScript开发跨平台移动应用程序。它通过提供一系列API来访问设备的功能,如摄像头、GPS、...
在本文中,我们将围绕PhoneGap框架的API文档进行探讨,特别是在处理移动设备上的通讯录(Contacts)数据时所使用的一系列方法。根据提供的文件信息,我们将会详细解释如何使用PhoneGap API来创建和查找通讯录中的...
在本篇文档中,我们将重点关注与“文件”相关的 API,包括 `File`、`DirectoryEntry`、`FileReader` 等。 **File API** 是一组用于读取、写入和管理设备文件系统层级结构的接口。这些接口遵循 W3C 的《文件系统 API...
// PhoneGap 激活时执行 function onDeviceReady() { // 不使用超时,因为不是必需的 // 如果在设备准备好之前调用了 getCurrentPosition,将会失败 navigator.geolocation.getCurrentPosition(onSuccess, on...
### PhoneGap中的Accelerometer(加速度计)API详解 #### 一、简介 加速度计是一种常见的硬件传感器,被广泛应用于智能手机和平板电脑等移动设备上。它主要用于测量设备在三维空间中的线性加速度,通常包括三个轴...
PhoneGap是一种跨平台的移动应用开发框架,它允许开发者使用HTML、CSS和JavaScript来构建原生的移动应用程序。...理解并熟练使用这些API,结合Android平台的具体实践,能够帮助你构建出功能完善的移动应用。
本手册为PhoneGap API的中文版指南,旨在为开发者提供全面、详细的API使用指导,帮助其利用PhoneGap框架开发跨平台移动应用。PhoneGap是一款基于HTML、CSS和JavaScript的技术栈,允许开发者构建适用于多个移动操作...
在PhoneGap中,事件处理是连接用户交互与应用程序逻辑的关键环节,让我们深入探讨PhoneGap API中的事件处理机制。 1. **事件模型**:PhoneGap遵循W3C的DOM事件模型,包括事件监听器、事件冒泡和事件捕获。事件监听...
总的来说,PhoneGap API中文版对于想要使用Web技术开发跨平台移动应用的开发者来说,是一个重要的学习和参考资源,可以帮助他们更高效地理解和利用PhoneGap的功能。通过深入学习和实践,开发者可以创建出功能丰富的...
此API演示项目是为了帮助开发者更直观地理解如何在实际应用中使用PhoneGap的各种功能。 在这个压缩包中,你将找到一系列的apidemo,每个代表了一个特定的PhoneGap API。这些API包括但不限于: 1. **设备API**:...