안드로이드 개발 질문/답변
(글 수 45,052)
mCamera.takePicture(null, null, null);
카메라 API로 사진을 찍을때 위의 함수를 사용하는게 보통인데요.
함수를 실행하면 첨부한 사진처럼 화면이 깨집니다.
물론 잠깐 그러다 프리뷰 화면은 다시 제대로 동작합니다.
저장된 사진은 이상이 없습니다.
소스는 ApiDemos에 있는 그리고 인터넷에서 흔히 구할수 있는 코드로 구성했습니다.
Camera.Parameters 에는 setPreviewSize(int,int) 만 지정했습니다.
YUV 4.2.0 로그가 보이길래 Picture 타입도 맞춰보고 했는데 안되네요.
아시는 분은 도움을 좀 부탁드립니다.
2010.06.16 00:22:28
http://developer.android.com/reference/android/hardware/Camera.html#takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback)
mCamera.takePicture(null, null, null); <-- null 값주시면 안됩니다.
위 사이트에 가셔서 확인 하신다음에 인자값에 맞는 callback interface를 구성하셔야 되요..
2010.06.16 10:41:23
개발중인 시료군요.
밑쪽 구현이 제대로 안되지 않았나 예상합니다.
사진 찍을 때 화면이 바뀌었다는 야그는 preview data가 올라왔다는 이야기인데, 사진 찍는 동안에는 안 올라오면 해결될 것 같습니다.
(요거는 하드웨어에 따라 다를 수 있습니디만, MSM700x에서는 takepicture시에 preview를 멈춰야 되더군요. 그리고 takepicture 후에 바로 제대로된 preview가 안 올라와서 delay를 줘야 하는 경우도 있는 것 같습니다.)
제가 본 소스가 도넛뿐이라서 도넛 기준으로 Preview가 이뤄지는 과정을 참고삼아 설명드리면.
CameraService에서 Preview Callback을 밑쪽 Camera HAL(?)에 넘겨 줍니다.
카메말 할단에서는 Preview Frame이 올라올때마다 Preview Callback에다 Frame data를 넘겨줍니다.
그리고 이 callback에서 preview 화면을 그립니다.
할단에서 preview calllback을 호출하지 않도록 막으면 preview가 안 바뀌게 되겠죠.