From c9382e27c4a8840040367eec7e715a8591c19db8 Mon Sep 17 00:00:00 2001 From: Domingos Lopes Date: Tue, 7 Jun 2016 22:54:46 -0400 Subject: [PATCH] fix issue with playback ended on skipping (for remote playback) --- .../core/service/playback/RemotePSMP.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java b/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java index e594f14ec..ea95ea894 100644 --- a/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java +++ b/core/src/play/java/de/danoeh/antennapod/core/service/playback/RemotePSMP.java @@ -634,11 +634,21 @@ public class RemotePSMP extends PlaybackServiceMediaPlayer { } } if (shouldContinue || toStoppedState) { - if (nextMedia != null) { - callback.onPlaybackEnded(null, true); - stop(); + boolean shouldPostProcess = true; + if (nextMedia == null) { + try { + castMgr.stop(); + shouldPostProcess = false; + } catch (CastException | TransientNetworkDisconnectionException | NoConnectionException e) { + Log.e(TAG, "Unable to stop playback", e); + callback.onPlaybackEnded(null, true); + stop(); + } + } + if (shouldPostProcess) { + // Otherwise we rely on the chromecast callback to tell us the playback has stopped. + callback.onPostPlayback(currentMedia, !wasSkipped, nextMedia != null); } - callback.onPostPlayback(currentMedia, !wasSkipped, nextMedia != null); } else if (isPlaying) { callback.onPlaybackPause(currentMedia, currentMedia != null ? currentMedia.getPosition() : INVALID_TIME);