2013. 5. 3. 23:47

안드로이드 SurfaceView를 이용하는 Camera 기능 구현

안드로이드 스마트폰에서 카메라 기능을 구현하기 위해 먼저 xml에서 디자인을 다음과 같이 해보죠. 상단 SurfaceView는 사진 찍기 전 미리보기 화면이고, 버튼을 누르면 찍힌 사진이 아래 표시된 ImageView에 나타나게 됩니다.

프로젝트를 만들고, SurfaceView와 Camera, ImageView 등에 대한 선언을 해 줍니다.

임포트는 소프트웨어적인 그래픽 카메라가 아니라

스마트폰에 달려 있는 하드웨어 카메라입니다.

그리고, 메니페스트 파일에서 다음과 같이 카메라 퍼미션을 반드시 주어야 합니다.

onCreate()에서는 이미지 뷰와 SurfaceView를 사용하기 위한 처리를 합니다.

사진을 찍기 위해 버튼을 누르면 카메라의 onPictureTaken() 메써드에서 비트맵으로 이미지를 처리합니다.

 

SurfaceView에 대한 처리로 여기서는 리스너 형태로 코딩되어 있습니다. 카메라 기능의 시작과 해제는 Camera.open()과 camera.release()로 처리하고, 여러가지 파라미터를 얻어서 미리보기 기능을 구현하게 됩니다.

이제 실행을 해보면 미리보기 화면이 나타나고, 아직은 찍은 사진이 없으니까 하단은 비어 있습니다.

여기서 버튼을 누르면 찍힌 사진이 아랫부분에 나타나는데, 현재는 저장기능이 없습니다.  ㅡ.ㅡ;;

카메라 기능의 동작과 앱의 흐름을 보기 위해 사용한 로그들의 정보는 로그캣을 보면 다음처럼 출력되어 있는 걸 볼 수 있습니다.