Transcript ch09-3

멀티미디어
- 카메라로 사진 찍어 저장하기
- 바코드 리더 만들기
2009011006 김민욱
카메라로 사진 찍어 저장하기
카메라 미리보기를 위한 서피스뷰의 사용
TYPE
startPreview
setPreviewDisplay()
SURFACE_TYPE…
카메라 화면
디스플레이
PUSH_BUFFERS
서피스홀더
(SurfaceHolder)
카메라 화면
디스플레이
카메라
서피스뷰
(SurfaceView)
카메라 미리보기를 위해서는 서피스뷰를 생성하고 이를
제어하는 서피스홀더 객체를 참조
서피스홀더 객체는 카메라 객체를 만든 후 setPreviewDisplay()
메소드를 이용하여 설정
CameraSurfaceView 클래스 정의
①
① SurfaceView 클래스를 상속하고
Callback 인터페이스를 구현하는
새로운 클래스를 정의
②
② 생성자에서 서피스홀더
객체참조 후 설정
③
④
⑤
⑥
③ 서피스뷰가 만들어질 때 카메라
객체를 참조한 후 미리보기 화면
으로 홀더객체 설정
④ 서피스뷰의 화면크기가 바뀌는
등의 변경 시점에 미리보기 시작
⑤ 서피스뷰가 없어질때 미리보기중지
⑥ 카메라 객체의 takePicutre()
메서드를 호출하여 사진 촬영
사진을 찍어 미디어 앨범에 저장하기
① 앞에 정의한
CameraSurfaceView 객체 생성
② 사진찍기 버튼을 클릭 했을 때
capture()메소드를 호출하면서
콜백 메소드 정의
③ 찍은 사진 데이터를 받을
onPictureTaken() 메소드 정의
①
④ data 변수에 들어있는 JPEG를
Bitmap객체로 디코딩
②
⑤ 사진 목록에 추가
③
⑥ 카메라 미리보기 다시 시작
④
⑤
⑥
바코드 리더 만들기
바코드 만들기
안드로이드에서 사용 가능한 바코드 라이브러리인 zxing 사용
(http://zxing.appspot.com/generator/)
바코드 리더 구성 방법
startActivityForResult
Zxing 스캔 화면
onActivityResult
카메라
Zxing 어플리케이션
애플리케이션
(SampleBarcodeScanner)
애플리캐이션은 액티비티간의 이동방법을 사용하여
Zxing 어플리캐이션의 바코드 스캔 화면을 띄우게 됩니다.
startActivityForResult() 메소드를 이용하여 화면에 띄울 때
사용되는 인텐트에는 액션정보와 읽어 들일 바코드의 포맷을
지정하는 부가 정보를 설정 할 수 있습니다.
바코드 스케너 화면 띄우기
①
① 읽기를 지원하는 바코드 포맷 정의
②
③
② 버튼을 클릭 했을 때
정의한 scan() 메소드 호출
③ 바코드 스캐너 화면을 보여주기
위한 인텐트 객체 생성
④
④ 인텐트의 부가 정보로
바코드 포맷 정보 설정
⑤
⑤ 바코드 스캐너 화면 뛰우기
스켄 결과 처리
① 바코드 스캐너 화면에서
스캔했을 때의 응답처리
①
② 스캔 결과가 정상일 경우 처리
②
③
③ 전달받은 인텐트 객체에서 스캔된
데이터와 포맷 정보 확인
④
④ Zxing 어프리케이션이 없을 경우
다운로드 대화상자 표시
실행 결과
바코드 스캔 버튼을 누르면 바코드 스캐너 화면을 보여줌
스캔 성공시 바코드 포멧과 스캔 결과를 보여줌
스캔 실패시 SCAN FAILD 메시지를 보여줌
웹으로 이동하기