목차

Capture

설명

// The global capture object
var capture = navigator.device.capture;

제약사항

Android

MediaFile.getFormatData
CaptureAudioOptions
CaptureImageOptions
CaptureVideoOptions

iOS

capture.captureAudio
MediaFile.getFormatData
CaptureAudioOptions
CaptureImageOptions
CaptureVideoOptions

환경 설정

Android

<plugin name="Capture" value="org.apache.cordova.Capture"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS

    <feature name="Capture">
        <param name="ios-package" value="CDVCapture"/>
    </feature>

속성

supportedAudioModes

supportedImageModes

supportedVideoModes

관련 함수

capture.captureAudio

navigator.device.capture.captureAudio( 
    CaptureCB captureSuccess, CaptureErrorCB captureError,  [CaptureAudioOptions options]
);
// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start audio capture
navigator.device.capture.captureAudio(captureSuccess, captureError, {limit:2});

capture.captureImage

navigator.device.capture.captureImage( 
    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureImageOptions options]
);
// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start image capture
navigator.device.capture.captureImage(captureSuccess, captureError, {limit:2});

capture.captureVideo

navigator.device.capture.captureVideo( 
    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureVideoOptions options]
);
// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start video capture
navigator.device.capture.captureVideo(captureSuccess, captureError, {limit:2});

MediaFile.getFormatData

mediaFile.getFormatData( 
    MediaFileDataSuccessCB successCallback, 
    [MediaFileDataErrorCB errorCallback]
);

Objects

CaptureAudioOptions

var options = { limit: 3, duration: 10 };

navigator.device.capture.captureAudio(captureSuccess, captureError, options);
유형설명
limit한번에 녹음할 수 있는 횟수를 정의한다.
duration녹음할 경우, 최대 녹음시간을 정의한다.
modecapture.supportedAudioModes 에서 지원하는 오디오 모드중 하나를 지정한다.

CaptureImageOptions

navigator.device.capture.captureImage( 
    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureImageOptions options]
);
유형설명
limit한번에 사진 촬영할 수 있는 횟수를 정의한다.
modecapture.supportedImageModes 에서 지원하는 이미지 모드중 하나를 지정한다.

CaptureVideoOptions

var options = { limit: 3 };

navigator.device.capture.captureVideo(captureSuccess, captureError, options);
유형설명
limit한번에 촬영할 수 있는 횟수를 정의한다.
duration촬영할 경우, 최대 촬영시간을 정의한다.
modecapture.supportedVideoModes 에서 지원하는 비디오 모드중 하나를 지정한다

CaptureError

유형설명
CaptureError.CAPTURE_INTERNAL_ERR카메라가 사진을 찍거나 마이크로폰이 녹음을 하는 데 실패했을 경우의 오류.
CaptureError.CAPTURE_APPLICATION_BUSY카메라 또는 녹음 프로그램을 다른 서비스로 인해 호출할 수 없는 경우의 오류.
CaptureError.CAPTURE_INVALID_ARGUMENT옵션의 설정이 올바르지 않을 경우 phoneGap API에서 발생하는 오류.
CaptureError.CAPTURE_NO_MEDIA_FILES사용자가 촬영을 중단하고 임의로 빠져나왔을 때 발생하는 오류.
CaptureError.CAPTURE_NOT_SUPPORTED요청한 미디어 촬영이 지원하지 않을 때 발생하는 오류.

CaptureCB

function captureSuccess( MediaFile[] mediaFiles ) { ... };
function captureSuccess(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

CaptureErrorCB

function captureError( CaptureError error ) { ... };
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

ConfigurationData

var imageModes = navigator.device.capture.supportedImageModes;

var width = 0;
var selectedmode;
for each (var mode in imageModes) {
    if (mode.width > width) {
        width = mode.width;
        selectedmode = mode;
    }
}
유형설명타입
type미디어 유형을 ASCII 코드로 인코딩한 소문자 문자열.DOMString
height이미지나 비디오의 높이(pixel)를 정의하며, 오디오의 경우 0으로 처리한다.Number
width이미지나 비디오의 너비(pixel)를 정의하며, 오디오의 경우 0으로 처리한다.Number

MediaFile

유형설명타입
name경로를 제외한 파일명.DOMString
fullPath파일명을 제외한 전체경로.DOMString
type미디어 파일의 mime type.DOMString
lastModifiedDate파일의 최종수정날짜.Date
sizebyte 단위를 가지는 파일의 크기.Number

MediaFileData

유형AndroidiOS비고
heightXX항상, null이다.
bitrateXOiOS4에서만 오디오를 유일하게 지원한다. 이미지나 비디오는 항상 0이다.
heightOO이미지와 비디오 파일에서만 지원한다.
widthOO이미지와 비디오 파일에서만 지원한다.
durationOO이미지와 비디오 파일에서만 지원한다.

참고 자료