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 dialog 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:
- In creating Frontend we just need one component, i.e VideoView.
- 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.
- Coming to back-end part i.e Java coding, we are getting media controls by:
vw.setMediaController(new MediaController(this));
- 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)); - 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.
- 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); - 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
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout 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 > |
MainActivity.java
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 + 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)); } } } } |
Output:
- Playing the first video:
- Dialogue box after the first video:
- Playing the second video: