전면카메라를 사용하는 어플을 만들었는데 사용중 홈키를 누르거나 취소키로 어플을 종료하고 기본카메라어플을 실행시키면 오류가 뜨면서 강제종료됩니다. 어떤문제인가요?
class Preview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera camera;
Preview(Context context) {
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public Camera getCamera() {
return camera;
}
public void surfaceCreated(SurfaceHolder holder) {
// 카메라 초기화
try {
// 전면카메라 사용
int cameraId = findFrontSideCamera();
camera = Camera.open(cameraId);
// 카메라 회전
// Camera.Parameters parameters = camera.getParameters();
// if (this.getResources().getConfiguration().orientation !=
// Configuration.ORIENTATION_LANDSCAPE) {
camera.setDisplayOrientation(90);
// }
// parameters.setRotation(90);
// parameters.setPreviewSize(640, 480);
// parameters.setPictureSize(640, 480);
// camera.setDisplayOrientation(90);
// camera.setParameters(parameters);
camera.setPreviewDisplay(holder);
// camera.startPreview();
// 미리보기의 프레임을 .setPreviewCallback()으로 새로 정의
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
// TODO Do something with the preview image.
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera = null;
}
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();
}
}