1. 개요

– Camera Module의 API들은 Web Context에서 단말기의 Camera를 사용하여 사진 또는 비디오을
촬영하거나 Camera Viewfinder를 Display하는 기능을 제공한다.
단말기별로 유효한 카메라의 수가 다를 수 있지만 최소한 Main Camera는 제공해야 한다.
Web Context에서 사진 또는 동영상을 촬영할 때는 결과물의 이름과 위치를 알려야 한다.
1.1 Features
– http://wac.org/api/camera
Recording과 Capturing을 가능하게 하는 Feature로써 정상적으로 요청이 이루어지면 
deviceapis.cameras가 Global Object로 생성된다.
– http://wac.org/api/camera.show
viewFinder를 통해 화면을 보는 것을 포함하여 모듈의 전체 기능을 요청하는 Feature.
2. Interfaces
 2.1. CameraCaptureSuccessCallback 

Media(Image/Video) Capture를 성공적으로 완료했을 때 호출되는 Callback으로써 Media File의
경로를 인자로 전달받는다.
void onSuccess(DOMString filename);
– filename : virtual path of the saved media file.
 2.2. CameraError
UNKNOWN_ERROR = 0;                           일반적인 Error
PERMISSION_DENIED_ERROR = 1;           권한을 얻지 못하였을 때 발생하는 Error
TIMEOUT_ERROR = 2;                             정해진 시간내에 작업을 완료하지 못하여 발생하는 Error
NOT_SUPPORTED_ERROR = 3;                해당 기능을 지원하지 않아 발생하는 Error
 2.3. Camera
1) DOMString identifier;
Camera를 구분하는 Identifier로써 Human Readable String을 권장한다.
2) PendingOperation captureImage(DOMString fileName, boolean lowRes,
CameraCaptureSuccessCallback successCallback, ErrorCallback errorCallback);
Image를 촬영한 뒤 이를 file로써 저장하는 함수.
Picture가 성공적으로 촬영된 뒤 저장이 되었다면 successCallback의 인자로 file의 virtual path를 전달받아
호출될 것이다.
만약 정상적으로 촬영이 되지 않았거나 저장하는이 되지 않았다면 errorCallback이 호출될 것이다.
fileName : 사진이 저장되기 원하는 경로로써 이 경로는 Filesystem 모듈의 resolve 함수의 인자로 사용될 수
                있어야 한다. 만약 이 값이 null이거나 invalid하거나 OS 제한때문에 저장이 불가능한 위치일 경우
                무시되어야 한다.
lowRes : 이 값이 True일 경우 최대 해상도로 촬영되어야 하고, false일 경우 최대일 필요는 없다.
successCallback : 사진 촬영을 성공적으로 완료했을 때 사진의 경로와 함께 호출 될 함수.
errorCallback : 사진을 촬영하는 중 문제가 발생하였을 때 호출 될 함수.
    code ex) function successCallback(fileName) {
                    alert(“Captured Image path : ” + fileName);
                  }
                  function errorCallback(e) {
                    alert(e.message);
                  }
                  mainCamera = deviceapis.cameras[0];
                  mainCamera.captureImage(“images/a.jpg”, false, successCallback, errorCallback);
3) PendingOperation startVideoCapture(DOMString filename, boolean lowRes,
CameraCaptureSuccessCallback successCallback, ErrorCallback errorCallback);
Video 촬영을 시작하는 함수, stopVideoCapture함수가 호출되기 전이나 플랫폼에서 종료 신호를 보내기 
전까지 촬영을 계속한다. 촬영이 종료되고 Video 파일이 정상적으로 저장이 되면 successCallback이 호출된다.
filename : 동영상이 저장되기 원하는 경로로써 이 경로는 Filesystem 모듈의 resolve 함수의 인자로 사용될 수
있어야 한다. 만약 이 값이 null이거나 invalid하거나 OS의 제한때문에 저장이 불가능한 위치일 경우 무시되어야
한다.
lowRes : 이 값이 true일 경우 최대 해상도로 촬영되어야 하고, false일 경우에는 반드시 최대일 필요는 없다.
successCallback : 비디오 촬영이 성공적으로 종료되었을 때 경로와 함께 호출될 함수.
errorCallback : 비디오 촬영중 문제가 발생하였을 때 호출 될 함수.
 
4) void stopVideoCapture();
Video 촬영을 종료시키는 함수, 만약 촬영중인 Video가 없는 상태에서 호출되면 이 함수는 무시된다.
5) PendingOperation setWindow(Object domObj, SuccessCallback successCallback, 
ErrorCallback errorCallback);
사진 또는 동영상을 촬영하기전에 DOM Object에 Camera Preview 기능을 넣는 함수. 만약 서로 다른 DOM Object
를 인자로 여러번 호출될 경우 이전에 사용하던 DOM Object에서 새롭게 호출된 DOM Object로 변경해야 한다.
null 값을 인자로 전달함으로써 preview 동작을 멈출 수 있다. 
domObj : Camera의 preview 영상을 보여줄 HTML Element, 오직 Container Element만 전달 가능하다.