0

I am currently attempting to create a video recorder using media recorder. The orientation of the video comes up rotated 90 degrees counter clockwise (basically landscape mode). I want it to be able to take a video whilst in portrait view.

You can see from my code, that I am not directly calling the Camera variable to set in the media recorder, because it indicates the code is deprecated. Can anyone please help me.

My code is as follows:

public void recordVideo() {
    isRecording = false;
    mediaRecorder = new MediaRecorder();
    initMediaRecorder();

    //recorderView is my surfaceView//
    surfaceHolder = recorderView.getHolder();
    surfaceHolder.addCallback(surfaceCallback);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    toggleRecordButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isRecording) {
                mediaRecorder.stop();
                timer.cancel();
                mediaRecorder.release();
                toggleRecordButton.setText("START");

                mediaRecorderLayout.setVisibility(View.GONE);
                mPictureHelper.fetchCompressedUri(Environment.getExternalStorageDirectory().getPath() + "/myVideo.mp4");
            } else {
                seconds = 0;
                mediaRecorder.start();
                timer = new Timer();
                timer.scheduleAtFixedRate(new TimerTask() {
                    @Override
                    public void run() {
                        getActivity().runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (seconds < 10) {
                                    tvTimer.setText("00:0" + seconds);
                                } else {
                                    tvTimer.setText("00:" + seconds);
                                }
                                seconds++;
                            }
                        });
                    }
                }, 0, 1000);
                isRecording = true;
                toggleRecordButton.setText("STOP");
            }
        }
    });
}
private void initMediaRecorder() {
    String path = Environment.getExternalStorageDirectory().getPath() + "/myVideo.mp4";

    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
    mediaRecorder.setProfile(camcorderProfile_HQ);
    mediaRecorder.setOutputFile(path);

    mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
    mediaRecorder.setMaxFileSize(10000000);
}
SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        prepareMediaRecorder();
    }
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    }
};
private void prepareMediaRecorder() {
    mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
    try {
        mediaRecorder.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

I have checked out other posts regarding this, but they all seem outdated due to the fact that alot of the code that used to be used is now deprecated. I hope someone can help.

Janwilx72
  • 502
  • 4
  • 18

1 Answers1

0

Add this in manifest.xml

<activity
        android:name=".activity_class_name"
        android:screenOrientation="portrait" />
Lcukerd
  • 438
  • 6
  • 21
  • it makes the surface view portrait, but the video taken still remains rotated – Janwilx72 Apr 20 '17 at 15:50
  • Look here. Might Help: http://stackoverflow.com/questions/30349897/android-video-orientation-changes-on-mediarecorder-start – Lcukerd Apr 20 '17 at 15:55