===== Camera  =====
==== 설명 ====
  * 디바이스의 기본 카메라 어플리케이션에 접속하는 기능을 제공한다.
==== 제약사항 ====
  * Camera API의 플랫폼별 제약사항은 다음과 같다.
=== Android === 
== cameraOptions ==
  * allowEdit 는 적용되지 않는다.
  * Camera.PictureSourceType.PHOTOLIBRARY와 Camera.PictureSourceType.SAVEDPHOTOALBUM 은 모두 사진 앨범을 보여준다.
=== iOS ===
== camera.getPicture ==
  * JavaScript의 alert()를 가지는 callback 함수는 문제를 야기한다. (alert가 표시되기 전에 이미지를 보여주거나, popover 효과를 나타내는 문제.)
  * setTimeout("alert('message');", 0);로 문제를 해결한다.
== cameraOptions ==
  * Quality를 50 이하로 설정해야 특정 단말기에서 나타나는 메모리 오류를 피할 수 있다.
  * destinationType.FILE_URI 을 사용할 경우, 사진이 어플리케이션의 임시폴더에 저장된다. 
  * 어플리케이션이 종료될 때, 어플리케이션 임시폴더 내의 사진들은 삭제된다. 
  * 사진들의 용량이 대체로 크기 때문에 navigator.fileMgr 를 통해 단말기의 용량을 조절하여야 한다.
==== 환경 설정 ====
=== Android ===
  * app/res/xml/config.xml
  * app/AndroidManifest
=== iOS === 
  * App/Supporting Files/config.xml
Plugins
    
        
    
==== 관련 함수 ====
=== camera.getPicture === 
  * 카메라로 사진을 찍고 찍은 사진을 가져오거나, 단말기의 앨범에서 사진을 선택해서 가져온다.
  * base64로 인코딩된 이미지를 가져오거나 사진 파일의 경로을 통해 사진을 가져온다.
navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
  * Quick Example [Base64-encoded Image]
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
 }); 
function onSuccess(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
    alert('Failed because: ' + message);
}
  * Quick Example [이미지 경로]
navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
    destinationType: Camera.DestinationType.FILE_URI }); 
function onSuccess(imageURI) {
    var image = document.getElementById('myImage');
    image.src = imageURI;
}
function onFail(message) {
    alert('Failed because: ' + message);
}
=== camera.cleanup ===
  * 임시 저장공간에 저장된 이미지 파일을 삭제한다.
  * **iOS**에서 유일하게 지원한다.
navigator.camera.cleanup( cameraSuccess, cameraError );
==== 파라미터 ====
=== cameraSuccess ===
  * 사진을 찍거나 선택하는데 성공했을때 실행하는 callback 함수.
  * imageData : Base64로 인코딩된 이미지 데이터나 File URI를 가지는 이미지 데이터이다.
function(imageData) {
    // Do something with the image
}
=== cameraError ===
  * 사진을 찍거나 선택하는데 실패 했을 때 메시지를 매개변수로 하는 callback 함수.
  * message : 디바이스에서 제공하는 문자열형태의 native 코드.
function(message) {
    // Show a helpful message
}
=== cameraOptions ===
  * 카메라의 설정을 조정하는 선택적 옵션들이다.
{ quality : 75, 
  destinationType : Camera.DestinationType.DATA_URL, 
  sourceType : Camera.PictureSourceType.CAMERA, 
  allowEdit : true,
  encodingType: Camera.EncodingType.JPEG,
  targetWidth: 100,
  targetHeight: 100,
  popoverOptions: CameraPopoverOptions,
  saveToPhotoAlbum: false };
^유형^설명^타입^비고^
|quality|이미지의 품질(해상도)를 백분율로 정의한다.|Number|값 : 0 ~ 100|
|destinationType|이미지의 포맷을 정의한다.|Number|0 : DATA_URL, 1 : FILE_URI|
|sourceType|포토 라이브러리, 카메라에서 찍은 사진 등 선택할 소스를 설정한다.|Number|PHOTOLIBRARY : 0, CAMERA : 1,SAVEDPHOTOALBUM : 2|
|allowEdit|이미지 선택 전, 이미지 편집 여부.|Boolean| |
|encodingType|이미지 파일의 인코딩 종류를 정의한다.|Number|JPEG : 0, PNG : 1|
|targetWidth|이미지의 너비(pixel)를 설정한다.|Number|비율은 고정.|
|targetHeight|이미지의 높이(pixel)를 설정한다.|Number|비율은 고정.|
|mediaType|pictureSourceType이 PHOTOLIBRARY 또는 SAVEDPHOTOALBUM일 때, 미디어의 타입을 설정한다.|Number| |
|correctOrientation|이미지를 담는동안 이미지 회전 여부.|boolean| |
|saveToPhotoAlbum|이미지를 담은 후, 단말기 저장 여부.|boolean| |
|popoverOptions|iPad에서의 popover 옵션|CameraPopoverOptions| |
  * destinationType
 Camera.DestinationType = {
        DATA_URL : 0,                // Return image as base64 encoded string
        FILE_URI : 1                 // Return image file URI
    };
  * sourceType
Camera.PictureSourceType = {
    PHOTOLIBRARY : 0,
    CAMERA : 1,
    SAVEDPHOTOALBUM : 2
};
  * encodingType
 Camera.EncodingType = {
        JPEG : 0,               // Return JPEG encoded image
        PNG : 1                 // Return PNG encoded image
    };
  * mediaType
Camera.MediaType = { 
    PICTURE: 0,             // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
    VIDEO: 1,               // allow selection of video only, WILL ALWAYS RETURN FILE_URI
    ALLMEDIA : 2            // allow selection from all media types
};
=== cameraOptions ===
  * Library나 앨범의 이미지를 선택할 때, iPad에서 popover의 방향이나 위치를 설정하는 파라미터다.
{ x : 0, 
  y :  32,
  width : 320,
  height : 480,
  arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
};
^유형^설명^타입^비고^
|x|화면에서 popover되는 위치의 pixel 단위 x축.|Number| |
|y|화면에서 popover되는 위치의 pixel 단위 y축.|Number| |
|width|화면에서 popover되는 요소에 대한 pixel 단위의 너비 값.|Number| |
|height|화면에서 popover되는 요소에 대한 pixel 단위의 높이 값.|Number| |
|arrowDir|popover 되는 방향.|Camera.PopoverArrowDirection| |
  * Camera.PopoverArrowDirection
Camera.PopoverArrowDirection = {
        ARROW_UP : 1,        // matches iOS UIPopoverArrowDirection constants
        ARROW_DOWN : 2,
        ARROW_LEFT : 4,
        ARROW_RIGHT : 8,
        ARROW_ANY : 15
    };
==== 참고 자료 ====
  * Phonegap : http://docs.phonegap.com/en/2.9.0/cordova_camera_camera.md.html#Camera