diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2020-05-16 23:26:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-16 23:26:22 +0200 |
commit | 20678a94cd7595aa8faa6116af7b2e2103c8f45a (patch) | |
tree | 6610673d3ba5bb68ea28e612fa2993fe9f75e77f /core/src/main/java/de | |
parent | 42badd5f2f4ad41b3d4e96892256fc1c3525bfd6 (diff) | |
parent | e270b13f8d4713f85383e604bbd71a637ce51b36 (diff) | |
download | AntennaPod-20678a94cd7595aa8faa6116af7b2e2103c8f45a.zip |
Merge pull request #4162 from ByteHamster/fixes-without-duration
Various fixes for feeds that do not specify duration
Diffstat (limited to 'core/src/main/java/de')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java | 2 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java | 16 |
2 files changed, 15 insertions, 3 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java index a41b04b53..7e1a5fd9b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java @@ -224,7 +224,7 @@ public class FeedMedia extends FeedFile implements Playable { public boolean hasAlmostEnded() { int smartMarkAsPlayedSecs = UserPreferences.getSmartMarkAsPlayedSecs(); - return this.position >= this.duration - smartMarkAsPlayedSecs * 1000; + return this.duration > 0 && this.position >= this.duration - smartMarkAsPlayedSecs * 1000; } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index a83e50506..69253bc13 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -48,6 +48,7 @@ import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.core.event.FeedItemEvent; import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.event.PlaybackPositionEvent; import de.danoeh.antennapod.core.event.ServiceEvent; @@ -523,7 +524,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { Context context = getApplicationContext(); if (skipIntro > 0 && playable.getPosition() < skipIntro * 1000) { int duration = getDuration(); - if (skipIntro * 1000 < duration) { + if (skipIntro * 1000 < duration || duration <= 0) { Log.d(TAG, "skipIntro " + playable.getEpisodeTitle()); mediaPlayer.seekTo(skipIntro * 1000); String skipIntroMesg = context.getString(R.string.pref_feed_skip_intro_toast, @@ -847,6 +848,17 @@ public class PlaybackService extends MediaBrowserServiceCompat { return true; case MediaPlayer.MEDIA_INFO_BUFFERING_END: sendNotificationBroadcast(NOTIFICATION_TYPE_BUFFER_END, 0); + + Playable playable = getPlayable(); + if (getPlayable() instanceof FeedMedia + && playable.getDuration() <= 0 && mediaPlayer.getDuration() > 0) { + // Playable is being streamed and does not have a duration specified in the feed + playable.setDuration(mediaPlayer.getDuration()); + DBWriter.setFeedMedia((FeedMedia) playable); + updateMediaSessionMetadata(playable); + setupNotification(playable); + } + return true; default: return flavorHelper.onMediaPlayerInfo(PlaybackService.this, code, resourceId); @@ -1087,7 +1099,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { FeedPreferences preferences = feedMedia.getItem().getFeed().getPreferences(); int skipEnd = preferences.getFeedSkipEnding(); if (skipEnd > 0 - && skipEnd < playable.getDuration() + && skipEnd < getDuration() && (remainingTime - (skipEnd * 1000) > 0) && ((remainingTime - skipEnd * 1000) < (getCurrentPlaybackSpeed() * 1000))) { Log.d(TAG, "skipEndingIfNecessary: Skipping the remaining " + remainingTime + " " + skipEnd * 1000 + " speed " + getCurrentPlaybackSpeed()); |