Load and Play Video in android using video url.

Load & Play Videos in Android 

"video_viewer.xml" file:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center" >

    <VideoView
        android:id="@+id/video_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center"/>

</FrameLayout>

"MyPlaylistVideoActivity.java" file:

package com.digipicsworks.friendlien.activity;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import com.digipicsworks.friendlien.FriendliensApp;
import com.digipicsworks.friendlien.SqliteDatabase.DatabaseHandler;
import com.digipicsworks.friendlien.SqliteDatabase.VideoInfo;
import com.digipicsworks.friendlien.fragment.MyPlaylistFragment;
import com.digipicsworks.friendlien.fragment.VideoVimeoFragment;

import java.util.ArrayList;
import java.util.List;

import static com.semwal.activity.MainActivity.ACTIVITY_ID;
import static com.semwal.activity.MainActivity.EXTRA_VIDEO;


public class MyPlaylistVideoActivity extends Activity {
    private VideoView myVideoView;
    private int position = 0;
    private ProgressDialog progressDialog;
    private MediaController mediaControls;

   
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // set the main layout of the activity
        setContentView(R.layout.video_viewer);

        //set the media controller buttons
        if (mediaControls == null) {
            mediaControls = new MediaController(MyPlaylistVideoActivity.this);
            //Play Previous and Next Video

            mediaControls.setPrevNextListeners(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //next button clicked
                }
            }, new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //previous button clicked                    
                }
            });
        }

        //initialize the VideoView
        myVideoView = (VideoView) findViewById(R.id.video_view);

        // create a progress bar while the video_viewer file is loading
        progressDialog = new ProgressDialog(MyPlaylistVideoActivity.this);
        // set a title for the progress bar
        progressDialog.setTitle("Loading video_viewer...");
        // set a message for the progress bar
        progressDialog.setMessage("Loading...");
        //set the progress bar not cancelable on users' touch
        progressDialog.setCancelable(false);
        // show the progress bar
        progressDialog.show();

        try {
            //set the media controller in the VideoView
            myVideoView.setMediaController(mediaControls);

            Intent intent = getIntent();
            Bundle bundle= intent.getExtras();
            Log.d("VideoURl",bundle.getString(EXTRA_VIDEO));
            
           //set the uri of the video_viewer to be played
            myVideoView.setVideoURI(Uri.parse(bundle.getString("VideoUrl")));

        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        myVideoView.requestFocus();
        
        //we also set an setOnPreparedListener in order to know when the video_viewer file is ready for playback
        myVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            public void onPrepared(MediaPlayer mediaPlayer) {
                // close the progress bar and play the video_viewer

                progressDialog.dismiss();
                //if we have a position on savedInstanceState, the video_viewer playback should start from here
                myVideoView.seekTo(position);
                if (position == 0) {
                    myVideoView.start();
                } else {
                    //if we come from a resumed activity, video_viewer playback will be paused
                    myVideoView.pause();
                }
            }
        });
        
        //This is called when video is complete you can do what ever you want to do after video completion 
        myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                Toast.makeText(MyPlaylistVideoActivity.this"Video Complete", Toast.LENGTH_SHORT).show();              
            }
        });

    }
   
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        //we use onSaveInstanceState in order to store the video_viewer playback position for orientation change
        savedInstanceState.putInt("Position", myVideoView.getCurrentPosition());
        myVideoView.pause();
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        //we use onRestoreInstanceState in order to play the video_viewer playback from the stored position
        position = savedInstanceState.getInt("Position");
        myVideoView.seekTo(position);
    }



}              

"MainActivity.java" file:

From MainActivity.java simply pass url in bundle
Intent intent = new Intent(getContext(),MyPlaylistVideoActivity.class);
        intent.putExtra(EXTRA_VIDEO, videoUrl);
        startActivity(intent);
Enjoy!

Comments

Popular posts from this blog

Android SQLite Example

Android Retrofit Tutorial