Skip to main content

How to record and save a video in Android

Let's record a video :). Check the code snippet.

First need to give necessary permissions. So add these permissions to AndroidManifest.xml
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
MainActivity.java

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
 Button btn_record;
 public static final int MEDIA_TYPE_IMAGE = 1;
 public static final int MEDIA_TYPE_VIDEO = 2;
 private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
 private static final int CAMERA_CAPTURE_VIDEO_REQUEST_CODE = 200;
 private Uri fileUri;
 private static final String TAG = MainActivity.class.getSimpleName();

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn_record = (Button) findViewById(R.id.buttonrecc);
  btn_record.setOnClickListener(this);
 }
 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  switch (v.getId()) {
  case R.id.buttonrecc:
   reccordVideo();
   break;
  }
 }

 private void reccordVideo() {
  // TODO Auto-generated method stub
  Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

  fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
  intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
  // start the video capture Intent
  startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
 }

 @Override
 protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  // save file url in bundle as it will be null as screen orientation
  // changes
  outState.putParcelable("file_uri", fileUri);
 }
 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  fileUri = savedInstanceState.getParcelable("file_uri");
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // if the result is capturing Image
  if (requestCode == CAMERA_CAPTURE_VIDEO_REQUEST_CODE) {
   if (resultCode == RESULT_OK) {

    // path of the video can be saved to sdcard,we can get its path
    // on the string pathofvideo
    String pathofvideo = fileUri.getPath();
    System.out.println("filepath...." + pathofvideo);
    System.out.println("hsdgshdg");
   } else if (resultCode == RESULT_CANCELED) {

   // if user cancel recording
   Toast.makeText(getApplicationContext(),"User cancelled video recording", Toast.LENGTH_SHORT).show();

   } else {
   // if any error occurs while recording
   Toast.makeText(getApplicationContext(), "Sorry! Failed to record video", Toast.LENGTH_SHORT).show();
   }
  }
 }

 /**
  * Creating file uri to store image/video
  */
 public Uri getOutputMediaFileUri(int type) {
  return Uri.fromFile(getOutputMediaFile(type));
 }

 private static File getOutputMediaFile(int type) {
  File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"Android File Upload");
  // Create the storage directory if it does not exist
  if (!mediaStorageDir.exists()) {
   if (!mediaStorageDir.mkdirs()) {Log.d(TAG, "Oops! Failed create " + "Android File Upload"+ " directory");
    return null;
   }
  }
  // Create a file name
  String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",Locale.getDefault()).format(new Date());
  File mediaFile;
  if (type == MEDIA_TYPE_VIDEO) {
   mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_" + timeStamp + ".mp4");
  } else {
   return null;
  }

  return mediaFile;
 }
}
activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <Button
        android:id="@+id/buttonrecc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="166dp"
        android:text="RECCORD" />
</RelativeLayout>

Comments

Popular posts from this blog

How to use Preference Activity in Android

Preference Activity is a base class mainly used for setting order of preferences of an user.It is mainly used for creating setting page of an user.In this example I am just showing how to set Preferences. First create an Activity MainActivity.java Here on clicking preference example button a page will be opened to set the preferences. On clicking the show values we can see the see the values that we have set. MainActivity.java import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.btn_pref); Button btn1 = (Button) findViewById(R.id.btn_values); btn.setOnCli...

Get List of All Installed Apps

For getting the list of all apps installed in the device and to show it on a listview we can use the following code: MainActivity.java import java.util.ArrayList; import java.util.List; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends ActionBarActivity { ArrayList results_sys_app = new ArrayList(); ArrayAdapter<applicationinfo>adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List<applicationinfo> pkgAppsList = this.getPackageManager().getInstalledApplications( PackageManager.GET_UNINSTALLED_PAC...

How to save contacts to the phone contacts in android

We can easily save the contacts to the phone contacts without having any database of own . The code is very simple. import android.app.Activity; import android.app.AlertDialog; import android.content.ComponentName; import android.content.ContentValues; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.provider.Contacts.People; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { protected static final int PICK_CONTACT = 0; EditText edt1,edt2; Button btn; String s1,s2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activ...