Complete guide on How to build a Video Player in Android

This article explains the stepwise process as to how to build a Video Player using Android Studio.

For viewing videos in android, there is a special class called “MediaPlayer“. In this article, we will be having 2 videos which are connected by the “Dialog box“, i.e a dialogue box will come after completion of the first video which will ask the user whether he wants to replay or play next video.

To insert videos in Android, we put in raw folder. “raw” folder is present in



"app"--> "res" --> "raw"

In this folder, you just need to paste the videos whichever you want to play.

Steps to build a Video Player:

  1. In creating Frontend we just need one component, i.e VideoView.
  2. The icons like play, rewind, forward will only come when we touch on VideoView and they will only come for just 3 seconds and then they will disappear. It is provided by Google and it is its default behaviour.
  3. Coming to back-end part i.e Java coding, we are getting media controls by:

    vw.setMediaController(new MediaController(this));

  4. Then, adding the videos of the raw folder in ArrayList and making a call to a method called setVideo() by giving an argument to it of the first video.

    // big video songs are not running
    videolist.add(R.raw.faded);
    videolist.add(R.raw.aeroplane);
    setVideo(videolist.get(0));

  5. Now in setVideo() defining, we need an Uri object so as to pass to a method called as setVideoURI(). Therefore,

    String uriPath = “android.resource://” + getPackageName() +”/” + id ;
    Uri uri = Uri.parse(uriPath);
    vw.setVideoURI(uri);
    vw.start();

    Note: First video will start playing as soon as application gets launch. This is because we are giving call to setVideo() from inside onCreate() and then inside setVideo(), it is calling vw.start(), where vw is VideoView.

  6. Now, code of generating a dialog box is done inside the method called onCompletion(). Please refer to this article for how to generate Dialog Box

    // It is creating object of AlertDialog
    AlertDialog.Builder obj = new AlertDialog.Builder(this);

  7. At last, we have handled the coding of user’s action, i.e what the user has click (Replay or next). The simple logic is used such as increment and decrement.
    public void onClick(DialogInterface dialog, int which) {
      if (which == -1) {
        vw.seekTo(0);
        vw.start();
      }
      else {
        ++currvideo;
        if (currvideo == videolist.size())
          currvideo = 0;
        setVideo(videolist.get(currvideo));
      }
    }
    

The complete code (activity_main and MainActivity) for the above discussed program is given below:

activity_main.xml

filter_none

edit
close

play_arrow

link
brightness_4
code

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
   <VideoView
       android:id="@+id/vidvw"
       android:layout_marginTop="10dp"
      android:layout_width="match_parent"
       android:layout_height="match_parent"
       />
</RelativeLayout>

chevron_right


MainActivity.java

filter_none

edit
close

play_arrow

link
brightness_4
code

package com.example.videoapp_demo;
  
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
  
import java.util.ArrayList;
  
public class MainActivity
    extends AppCompatActivity
    implements MediaPlayer.OnCompletionListener {
  
    VideoView vw;
    ArrayList<Integer> videolist = new ArrayList<>();
    int currvideo = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vw = (VideoView)findViewById(R.id.vidvw);
        vw.setMediaController(new MediaController(this));
        vw.setOnCompletionListener(this);
  
        // video name should be in lower case alphabet.
        videolist.add(R.raw.middle);
        videolist.add(R.raw.faded);
        videolist.add(R.raw.aeroplane);
        setVideo(videolist.get(0));
    }
  
    public void setVideo(int id)
    {
        String uriPath
            = "android.resource://"
              + getPackageName() + "/" + id;
        Uri uri = Uri.parse(uriPath);
        vw.setVideoURI(uri);
        vw.start();
    }
  
    public void onCompletion(MediaPlayer mediapalyer)
    {
        AlertDialog.Builder obj = new AlertDialog.Builder(this);
        obj.setTitle("Playback Finished!");
        obj.setIcon(R.mipmap.ic_launcher);
        MyListener m = new MyListener();
        obj.setPositiveButton("Replay", m);
        obj.setNegativeButton("Next", m);
        obj.setMessage("Want to replay or play next video?");
        obj.show();
    }
  
    class MyListener implements DialogInterface.OnClickListener {
        public void onClick(DialogInterface dialog, int which)
        {
            if (which == -1) {
                vw.seekTo(0);
                vw.start();
            }
            else {
                ++currvideo;
                if (currvideo == videolist.size())
                    currvideo = 0;
                setVideo(videolist.get(currvideo));
            }
        }
    }
}

chevron_right


Output:

  • Playing the first video:
    first song "faded"

    first song “faded”

  • Dialogue box after the first video:
    After completion of first song,dialog box is getting generated

    After completion of first song,dialog box is getting generated

  • Playing the second video:
    When we click on "NEXT",then the second video starts running

    When we click on “NEXT”,then the second video starts running

java-img




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.