안드로이드에서 surfaceview로 카메라를 띄울때 아래처럼 surfaceview class를 만들어 띄우게 되는데
가장 기본적인 surfaceview로 띄운 카메라 소스이다 아래 소스를 보면 빨간색으로 표시해 놓은 곳이
카메라의 해상도를 변경하는 부분이다.
class MyCameraSurface extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder mHolder;
Camera mCamera;
@SuppressWarnings("deprecation")
public MyCameraSurface(Context context, AttributeSet attrs) {
super(context, attrs);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
// 표면 생성시 카메라 오픈하고 미리보기 설정
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
//mCamera = Camera.CameraInfo.CAMERA_FACING_FRONT;
mCamera.setDisplayOrientation(0);
try {
mCamera.setPreviewDisplay(mHolder);
int m_resWidth;
int m_resHeight;
m_resWidth = mCamera.getParameters().getPictureSize().width;
m_resHeight = mCamera.getParameters().getPictureSize().height;
Camera.Parameters parameters = mCamera.getParameters();
//아래 숫자를 변경하여 자신이 원하는 해상도로 변경한다
m_resWidth = 1280;
m_resHeight = 720;
parameters.setPictureSize(m_resWidth, m_resHeight);
mCamera.setParameters(parameters);
} catch (IOException e) {
mCamera.release();
mCamera = null;
}
}
// 표면 파괴시 카메라도 파괴한다.
public void surfaceDestroyed(SurfaceHolder holder) {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
// 표면의 크기가 결정될 때 최적의 미리보기 크기를 구해 설정한다.
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters params = mCamera.getParameters();
List<Size> arSize = params.getSupportedPreviewSizes();
if (arSize == null) {
params.setPreviewSize(width, height);
} else {
int diff = 10000;
Size opti = null;
for (Size s : arSize) {
if (Math.abs(s.height - height) < diff) {
diff = Math.abs(s.height - height);
opti = s;
}
}
params.setPreviewSize(opti.width, opti.height);
}
params.setRotation(0);
mCamera.setParameters(params);
mCamera.startPreview();
}
}
'안드로이드' 카테고리의 다른 글
[android] 프로젝트 전체 전역변수 만들어 사용하는 방법 (0) | 2013.01.23 |
---|---|
[android] 단말기 화면 크기 받아오기 (0) | 2013.01.23 |
[android] imageView에 Bitmap 넣는 방법 (0) | 2013.01.22 |
[android] 스테이터스바 사이즈 구하는 방법 (0) | 2013.01.19 |
[android] 이미지 사진첩에 저장하기 (0) | 2013.01.19 |