I am working on ExoPlayer, I want to customize the ExoPlayer and listen for the Event next, previous, rewind, forward so that when the user clicks the next button next video
I use this link to customize the ExoPlayer for previous, next etc. You can implement your own logic to track all of these Events. It works for me.
if you have not customized exoplayer
if (currentPlayingVodPosition-1 == player.currentWindowIndex){
Toast.makeText(this,"prev clicked",Toast.LENGTH_SHORT).show()
}
if (currentPlayingVodPosition+1 == player.currentWindowIndex){
Toast.makeText(this,"next clicked",Toast.LENGTH_SHORT).show()
}
My approach
Assumed, we are already create collection of media source, DASH or HLS.
And using player view with SimpleExoPlayerView
component. It will automatically have default control, prev, next, for example.
I handle collection of media source with current window index with this exoPlayer.getCurrentWindowIndex()
to back and forth media source.
And you can check current index via this onTracksChanged
method
@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
currentIndex = exoPlayer.getCurrentWindowIndex();
}
You can look this file for implementation these control.
Hope this help.
You might be able to add a ExoPlayer.Listener()
and use constants from the PlaybackstateCompat class.
Override the onPlayerStateChanged
listener and check the playbackState
with rewind/fastforward/etc
player.addListener(new ExoPlayer.Listener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == PlaybackStateCompat.STATE_FAST_FORWARDING) {
//do something
}
if (playbackState == PlaybackStateCompat.STATE_REWINDING) {
//do something else
}
}
@Override
public void onPlayWhenReadyCommitted() {
}
@Override
public void onPlayerError(ExoPlaybackException error) {
mExoPlayer.stop();
}
});
Also:
STATE_SKIPPING_TO_NEXT
STATE_SKIPPING_TO_PREVIOUS