android camara
카메라 기능을 사용하려면 매니페스트에 다음 선언문을 작성 해야 된다.
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
물리적인 하드웨어를 사용하는 것이다. 그러므로 허가(permission)가 필요하다. 또 사용자에게 허가를 받아야 한다. permission 외에도 uses-feature element로 camera hardware와 auto focus기능을 사용한다는 것을 알려 해당 기능이 없는 장비에 앱이 설치되는 것을 방지할 필요가 있다. 카메라 기능은 운영체제의 서비스 형태로 제공되며 서비스와 앱 사이를 연결하는 것이 바로 Camera Class 이다. 별도의 생성자는 없고, 다음 메서드로 생성 및 파괴
static Camera open()
void release()
//static method로 카메라 객체를 생성->사용 후 release method로 해제
카메라는 입수된 영상의 미리보기를 표시하기 위해 표면객체를 요구한다. 그러므로 객체 생성 후 미리보기 표면을 제공해야한다.(말이 드럽게 어려운데 표면은 그냥 화면인가 같다)
미리보기 표면은 렌즈로부터 영상을 공급받으므로 별도의 버퍼를 가질 필요는 없다. 그래서 타입을 SURFACE_TYPE_PUSH_BUFFERS로 설정한다. 다음 메서드로 미리보기 표면과 방향을 지정한다.
void setPreviewDisplay(SurfaceHolder holder)
void setDisplayOrientation(int degrees)
//미리보기는 기본적으로 가로 방향으로 표시.
표면(화면)을 지정한 후 카메라의 동작 방식이나 여러 가지 옵션을 지정하는 parameter를 전달한다. parameter는 Camera의 내부 클래스인 Parameters Class로 표현 된다. 다음 메서드로 조사 및 변경한다. get method로 현재 parameter를 얻고 원하는 값을 수정한 후 set method로 편집한 parameter를 다시 전달하면 이후부터 카메라는 수정된 parameter대로 동작한다. 실행 중에도 parameter는 언제든지 수정할 수 있다.
Camera.Parameters getParameters()
void setParameters(Camera.Parameters params)
//parameter로 조정할 수 있는 값은 해상도, 이미지 품질, 미리보기의 크기, 장면, 효과, 줌, 포커스, 플래시, 화이트 밸런스, 회전 모드 등등 다양
//그러나 모든 옵션이 항상 다 지원되는 것은 아님. 카메라의 물리적인 능력치를 초과할수는 없음ㅋ
//따라서 사용할 카메라 능력을 잘 알아야함
Parameters Class는 능력치를 조사하는 메서드와 옵션을 변경하는 method가 같이 제공 된다. 다음은 미리보기 영역의 크기 목록을 조사하고 설정하는 메서드이다.
List<Camera.Size> Camera.Parameters.getSupportedPreviewSizes()
void Camera.Parameters.setPreviewSize(int width, int height)
//카메라가 지원하는 미리보기 크기의 목록을 먼저 구하고 표현하고자 하는 미리보기와 비교하여 종횡비가 가장 근접하고 가급적이면 비슷한 크기로 미리보기를 표시해야한다.
다음은 사진의 해상도를 조사 및 지정하는데 방식은 동일
List<Camera.Size>getSupportedPictureSizes()
void setPictureSize(int width, int height)
//해상도 목록으로 1600x1200, 2560x1920등의 사용 가능한 크기가 조사됨
//이 목록을 사용자에게 보여주고 사용자가 선택한 해상도를 지정하면 이후 사진이 이 크기대로 촬영됨.
parameter로 옵션을 설정했으면 다음 메서드로 미리보기를 표시
void startPreview()
void stopPreview()
//startPreview를 호출하면 지정한 표면에 카메라 렌즈로부터 입수된 영상이 반복적으로 출력 됨
//미리보기의 프레임 비율이나 포맷도 parameter로 지정할 수 있다.
'Dev Platfrom > 01. Android' 카테고리의 다른 글
Android Support Library (0) | 2014.04.21 |
---|---|
Android clean build 시 apk 삭제 되는 문제 (0) | 2014.04.21 |
Android ListView (0) | 2013.05.21 |
Android Fragment (0) | 2013.02.28 |
TextView or EditView 에 숫자 콤마 (가격 숫자) (1) | 2013.02.21 |