surfaceChanged에서 onPreviewFrame()를 이용하여 현재 카메라 데이터를 가지고 옵니다.(여기서 서버에게 계속해서 카메라 데이터를 줍니다.)사실 녹화와 실시간 카메라 데이터를 동시에 보내는 기능을 할라고하는데요.
그래서 녹화를 하기위해서 안드로이드 제공하는 MediaRecorder()를 사용하여 녹화 기능이 하였습니다. 하지만 녹화는 되지만 surfaceChanged가 실행이 되지 않아서 녹화는 되는 순간(surfaceChanged가 호출을 안합니다.)서버와 소켓이 끊어집니다.
녹화를 다른 방향으로 할까요? 제가 설정을 잘못했나요?
-소스
private boolean prepareVideoRecorder() { //녹화 기능
//CameraManager.releaseCamera(mCamera);
//mCamera = CameraManager.getCameraInstance(mCamera);
//mMediaRecorder.reset();
mMediaRecorder = new MediaRecorder();
//mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setProfile(CamcorderProfile
.get(CamcorderProfile.QUALITY_720P));
mMediaRecorder.setOutputFile(FileManager.getOutputMediaFile()
.toString());
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
try {
mMediaRecorder.prepare();
mMediaRecorder.start();
} catch (IllegalStateException e) {
MediaManager.releaseMediaRecorder(mMediaRecorder, mCamera);
return false;
} catch (IOException e) {
MediaManager.releaseMediaRecorder(mMediaRecorder, mCamera);
return false;
}
return true;
}