exoplayer android example

ExoPlayer Android Example- Best Alternative of Android VideoView

Today I am going to show you complete details about ExoPlayer Android Example. Earlier, I was using VideoView and MediaPlayer to play video and audio in android app. But the Android Videoview always create problems on some device like – white/black screen, audio is playing without video, buffering problem etc.

I was searching for an alternative to Android VideoView, then I found Android Exoplayer.

It is an open source project. Even Google also mention about Android Exoplayer in Android Documentation. I found it really gives feel like YouTube Player. So here I am giving step by step process, how to use Exoplayer in Android app.

Android Exoplayer

ExoPlayer is built on top of Android’s low-level media API’s. You can play both the Audio and Video file from android phone or from URL on Exoplayer.  Here are some pointers to know before start coding on ExoPlayer Android Example.

1) ExoPlayer has support for DASH(Dynamic Adaptive Streaming over HTTP), SmoothStreaming and for HTTP Live Streaming (HLS) which is unavailable on the traditional media player.
2) ExoPlayer has the ability to customize and extend the player as per the requirement allowing many components to be replaced with custom implementations.
3) ExoPlayer supports a variety of media formats which are MP4, MP3, WebM, M4A, MPEG-TS, and AAC.
4) You can update your ExoPlayer with the latest version to get more support. Latest Version

Video- ExoPlayer Android Example

Login & Download source code


50 days android course


Step By Step Guide –

1) Add ExoPlayer Gradle Dependency
2) Add SimpleExoPlayerView in Layout
3) Initialize ExoPlayerView and ExoPlayer
4) Add Internet Permission in AndroidManifest
5) Run the Code in Real Device

Add ExoPlayer Gradle Dependency

Create a new project on AndroidStudio, My project name is Exoplayer_video. You have to Add ExoPlayer dependency on android project gradle file. You can change ExoPlayerversion code. I included all the exoplayer library file explicitly because some time it failed to get some library.

// exo player
    compile 'com.google.android.exoplayer:exoplayer:r2.4.0'
    compile 'com.google.android.exoplayer:exoplayer-core:r2.4.0'
    compile 'com.google.android.exoplayer:exoplayer-dash:r2.4.0'
    compile 'com.google.android.exoplayer:exoplayer-hls:r2.4.0'
    compile 'com.google.android.exoplayer:exoplayer-smoothstreaming:r2.4.0'
    compile 'com.google.android.exoplayer:exoplayer-ui:r2.4.0'

Add SimpleExoPlayerView in Layout

Now open activity-main.xml file and type SimpleExo, so you will see the suggested SimpleExoPlayerView in Topup window. Just select it and set width and height as per your need. Also, give is ID like @+id/exoplayerview.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"




Initialize ExoPlayerView and ExoPlayer

First, understand how ExoPlayer does work. The first step is to initialize ExoPlayerView and configure it. Configuration parameters  are BandwidthMeter, TrackSelector, HttpDataSourceFactory and MediaSource.

BandwidthMeter – for monitoring bandwidth of internet connection.

TrackSelector – to buffer and keep player current status.

HttpDataSourceFactory – media file URL path.

MediaSource – to bind all these things with ExoPlayer.

Once you set all these parameters, You can set ExoPlayer with ExoPlayerView. Then call prepare() method.

One Important point about ExoPlayer is “There is no start and stop”. So you have to call when player ready like-  exoPlayer.setPlayWhenReady(true); If you pass false play will stop playing.

package blueappsoftware.exoplayer_video;

import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import com.google.android.exoplayer2.extractor.ExtractorsFactory;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.ui.SimpleExoPlayerView;
import com.google.android.exoplayer2.upstream.BandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;

public class MainActivity extends AppCompatActivity {

