package com.devbrackets.android.exomediademo.playlist;
import com.devbrackets.android.exomedia.listener.OnBufferUpdateListener;
import com.devbrackets.android.exomedia.listener.OnCompletionListener;
import com.devbrackets.android.exomedia.listener.OnErrorListener;
import com.devbrackets.android.exomedia.listener.OnPreparedListener;
import com.devbrackets.android.exomedia.listener.OnSeekCompletionListener;
import com.devbrackets.android.playlistcore.api.MediaPlayerApi;
import com.devbrackets.android.playlistcore.listener.OnMediaBufferUpdateListener;
import com.devbrackets.android.playlistcore.listener.OnMediaCompletionListener;
import com.devbrackets.android.playlistcore.listener.OnMediaErrorListener;
import com.devbrackets.android.playlistcore.listener.OnMediaPreparedListener;
import com.devbrackets.android.playlistcore.listener.OnMediaSeekCompletionListener;
public abstract class BaseMediaApi implements MediaPlayerApi, OnPreparedListener, OnCompletionListener, OnErrorListener,
OnSeekCompletionListener, OnBufferUpdateListener {
//The listeners that can be registered
protected OnMediaPreparedListener preparedListener;
protected OnMediaCompletionListener completionListener;
protected OnMediaSeekCompletionListener seekCompletionListener;
protected OnMediaErrorListener errorListener;
protected OnMediaBufferUpdateListener bufferUpdateListener;
protected boolean prepared;
protected int bufferPercent;
//The listener registrations
@Override
public void setOnMediaPreparedListener(OnMediaPreparedListener listener) {
preparedListener = listener;
}
@Override
public void setOnMediaBufferUpdateListener(OnMediaBufferUpdateListener listener) {
bufferUpdateListener = listener;
}
@Override
public void setOnMediaSeekCompletionListener(OnMediaSeekCompletionListener listener) {
seekCompletionListener = listener;
}
@Override
public void setOnMediaCompletionListener(OnMediaCompletionListener listener) {
completionListener = listener;
}
@Override
public void setOnMediaErrorListener(OnMediaErrorListener listener) {
errorListener = listener;
}
//The listeners from the MediaPlayer (and VideoView)
@Override
public void onCompletion() {
if (completionListener != null) {
completionListener.onCompletion(this);
}
}
@Override
public void onPrepared() {
prepared = true;
if (preparedListener != null) {
preparedListener.onPrepared(this);
}
}
@Override
public boolean onError(Exception e) {
return errorListener != null && errorListener.onError(this);
}
@Override
public void onSeekComplete() {
if (seekCompletionListener != null) {
seekCompletionListener.onSeekComplete(this);
}
}
@Override
public void onBufferingUpdate(int percent) {
bufferPercent = percent;
if (bufferUpdateListener != null) {
bufferUpdateListener.onBufferingUpdate(this, percent);
}
}
}