Add buffering indicator

This commit is contained in:
Maxr1998 2020-12-21 20:36:34 +01:00
commit f668e51ba3
No known key found for this signature in database
GPG key ID: 3BA0CD3A11CDF7B8
7 changed files with 43 additions and 30 deletions

View file

@ -12,7 +12,6 @@ import com.dkanada.gramophone.util.MusicUtil;
import com.dkanada.gramophone.util.PreferenceUtil;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.database.ExoDatabaseProvider;
@ -54,29 +53,15 @@ public class MultiPlayer implements Playback {
private PlaybackCallbacks callbacks;
private final ExoPlayer.EventListener eventListener = new ExoPlayer.EventListener() {
@Override
public void onIsLoadingChanged(boolean isLoading) {
Log.i(TAG, String.format("onIsLoadingChanged: %b", isLoading));
}
@Override
public void onPlayWhenReadyChanged(boolean playWhenReady, int reason) {
Log.i(TAG, String.format("onPlayWhenReadyChanged: %b %d", playWhenReady, reason));
}
@Override
public void onPlaybackStateChanged(int playbackState) {
Log.i(TAG, String.format("onPlaybackStateChanged: %d", playbackState));
if (callbacks != null && exoPlayer.isPlaying()) {
callbacks.onTrackStarted();
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
Log.i(TAG, String.format("onPlayerStateChanged: %b %d", playWhenReady, playbackState));
if (callbacks != null) {
callbacks.onPlayerStateChanged(playWhenReady, playbackState);
}
}
@Override
public void onMediaItemTransition(MediaItem mediaItem, int reason) {
Log.i(TAG, String.format("onMediaItemTransition: %s %d", mediaItem, reason));
}
@Override
public void onPositionDiscontinuity(int reason) {
Log.i(TAG, String.format("onPositionDiscontinuity: %d", reason));
@ -203,6 +188,11 @@ public class MultiPlayer implements Playback {
return exoPlayer.isPlaying() || exoPlayer.getPlayWhenReady();
}
@Override
public boolean isBuffering() {
return exoPlayer.getPlaybackState() == Player.STATE_BUFFERING;
}
@Override
public void start() {
exoPlayer.setPlayWhenReady(true);

View file

@ -51,6 +51,7 @@ import com.dkanada.gramophone.util.Util;
import com.dkanada.gramophone.widgets.AppWidgetAlbum;
import com.dkanada.gramophone.widgets.AppWidgetCard;
import com.dkanada.gramophone.widgets.AppWidgetClassic;
import com.google.android.exoplayer2.Player;
import org.jellyfin.apiclient.interaction.EmptyResponse;
import org.jellyfin.apiclient.interaction.Response;
@ -60,7 +61,6 @@ import org.jellyfin.apiclient.model.session.PlaybackStopInfo;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Random;
@ -483,6 +483,10 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
return playback != null && playback.isPlaying();
}
public boolean isBuffering() {
return playback != null && playback.isBuffering();
}
public int getPosition() {
return position;
}
@ -1032,11 +1036,12 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
}
@Override
public void onTrackStarted() {
progressHandler.sendEmptyMessage(TRACK_STARTED);
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
notifyChange(STATE_CHANGED);
prepareNext();
if (playWhenReady && playbackState == Player.STATE_READY) {
progressHandler.sendEmptyMessage(TRACK_STARTED);
prepareNext();
}
}
@Override

View file

@ -13,6 +13,8 @@ public interface Playback {
boolean isPlaying();
boolean isBuffering();
void start();
void pause();
@ -30,7 +32,7 @@ public interface Playback {
int getVolume();
interface PlaybackCallbacks {
void onTrackStarted();
void onPlayerStateChanged(boolean playWhenReady, int playbackState);
void onTrackWentToNext();