Capture

설명

  • 디바이스의 오디오, 이미지, 비디오 캡쳐를 위한 기능을 제공한다.
// The global capture object
var capture = navigator.device.capture;

제약사항

  • Capture API의 플랫폼별 제약사항은 다음과 같다.

Android

MediaFile.getFormatData
  • 미디어 파일의 포맷 정보를 수집하는 API에 대해 제한이 있어, 일부 MediaFileData 속성을 지원하지 않는다.
  • MediaFileData : codecs, bitrate 을 지원하지 않는다.
CaptureAudioOptions
  • duration 파라미터를 지원하지 않는다.
  • 프로그램적으로 녹음 시간을 제한할 수 없다.
  • mode 파라미터를 지원하지 않는다.
  • 오디오 녹음 포맷을 프로그램적으로 정의할 수 없다.
  • 오디오 녹음의 포맷은 audio/amr 만을 사용할 수 있다.
CaptureImageOptions
  • mode 파라미터를 지원하지 않는다.
  • 이미지의 크기와 포맷을 프로그램적으로 정의할 수 없다.
  • 하지만 단말기 사용자가 이미지의 크기는 지정할 수 있다.
  • 이미지는 JPEG (image/jpeg) 로 저장된다.
CaptureVideoOptions
  • duration 파라미터를 지원하지 않는다.
  • 비디오 촬영 크기를 프로그램적으로 제한할 수 없다.
  • mode 파라미터를 지원하지 않는다.
  • 비디오의 크기와 파라미터를 프로그램적으로 정의할 수 없다.
  • 비디오는 3GPP (videp/3gpp) 로 기본적으로 촬영된다.

iOS

capture.captureAudio
  • iOS는 단순한 유저 인터페이스를 가지기 때문에 기본적으로 오디오 녹음을 지원하지 않는다.
MediaFile.getFormatData
  • 미디어 파일의 포맷 정보를 수집하는 API에 대해 제한이 있어, 일부 MediaFileData 속성을 지원하지 않는다.
  • MediaFileData : codecs을 지원하지 않는다.
  • MediaFileData : bitrate 는 iOS4 에서만 지원한다.
CaptureAudioOptions
  • limit 파라미터를 지원하지 않는다.
  • 한 번에 하나의 녹음만 실행할 수 있다.
  • 오디오 녹음 포맷을 프로그램적으로 정의할 수 없다.
  • 오디오 녹음의 포맷은 audio/wav 만을 사용할 수 있다.
CaptureImageOptions
  • limit 파라미터를 지원하지 않는다.
  • 한 번에 하나의 이미지만을 캡처할 수 있다
  • mode 파라미터를 지원하지 않는다.
  • 이미지의 크기와 포맷을 프로그램적으로 정의할 수 없다.
  • 이미지는 JPEG (image/jpeg) 로 저장된다.
CaptureVideoOptions
  • limit 파라미터는 지원하지 않는다.
  • 한 번에 하나의 비디오 촬영만 할 수 있다.
  • duration 파라미터를 지원하지 않는다.
  • 비디오 촬영 크기를 프로그램적으로 제한할 수 없다.
  • mode 파라미터를 지원하지 않는다.
  • 비디오의 크기와 파라미터를 프로그램적으로 정의할 수 없다.
  • 비디오는 MOV (video/quicktime) 로 기본적으로 촬영된다.

환경 설정

Android

  • app/res/xml/config.xml
<plugin name="Capture" value="org.apache.cordova.Capture"/>
  • app/AndroidManifest
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS

  • App/Supporting Files/config.xml
    <feature name="Capture">
        <param name="ios-package" value="CDVCapture"/>
    </feature>

속성

supportedAudioModes

  • 디바이스에서 제공하는 오디오 녹음 포맷.
  • ConfigurationData[]

supportedImageModes

  • 디바이스에서 제공하는 이미지 사이즈와 포맷
  • ConfigurationData[]

supportedVideoModes

  • 디바이스에서 제공하는 비디오 포맷
  • ConfigurationData[]

관련 함수

capture.captureAudio

  • 단말기의 녹음 프로그램을 호출하여 녹음을 하고, 녹음을 완료하면 녹음한 데이터(clip) 를 가져온다.
navigator.device.capture.captureAudio( 
    CaptureCB captureSuccess, CaptureErrorCB captureError,  [CaptureAudioOptions options]
);
  • Quick Example
// 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]
);
  • Quick Example
// 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]
);
  • Quick Example
// 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

  • 녹음을 지원하는 captureAudio() 메소드에 대한 옵션 객체.
var options = { limit: 3, duration: 10 };

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

CaptureImageOptions

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

CaptureVideoOptions

  • 동영상 촬영을 지원하는 captureVideo() 메소드에 대한 옵션 객체.
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 ) { ... };
  • Quick Example
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 ) { ... };
  • Quick Example
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

ConfigurationData

  • 디바이스에서 지원하는 캡처 속성들을 기록할 수 있는 객체.
  • video/3gpp, video/quicktime, image/jpeg, audio/amr, audio/wav
  • Quick Example
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

  • 캡처한 파일의 속성들을 기록할 수 있는 객체.
  • MediaFile.getFormatData
유형설명타입
name경로를 제외한 파일명.DOMString
fullPath파일명을 제외한 전체경로.DOMString
type미디어 파일의 mime type.DOMString
lastModifiedDate파일의 최종수정날짜.Date
sizebyte 단위를 가지는 파일의 크기.Number

MediaFileData

  • 미디어 파일에 대한 포맷 정보를 나타내는 객체.
  • 지원 속성
유형AndroidiOS비고
heightXX항상, null이다.
bitrateXOiOS4에서만 오디오를 유일하게 지원한다. 이미지나 비디오는 항상 0이다.
heightOO이미지와 비디오 파일에서만 지원한다.
widthOO이미지와 비디오 파일에서만 지원한다.
durationOO이미지와 비디오 파일에서만 지원한다.

참고 자료

 
egovframework/hyb3.9/hrte/deviceapi/capture.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki