마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 동영상 녹화도중 90도꺾이는걸 막지못했습니다... 도와주실 수 있으신가요?

0 추천
안녕하세요 안드로이드 스튜디오로 개발공부를 하고있는 학생입니다
제가 카메라로 녹화기능을 구현하는도중에 녹화버튼만누르면 화면이 90도 꺾인채로 보여지고 저장은 정방향으로 잘 됩니다 간단하게 간추려보았습니다 도움을주시면 감사하겠습니다
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_camera);
//Create a surface view, assign it to the holder, and add it to the frame.
surface = new SurfaceView(this);
init();
frame.addView(surface);

btnRecord.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
try {
if (recorder == null) {
recorder = new MediaRecorder();
}
//In the recorder, put in the items that I need to put
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
filename = createFilename();
Log.d(TAG, "current filename : " + filename);
recorder.setOutputFile(filename);
recorder.setPreviewDisplay(holder.getSurface());
recorder.setOrientationHint(90);//서페이스뷰랑 녹화랑 동일한화면으로 저장됨 0일경우 기본이 90도꺾이기때문 90으로놓으면 저장만잘됨

recorder.prepare();
recorder.start();

} catch (Exception ex) {
Log.e(TAG, "Exception : ", ex);

recorder.release();
recorder = null;
}

}
});

//카메라를 켜주고 홀더랑 연결을 해줌
private void init() {
//Default status camera

mCamera = Camera.open();
mCamera.setDisplayOrientation(90);

// surfaceview setting
holder = surface.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

// 서페이스뷰 오버라이드
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {

mCamera = Camera.open(); //객체생성
Camera.Parameters parameters = mCamera.getParameters(); //객체 파라미터 얻음

}

// Called when the size of the SurfaceView changes
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int w, int h) {

if (mCamera != null) {
try {
mCamera.setDisplayOrientation(90);
mCamera.setPreviewDisplay(holder); //프리뷰 디스플레이 담당한 서피스 홀더 설정
} catch (IOException e) {
e.printStackTrace();
}
Camera.Parameters parameters = mCamera.getParameters();
//프리뷰 사이즈 값 재조정
parameters.setPreviewSize(1280, 720);
mCamera.setParameters(parameters);
//프리뷰 재시작
mCamera.startPreview();
}

}

//SurfaceView is called on exit
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
if (mCamera != null) {
// Exit Camera preview
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
허니에스타 (140 포인트) 님이 2018년 1월 17일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...