많이 늦었지만 전방/후방 카메라 switch 구현하는 분들께 도움드리고자 댓글 달아봅니다.
제가 구현한 코드는 아래와 같고, Galaxy S3에서 잘 동작함을 확인했습니다.
Activity에서 [Switch] 버튼이 눌렸을 때, custom camera surfaceview 클래스에서 아래 함수를 호출해주면 됩니다.
public void swtichCamera() {
if(mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
mCameraFacing = (mCameraFacing == Camera.CameraInfo.CAMERA_FACING_BACK) ?
Camera.CameraInfo.CAMERA_FACING_FRONT : Camera.CameraInfo.CAMERA_FACING_BACK;
Log.i(TAG, "surfaceCreated, mCameraFacing : " + mCameraFacing);
mCamera = Camera.open(mCameraFacing);
try {
mCamera.setPreviewDisplay(mHolder);
} catch (IOException e) {
mCamera.release();
mCamera = null;
}
mCamera.startPreview();
}
구글 검색해보면 전방/후방 카메라 switch 관련한 설명이나 코드 글들이 여러개 있긴 한데,
뭔가 하나씩 부족해서 실행하면 제대로 동작하지는 않더라구요.
풀 소스가 올라오지 않아서 코드 한두줄씩 살짝살짝 부족했기 때문에 그랬던 것 같습니다.
저는 다른 분들의 소스를 따라서 했는데, 마지막에 mCamera.startPreview(); 호출해야 하는걸 몰라서 이틀동안 헤맸네요.
이후 작업하시는 분들께서는 쉽게 문제를 해결하시면 좋겠습니다.




해줘야할께 한두가지가 아닌데요... 그부분에대해 많이 저도 고민하고 겨우겨우 구현했긴합니다만..
제가 만든코드가 정확하다고는 못하겠네요..
우선 전방으로 넘어올때 후방에 대한 것들을 막아야하고요...
int width = camera.getParameters().getPictureSize().width;
int height = camera.getParameters().getPictureSize().height;
parameters.setPictureSize(width, height);
전방으로 올때 이런식으로 카메라 사이즈도 새로 잡아줘야하구요.. 이걸 간과하는 경우가 많아
사이즈가 이상해지는 경우가 많습니다.
그리고 카메라 같은경우는 버전마다 많이 틀려서
Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO
이런식으로 버전도 체크해서 따로 처리해줘야 하구요..
Camera.CameraInfo.CAMERA_FACING_BACK 빽과 front 를 잘 이용해서
포커스 모드도 오토로 해줘야할겁니다..
풀소스를 드리면 간단히 해결되겠지만...제가 적어드린건 어떻게 보면 사이트 검색해서 나올 수도 있습니다.
하지만 참고하셔서 훈내남님만의 멋진 카메라 어플 잘 만드시길 바랄께요..