Record, save and play a video in Android

android, android-camera

Solution

Well it's very simple to record videos in android by using this simple code

First on a button click simple start an Intent

Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
    startActivityForResult(takeVideoIntent, CAMERA_REQUEST_CODE_VEDIO);
}

then in `onActivityResult` method

Uri videoUri = data.getData();
path = Utils.getRealPathFromURI(videoUri, this);
manageVideo(path); //Do whatever you want with your video

and finally add permissions to the manifest

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

Hope it help others who are looking for help :)

Thanks

Problem

I am trying to make an app that records a video using the camera app, and then saves that video on SD card so I can play it. I have some code but I'm lost on how to continue as I'm a beginner in Android. My Activity: ``` public class Camcorder extends Activity { private CamcorderView camcorderView; private boolean recording = false; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //irrelevant code camcorderView = (CamcorderView) findViewById(R.id.camcorder_preview); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { if (recording) { camcorderView.stopRecording(); finish(); } else { recording = true; camcorderView.startRecording(); } return true; } return super.onKeyDown(keyCode, event); } } ``` CamcorderView class: ``` public class CamcorderView extends SurfaceView implements SurfaceHolder.Callback { MediaRecorder recorder; SurfaceHolder holder; String outputFile = "/sdcard/default.mp4"; public CamcorderView(Context context, AttributeSet attrs) { super(context, attrs); holder = getHolder(); holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); // recorder.setVideoSize(480, 320); // recorder.setVideoFrameRate(15); // recorder.setMaxDuration(10000); } public void surfaceCreated(SurfaceHolder holder) { recorder.setOutputFile(outputFile); recorder.setPreviewDisplay(holder.getSurface()); if (recorder != null) { try { recorder.prepare(); } catch (IllegalStateException e) { Log.e("IllegalStateException", e.toString()); } catch (IOException e) { Log.e("IOException", e.toString()); } } } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } public void surfaceDestroyed(SurfaceHolder holder) { } public void setOutputFile(String filename) { outputFile = filename; recorder.setOutputFile(filename); } public void startRecording() { recorder.start(); } public void stopRecording() { recorder.stop(); recorder.release(); } } ```

Original source

Related problems