반응형
출처 : 안드로이드 개발자 사이트
camera APIs
manifest.xml 설정하기
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
카메라 사용하기
- 함수들은 Camera class 의 함수들..
1. open(int) 로 Camera instance 얻기
1. open(int) 로 Camera instance 얻기
2. getParameters() 로 기본 setting 을 얻는다.
3. 필요하다면 Parameters 를 수정한 후 setParameter 를 통해 수정된 parameter 전달.
4. 필요하다면, setDisplayOrientation( int ) 를 호출한다.
5. setPreviewDisplay( SurfaceHolder ) 를 호출하는데, 이 때 SurfaceHolder 는 initialize 가 끝난 상태여야 한다.
6. startPreview() 를 호출한다.
7. takePicture( Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback, Camera.PictureCallback ) 을 통해 사진을 찍고, 실제 이미지들이 callback 을 통해 불린다.
8. 사진을 더 찍고 싶다면 startPreview() 를 다시 호출해준다.
9. preview 를 멈추고 싶다면 stopPreview() 를 호출한다.
10. release() 를 불러줘야 다른 camera 앱에서 camera hardware 를 사용할 수 있다. onPause() 에서 보통 release 해주고, onResume 에서 open() 해준다.
비디오 레코딩 모드로 사용하기.
- 3번부터는 MediaRecorder class 의 함수들이다.
1. Camera 초기화 과정 & startPreview() 까지 호출해준다.
1. Camera 초기화 과정 & startPreview() 까지 호출해준다.
2. unlock() 을 호출한다.
3. setCamera( Camera ) 를 통해 카메라를 전달한다.
4. 레코딩이 끝나면 reconnect() 를 호출한다. 이것을 통해 camera 를 relock 할 수 있다.
5. 필요하다면 startPreview() 를 다시 호출해준다.
6. stopPreview(), release() 콤보를 날린다.
기타 카메라에 대한 정보들.
- Camera 클래스는 thread-safe 하지 않다. 기본적으로 open(int) 를 호출한 thread 에서 callback 을 받게 되고, preview, focus, photo capture 등의 작업들은 async 로 작동한다.
- 카메라 앱은 카메라 스펙에 많은 영향을 받기 때문에 여러 단말 지원을 위해서는 함부로 하드웨어를 가정해서는 안된다.
takePicture 함수
- shuttercallback 에서는 보통 셔터음을 재생.
- raw image 가 나왔을 때 첫번째 PictureCallback 불림. 이 때 raw buffer 가 없거나, 메모리 여유가 없다면 image 는 null 이 된다.
- scale 되고 한 번 처리된 이미지가 나오면 postview callback 이 불린다. 이것은 모든 하드웨어가 지원하는것은 아니다.
- jpeg callback 은 jpeg 으로 압축이 되어 준비되었을 때 불린다. 지원하고 싶지 않은 callback 은 null 을 전달함으로서 해결한다. 이 함수는 startPreview() 상태에서만 call 할 수 있고, 이 함수가 불린 후에는 preview 가 멈추기 때문에 다시 startPreview() 를 실행시켜줘야 한다. takePicture 함수는 start(), stop() 사이에서는 불리면 안된다. 이 함수를 실행시킨 후 JPEG 이 리턴될 때까지 stratPreview 를 다시 불러서는 안된다.
도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x )
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] layout percentage 적용하기 (2) | 2012.11.26 |
---|---|
[android] listview select(click) highlight 제거 방법. (0) | 2012.11.23 |
[android] 안드로이드 4.2 공개. 특징은? (0) | 2012.11.16 |
[android] nine patch 를 background 로 사용했을 때 문제점 (0) | 2012.11.15 |
Activity 최초 생성은 portrait 로 진입하고, Sensor 값에 따라 rotate 를 지워하는 방법. (0) | 2012.11.14 |
댓글