//카메라의 제어
public class CameraView extends SurfaceView
implements SurfaceHolder.Callback {
private SurfaceHolder holder;//홀더
private Camera camera;//카메라
//생성자
public CameraView(Context context) {
super(context);
// SurfaceHolder 생성
holder=getHolder();
holder.addCallback(this);
// Push Buffer 지정
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
//Surface 변경 이벤트 처리
public void surfaceChanged(SurfaceHolder holder,int format,int w,int h) {
// 카메라의 리뷰 개시
Camera.Parameters parameters=camera.getParameters();
parameters.setPreviewSize(w,h);
camera.setParameters(parameters);
camera.startPreview();
}
//Surface 해제 이벤트 처리
public void surfaceDestroyed(SurfaceHolder holder) {
//카메라 프리뷰의 개시
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera=null;
}
//터치 이벤트 처
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
takePicture();
camera.startPreview();
}
return true;
}