2013. 5. 4. 22:28

안드로이드 Camera로 찍은 사진 저장하기

카메라 앱을 아무리 잘 만들어도 찍은 사진을 저장할 수 없다면 앙꼬없는 찐빵이므로 이전 포스트에 나온 코드에 저장하는 기능을 추가해 줍시다. 그런데, 이번엔 SurfaceView 부분을 분리해서 별도의 클래스로 만들었는데 아무래도 이게 보다 나은 방법으로 생각됩니다. 이렇게 하면 SurfaceView 클래스에서 Holder나 생성자를 지정하면 되고 다른 메써드들의 내용은 변화없이 동일합니다.

그러면 메인 액티비티 클래스도 달라지죠. 이전 xml의 SurfaceView가 없어지고, 대신 FrameLayout에 새로 만든 CameraSurfaceView를 addView()로 붙여주게 됩니다. 그리고, 스토리지에 저장을 하므로 찍은 사진을 굳이 화면에 안 보여줘도 되니 ImageView도 없앴습니다.

화면에 미리보기로 나온 영역을 찍어서 저장을 하는 부분입니다. 저장은 기본적으로 카메라가 찍은 사진을 저장하는 디렉토리에 파일이 생성되는데 파일명은 자동으로 부여됩니다.

아래 메써드 하나만 CameraSurfaceView 클래스에 추가해주면 됩니다.

이제 작동이 원활하게 되는지 확인을 해 봅니다. 미리보기 화면은 잘 나왔습니다. 고구마가...

 

버튼을 눌러 사진을 찍으니까 저장했다는 토스트 메시지가 나왔습니다.

실제로 저장이 되었는지 살펴보니까 파일이 생성되어 있습니다.

파일을 보면 미리 보였던 고구마 화면이 잘 저장되어 있습니다.