    SimpleExoPlayerView exoPlayerView;
    SimpleExoPlayer exoPlayer;
    String videoURL = "http://blueappsoftware.in/layout_design_android_blog.mp4";
    protected void onCreate(Bundle savedInstanceState) {

        exoPlayerView = (SimpleExoPlayerView) findViewById(R.id.exo_player_view);
     try {

         BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
         TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
         exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector);

         Uri videoURI = Uri.parse(videoURL);

         DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
         ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
         MediaSource mediaSource = new ExtractorMediaSource(videoURI, dataSourceFactory, extractorsFactory, null, null);

     }catch (Exception e){
         Log.e("MainAcvtivity"," exoplayer error "+ e.toString());



Add Internet Permission in AndroidManifest

In this ExoPlayer Android Example, I am trying to play video from URL. So we need to add internet permission on AndroidManifest file. If you are using a local file from the android device then you don’t need to do this task.

Run the Code in Real Device

Now Run this code in the Real device. you will see the video getting started.

Please leave your comment about video lesson and what more you want to learn from me.

Read MoreCreate Facebook Messenger type Floating Icon and Send FCM Notification to Device

50 days android course

Posted in andorid and tagged , , , .

I Am Post Graduation (M.Tech. C.S.E) from VNIT, Nagpur. I Have Published Two Research Paper On International Journal. My Apps on Google Play Store- Sanyukt Parivar(Mp Police ), NOTOtag- Digital Chhindwara, The Tubby-VoiceRecognizer & More.
Contact me at kamal.bunkar@blueappsoftware.in


  1. I love your blog.. very nice colors & theme. Did you create this
    website yourself or did you hire someone to do it for you?
    Plz respond as I’m looking to create my own blog and would like to find
    out where u got this from. appreciate it

  2. Pretty great post. I just stumbled upon your weblog and wanted to say
    that I’ve truly loved browsing your blog posts.
    In any case I’ll be subscribing for your feed and I hope you write once more very soon!

  3. Hi there! This post could not be written any better!
    Reading through this post reminds me of my good old room mate!
    He always kept talking about this. I will forward this article to him.
    Fairly certain he will have a good read. Thank you for sharing!

  4. Hi there! Quick question that’s totally off topic.
    Do you know how to make your site mobile friendly?
    My weblog looks weird when browsing from my iphone4.
    I’m trying to find a template or plugin that might
    be able to fix this issue. If you have any recommendations, please share.
    Thank you!

  5. This is really attention-grabbing, You are an overly skilled blogger.
    I have joined your feed and look forward to in the hunt
    for extra of your great post. Also, I have shared your site in my social networks

  6. I’m really enjoying the theme/design of your blog.

    Do you ever run into any browser compatibility issues?

    A few of my blog audience have complained about my site not
    working correctly in Explorer but looks great in Chrome.
    Do you have any solutions to help fix this issue?

  7. I was recommended this web site by my cousin. I’m
    not sure whether this post is written by him as no one else
    know such detailed about my problem. You are wonderful!


  8. Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically tweet my newest twitter updates.
    I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would have some experience with something like this.
    Please let me know if you run into anything. I truly enjoy reading your
    blog and I look forward to your new updates.

  9. Having read this I thought it was very informative. I appreciate you finding the time and
    energy to put this short article together. I once again find myself personally spending a lot of time both reading and posting comments.
    But so what, it was still worthwhile!

  10. hi! may i know is your code complete? because i run the program and does nothing, i have download the given source code.

    • Yes this code is working…You have to create file on php server to store FCM key into your database for future use. First check on your android studio log whether FCM token is printing OR not. If it is printing in log than send token to your web server.

  11. Good day! I could have sworn I’ve been to
    this website before but after going through
    a few of the articles I realized it’s new to me.

    Nonetheless, I’m certainly delighted I found it and I’ll be book-marking it and checking back regularly!

  12. Spot on with this write-up, I absolutely feel this website needs much more attention. I’ll probably be returning to read
    through more, thanks for the info!

  13. Hey very cool website!! Man .. Excellent ..
    Amazing .. I will bookmark your site and take the feeds additionally?
    I am glad to search out numerous useful info here
    in the submit, we need work out more strategies
    on this regard, thanks for sharing. . . . . .

  14. Pingback: ExoPlayer Android Example- Best Alternative of VideoView By Kamal

  15. Pingback: Simplest way to get WordPress Post in Android App- REST API

  16. I just like the helpful information you supply to your articles.

    I’ll bookmark your blog and test once more here frequently.
    I’m fairly sure I will learn many new stuff proper here!
    Good luck for the following!

Comments are closed.