remove some global variables from exoplayer
This commit is contained in:
parent
3cb2f78206
commit
93066be3f2
1 changed files with 3 additions and 45 deletions
|
|
@ -52,12 +52,6 @@ public class MultiPlayer implements Playback {
|
||||||
|
|
||||||
private PlaybackCallbacks callbacks;
|
private PlaybackCallbacks callbacks;
|
||||||
|
|
||||||
private boolean isReady = false;
|
|
||||||
private boolean isPlaying = false;
|
|
||||||
|
|
||||||
private boolean requestPlay = false;
|
|
||||||
private int requestProgress = 0;
|
|
||||||
|
|
||||||
private final ExoPlayer.EventListener eventListener = new ExoPlayer.EventListener() {
|
private final ExoPlayer.EventListener eventListener = new ExoPlayer.EventListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onIsLoadingChanged(boolean isLoading) {
|
public void onIsLoadingChanged(boolean isLoading) {
|
||||||
|
|
@ -72,19 +66,7 @@ public class MultiPlayer implements Playback {
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackStateChanged(int playbackState) {
|
public void onPlaybackStateChanged(int playbackState) {
|
||||||
Log.i(TAG, String.format("onPlaybackStateChanged: %d", playbackState));
|
Log.i(TAG, String.format("onPlaybackStateChanged: %d", playbackState));
|
||||||
|
if (callbacks != null && exoPlayer.isPlaying()) {
|
||||||
if (callbacks == null) return;
|
|
||||||
if (requestProgress != 0 && playbackState == Player.STATE_READY) {
|
|
||||||
exoPlayer.seekTo(requestProgress);
|
|
||||||
|
|
||||||
requestProgress = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exoPlayer.isPlaying() || requestPlay && playbackState == ExoPlayer.STATE_READY) {
|
|
||||||
requestPlay = false;
|
|
||||||
isPlaying = true;
|
|
||||||
|
|
||||||
exoPlayer.setPlayWhenReady(true);
|
|
||||||
callbacks.onTrackStarted();
|
callbacks.onTrackStarted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -108,15 +90,7 @@ public class MultiPlayer implements Playback {
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerError(ExoPlaybackException error) {
|
public void onPlayerError(ExoPlaybackException error) {
|
||||||
Log.i(TAG, String.format("onPlayerError: %s", error.getMessage()));
|
Log.i(TAG, String.format("onPlayerError: %s", error.getMessage()));
|
||||||
if (context == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Toast.makeText(context, context.getResources().getString(R.string.unplayable_file), Toast.LENGTH_SHORT).show();
|
Toast.makeText(context, context.getResources().getString(R.string.unplayable_file), Toast.LENGTH_SHORT).show();
|
||||||
exoPlayer.release();
|
|
||||||
|
|
||||||
exoPlayer = new SimpleExoPlayer.Builder(context).build();
|
|
||||||
isReady = false;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -146,7 +120,6 @@ public class MultiPlayer implements Playback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDataSource(Song song) {
|
public void setDataSource(Song song) {
|
||||||
isReady = false;
|
|
||||||
mediaSource = new ConcatenatingMediaSource();
|
mediaSource = new ConcatenatingMediaSource();
|
||||||
|
|
||||||
exoPlayer.addListener(eventListener);
|
exoPlayer.addListener(eventListener);
|
||||||
|
|
@ -197,7 +170,6 @@ public class MultiPlayer implements Playback {
|
||||||
}
|
}
|
||||||
|
|
||||||
mediaSource.addMediaSource(source);
|
mediaSource.addMediaSource(source);
|
||||||
isReady = true;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -220,28 +192,21 @@ public class MultiPlayer implements Playback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isReady() {
|
public boolean isReady() {
|
||||||
return isReady;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isPlaying() {
|
public boolean isPlaying() {
|
||||||
return isReady && isPlaying;
|
return exoPlayer.isPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start() {
|
public void start() {
|
||||||
if (!isReady) {
|
|
||||||
requestPlay = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
isPlaying = true;
|
|
||||||
exoPlayer.setPlayWhenReady(true);
|
exoPlayer.setPlayWhenReady(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pause() {
|
public void pause() {
|
||||||
isPlaying = false;
|
|
||||||
exoPlayer.setPlayWhenReady(false);
|
exoPlayer.setPlayWhenReady(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -253,23 +218,16 @@ public class MultiPlayer implements Playback {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getProgress() {
|
public int getProgress() {
|
||||||
if (!isReady) return -1;
|
|
||||||
return (int) exoPlayer.getCurrentPosition();
|
return (int) exoPlayer.getCurrentPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getDuration() {
|
public int getDuration() {
|
||||||
if (!isReady) return -1;
|
|
||||||
return (int) exoPlayer.getDuration();
|
return (int) exoPlayer.getDuration();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setProgress(int progress) {
|
public void setProgress(int progress) {
|
||||||
if (!isReady) {
|
|
||||||
requestProgress = progress;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
exoPlayer.seekTo(progress);
|
exoPlayer.seekTo(progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue