import
android.net.Uri;
import
android.os.Bundle;
import
android.util.Log;
import
android.widget.Toast;
import
androidx.annotation.NonNull;
import
androidx.appcompat.app.AppCompatActivity;
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;
import
com.google.firebase.database.DataSnapshot;
import
com.google.firebase.database.DatabaseError;
import
com.google.firebase.database.DatabaseReference;
import
com.google.firebase.database.FirebaseDatabase;
import
com.google.firebase.database.ValueEventListener;
public
class
MainActivity
extends
AppCompatActivity {
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
SimpleExoPlayerView exoPlayerView;
SimpleExoPlayer exoPlayer;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
exoPlayerView = findViewById(R.id.idExoPlayerView);
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference(
"url"
);
getVideoUrl();
}
private
void
getVideoUrl() {
databaseReference.addValueEventListener(
new
ValueEventListener() {
@Override
public
void
onDataChange(
@NonNull
DataSnapshot snapshot) {
String videoUrl = snapshot.getValue(String.
class
);
initializeExoplayerView(videoUrl);
}
@Override
public
void
onCancelled(
@NonNull
DatabaseError error) {
Toast.makeText(MainActivity.
this
,
"Fail to get video url."
, Toast.LENGTH_SHORT).show();
}
});
}
private
void
initializeExoplayerView(String videoURL) {
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
);
exoPlayerView.setPlayer(exoPlayer);
exoPlayer.prepare(mediaSource);
exoPlayer.setPlayWhenReady(
true
);
}
catch
(Exception e) {
Log.e(
"TAG"
,
"Error : "
+ e.toString());
}
}
}