Skip to content

Commit 65b17b6

Browse files
committed
Added Player.EventsListener#onPlaybackEnded (#297)
1 parent dce2676 commit 65b17b6

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

api/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ You can subscribe for players events by creating a WebSocket connection to `/eve
4444
The currently available events are:
4545
- `contextChanged` The Spotify context URI changed
4646
- `trackChanged` The Spotify track URI changed
47+
- `playbackEnded` Playback has ended
4748
- `playbackPaused` Playback has been paused
4849
- `playbackResumed` Playback has been resumed
4950
- `volumeChanged` Playback volume changed

api/src/main/java/xyz/gianlu/librespot/api/handlers/EventsHandler.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ public void onTrackChanged(@NotNull PlayableId id, @Nullable TrackOrEpisode meta
5050
dispatch(obj);
5151
}
5252

53+
@Override
54+
public void onPlaybackEnded() {
55+
JsonObject obj = new JsonObject();
56+
obj.addProperty("event", "playbackEnded");
57+
dispatch(obj);
58+
}
59+
5360
@Override
5461
public void onPlaybackPaused(long trackTime) {
5562
JsonObject obj = new JsonObject();

player/src/main/java/xyz/gianlu/librespot/player/Player.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,7 @@ public void trackChanged(@NotNull String playbackId, @Nullable TrackOrEpisode me
654654
@Override
655655
public void trackPlayed(@NotNull String playbackId, @NotNull PlaybackMetrics.Reason endReason, @NotNull PlayerMetrics playerMetrics, int when) {
656656
endMetrics(playbackId, endReason, playerMetrics, when);
657+
events.playbackEnded();
657658
}
658659

659660
@Override
@@ -833,6 +834,8 @@ public interface EventsListener {
833834

834835
void onTrackChanged(@NotNull PlayableId id, @Nullable TrackOrEpisode metadata);
835836

837+
void onPlaybackEnded();
838+
836839
void onPlaybackPaused(long trackTime);
837840

838841
void onPlaybackResumed(long trackTime);
@@ -1031,6 +1034,11 @@ private void sendVolume(int value) {
10311034
metadataPipe.safeSend(MetadataPipe.TYPE_SSNC, MetadataPipe.CODE_PVOL, volData);
10321035
}
10331036

1037+
void playbackEnded() {
1038+
for (EventsListener l : new ArrayList<>(listeners))
1039+
executorService.execute(l::onPlaybackEnded);
1040+
}
1041+
10341042
void playbackPaused() {
10351043
long trackTime = state.getPosition();
10361044
for (EventsListener l : new ArrayList<>(listeners))

0 commit comments

Comments
 (0)