summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-04-10 21:56:44 +0200
committerByteHamster <info@bytehamster.com>2020-04-10 21:56:44 +0200
commitc24761806e87a3c1a9fe6dc5b6342034d2678408 (patch)
tree6a849988fe231b9fe2194c3eb8814ac660c68dbf
parenta35ecaa74bd9392f9e7e513522aee8e1601e78cf (diff)
downloadAntennaPod-c24761806e87a3c1a9fe6dc5b6342034d2678408.zip
Allow to stop previewed episode
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java25
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java43
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java2
5 files changed, 49 insertions, 25 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
index 849bb3b64..9158d587b 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistDescriptionAdapter.java
@@ -8,6 +8,9 @@ import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.feed.MediaType;
+import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
+import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.NetworkUtils;
import de.danoeh.antennapod.core.util.playback.RemoteMedia;
import de.danoeh.antennapod.core.feed.FeedItem;
@@ -67,16 +70,28 @@ public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
return;
}
Playable playable = new RemoteMedia(item);
+ if (PlaybackPreferences.getCurrentlyPlayingMediaType() == RemoteMedia.PLAYABLE_TYPE_REMOTE_MEDIA) {
+ PlaybackPreferences.writeNoMediaPlaying();
+ IntentUtils.sendLocalBroadcast(getContext(), PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
+ holder.preview.setText(R.string.preview_episode);
+ return;
+ }
+
if (!NetworkUtils.isStreamingAllowed()) {
new StreamingConfirmationDialog(getContext(), playable).show();
return;
}
+
new PlaybackServiceStarter(getContext(), playable)
.shouldStream(true)
.startWhenPrepared(true)
.callEvenIfRunning(true)
.start();
- getContext().startActivity(PlaybackService.getPlayerActivityIntent(getContext(), playable));
+ holder.preview.setText(R.string.stop_playback);
+
+ if (playable.getMediaType() == MediaType.VIDEO) {
+ getContext().startActivity(PlaybackService.getPlayerActivityIntent(getContext(), playable));
+ }
});
convertView.setOnClickListener(v -> {
if (holder.description.getTag() == Boolean.TRUE) {
@@ -85,8 +100,14 @@ public class FeedItemlistDescriptionAdapter extends ArrayAdapter<FeedItem> {
holder.description.setTag(Boolean.FALSE);
} else {
holder.description.setMaxLines(2000);
- holder.preview.setVisibility(View.VISIBLE);
holder.description.setTag(Boolean.TRUE);
+
+ holder.preview.setVisibility(item.getMedia() != null ? View.VISIBLE : View.GONE);
+ if (PlaybackPreferences.getCurrentlyPlayingMediaType() == RemoteMedia.PLAYABLE_TYPE_REMOTE_MEDIA) {
+ holder.preview.setText(R.string.stop_playback);
+ } else {
+ holder.preview.setText(R.string.preview_episode);
+ }
}
});
return convertView;
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 175f8e77b..a41b04b53 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
@@ -209,7 +209,7 @@ public class FeedMedia extends FeedFile implements Playable {
* currently being played.
*/
public boolean isPlaying() {
- return PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA
+ return PlaybackPreferences.getCurrentlyPlayingMediaType() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA
&& PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == id;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java
index 4e2233407..a4612d857 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java
@@ -33,14 +33,16 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
* Contains the id of the currently playing FeedMedia object or
* NO_MEDIA_PLAYING if the currently playing media is no FeedMedia object.
*/
- private static final String PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedMediaId";
+ private static final String PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID
+ = "de.danoeh.antennapod.preferences.lastPlayedFeedMediaId";
/**
* Type of the media object that is currently being played. This preference
* is set to NO_MEDIA_PLAYING after playback has been completed and is set
* as soon as the 'play' button is pressed.
*/
- private static final String PREF_CURRENTLY_PLAYING_MEDIA = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
+ private static final String PREF_CURRENTLY_PLAYING_MEDIA_TYPE
+ = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
/**
* True if last played media was streamed.
@@ -61,7 +63,8 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
* A temporary playback speed which overrides the per-feed playback speed for the currently playing
* media. Considered unset if set to SPEED_USE_GLOBAL;
*/
- private static final String PREF_CURRENTLY_PLAYING_TEMPORARY_PLAYBACK_SPEED = "de.danoeh.antennapod.preferences.temporaryPlaybackSpeed";
+ private static final String PREF_CURRENTLY_PLAYING_TEMPORARY_PLAYBACK_SPEED
+ = "de.danoeh.antennapod.preferences.temporaryPlaybackSpeed";
/**
@@ -102,21 +105,21 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
}
}
- public static long getCurrentlyPlayingMedia() {
- return prefs.getLong(PREF_CURRENTLY_PLAYING_MEDIA, NO_MEDIA_PLAYING);
- }
+ public static long getCurrentlyPlayingMediaType() {
+ return prefs.getLong(PREF_CURRENTLY_PLAYING_MEDIA_TYPE, NO_MEDIA_PLAYING);
+ }
- public static long getCurrentlyPlayingFeedMediaId() {
- return prefs.getLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
- }
+ public static long getCurrentlyPlayingFeedMediaId() {
+ return prefs.getLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
+ }
- public static boolean getCurrentEpisodeIsStream() {
- return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_STREAM, true);
- }
+ public static boolean getCurrentEpisodeIsStream() {
+ return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_STREAM, true);
+ }
- public static boolean getCurrentEpisodeIsVideo() {
- return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, false);
- }
+ public static boolean getCurrentEpisodeIsVideo() {
+ return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, false);
+ }
public static int getCurrentPlayerStatus() {
return prefs.getInt(PREF_CURRENT_PLAYER_STATUS, PLAYER_STATUS_OTHER);
@@ -128,7 +131,7 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
public static void writeNoMediaPlaying() {
SharedPreferences.Editor editor = prefs.edit();
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, NO_MEDIA_PLAYING);
+ editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA_TYPE, NO_MEDIA_PLAYING);
editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, NO_MEDIA_PLAYING);
editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
editor.putInt(PREF_CURRENT_PLAYER_STATUS, PLAYER_STATUS_OTHER);
@@ -142,13 +145,13 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
if (playable == null) {
writeNoMediaPlaying();
} else {
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, playable.getPlayableType());
+ editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA_TYPE, playable.getPlayableType());
editor.putBoolean(PREF_CURRENT_EPISODE_IS_STREAM, stream);
editor.putBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, playable.getMediaType() == MediaType.VIDEO);
if (playable instanceof FeedMedia) {
- FeedMedia fMedia = (FeedMedia) playable;
- editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, fMedia.getItem().getFeed().getId());
- editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, fMedia.getId());
+ FeedMedia feedMedia = (FeedMedia) playable;
+ editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, feedMedia.getItem().getFeed().getId());
+ editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, feedMedia.getId());
} else {
editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, NO_MEDIA_PLAYING);
editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
index 378c47faf..24aabf212 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
@@ -188,7 +188,7 @@ public interface Playable extends Parcelable,
*/
@Nullable
public static Playable createInstanceFromPreferences(Context context) {
- long currentlyPlayingMedia = PlaybackPreferences.getCurrentlyPlayingMedia();
+ long currentlyPlayingMedia = PlaybackPreferences.getCurrentlyPlayingMediaType();
if (currentlyPlayingMedia != PlaybackPreferences.NO_MEDIA_PLAYING) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
return PlayableUtils.createInstanceFromPreferences(context,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java
index c39121564..ca09cda4b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java
@@ -282,7 +282,7 @@ public class RemoteMedia implements Playable {
dest.writeString(imageUrl);
dest.writeString(feedLink);
dest.writeString(mimeType);
- dest.writeLong(pubDate.getTime());
+ dest.writeLong((pubDate != null) ? pubDate.getTime() : 0);
dest.writeString(notes);
dest.writeInt(duration);
dest.writeInt(position);