diff options
Diffstat (limited to 'core/src')
7 files changed, 38 insertions, 53 deletions
diff --git a/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java index 5f7e6baaf..0193bf8ce 100644 --- a/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java +++ b/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java @@ -30,8 +30,6 @@ public class ClientConfig { public static DownloadServiceCallbacks downloadServiceCallbacks; - public static PlaybackServiceCallbacks playbackServiceCallbacks; - public static CastCallbacks castCallbacks; private static boolean initialized = false; diff --git a/core/src/main/java/de/danoeh/antennapod/core/PlaybackServiceCallbacks.java b/core/src/main/java/de/danoeh/antennapod/core/PlaybackServiceCallbacks.java deleted file mode 100644 index 3dcaac4dc..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/PlaybackServiceCallbacks.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.danoeh.antennapod.core; - -import android.content.Context; -import android.content.Intent; - -import de.danoeh.antennapod.core.feed.MediaType; - -/** - * Callbacks for the PlaybackService of the core module - */ -public interface PlaybackServiceCallbacks { - - /** - * Returns an intent which starts an audio- or videoplayer, depending on the - * type of media that is being played. - * - * @param mediaType The type of media that is being played. - * @param remotePlayback true if the media is played on a remote device. - * @return A non-null activity intent. - */ - Intent getPlayerActivityIntent(Context context, MediaType mediaType, boolean remotePlayback); -} 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 5bc1b19f7..d5c85f5f4 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 @@ -50,7 +50,6 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; -import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.event.PlaybackPositionEvent; @@ -81,6 +80,8 @@ import de.danoeh.antennapod.core.util.playback.ExternalMedia; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter; import de.danoeh.antennapod.core.widget.WidgetUpdater; +import de.danoeh.antennapod.ui.appstartintent.MainActivityStarter; +import de.danoeh.antennapod.ui.appstartintent.VideoPlayerActivityStarter; import io.reactivex.Observable; import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -245,24 +246,31 @@ public class PlaybackService extends MediaBrowserServiceCompat { * running, the type of the last played media will be looked up. */ public static Intent getPlayerActivityIntent(Context context) { + boolean showVideoPlayer; + if (isRunning) { - return ClientConfig.playbackServiceCallbacks.getPlayerActivityIntent(context, currentMediaType, isCasting); + showVideoPlayer = currentMediaType == MediaType.VIDEO && !isCasting; } else { - if (PlaybackPreferences.getCurrentEpisodeIsVideo()) { - return ClientConfig.playbackServiceCallbacks.getPlayerActivityIntent(context, MediaType.VIDEO, isCasting); - } else { - return ClientConfig.playbackServiceCallbacks.getPlayerActivityIntent(context, MediaType.AUDIO, isCasting); - } + showVideoPlayer = PlaybackPreferences.getCurrentEpisodeIsVideo(); + } + + if (showVideoPlayer) { + return new VideoPlayerActivityStarter(context).getIntent(); + } else { + return new MainActivityStarter(context).withOpenPlayer().getIntent(); } } /** - * Same as getPlayerActivityIntent(context), but here the type of activity + * Same as {@link #getPlayerActivityIntent(Context)}, but here the type of activity * depends on the FeedMedia that is provided as an argument. */ public static Intent getPlayerActivityIntent(Context context, Playable media) { - MediaType mt = media.getMediaType(); - return ClientConfig.playbackServiceCallbacks.getPlayerActivityIntent(context, mt, isCasting); + if (media.getMediaType() == MediaType.VIDEO && !isCasting) { + return new VideoPlayerActivityStarter(context).getIntent(); + } else { + return new MainActivityStarter(context).withOpenPlayer().getIntent(); + } } @Override @@ -796,7 +804,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { @Override public WidgetUpdater.WidgetState requestWidgetState() { return new WidgetUpdater.WidgetState(getPlayable(), getStatus(), - getCurrentPosition(), getDuration(), getCurrentPlaybackSpeed()); + getCurrentPosition(), getDuration(), getCurrentPlaybackSpeed(), isCasting()); } @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java index 1622fcb8f..d97271d1a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java +++ b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdater.java @@ -19,15 +19,17 @@ import com.bumptech.glide.request.RequestOptions; import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.core.feed.MediaType; import de.danoeh.antennapod.core.glide.ApGlideSettings; import de.danoeh.antennapod.core.receiver.MediaButtonReceiver; import de.danoeh.antennapod.core.receiver.PlayerWidget; -import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.service.playback.PlayerStatus; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.feed.util.ImageResourceUtils; import de.danoeh.antennapod.core.util.TimeSpeedConverter; import de.danoeh.antennapod.core.util.playback.Playable; +import de.danoeh.antennapod.ui.appstartintent.MainActivityStarter; +import de.danoeh.antennapod.ui.appstartintent.VideoPlayerActivityStarter; /** * Updates the state of the player widget. @@ -41,17 +43,20 @@ public abstract class WidgetUpdater { final int position; final int duration; final float playbackSpeed; + final boolean isCasting; - public WidgetState(Playable media, PlayerStatus status, int position, int duration, float playbackSpeed) { + public WidgetState(Playable media, PlayerStatus status, int position, int duration, + float playbackSpeed, boolean isCasting) { this.media = media; this.status = status; this.position = position; this.duration = duration; this.playbackSpeed = playbackSpeed; + this.isCasting = isCasting; } public WidgetState(PlayerStatus status) { - this(null, status, Playable.INVALID_TIME, Playable.INVALID_TIME, 1.0f); + this(null, status, Playable.INVALID_TIME, Playable.INVALID_TIME, 1.0f, false); } } @@ -65,8 +70,14 @@ public abstract class WidgetUpdater { ComponentName playerWidget = new ComponentName(context, PlayerWidget.class); AppWidgetManager manager = AppWidgetManager.getInstance(context); int[] widgetIds = manager.getAppWidgetIds(playerWidget); - final PendingIntent startMediaPlayer = PendingIntent.getActivity(context, R.id.pending_intent_player_activity, - PlaybackService.getPlayerActivityIntent(context), PendingIntent.FLAG_UPDATE_CURRENT); + + PendingIntent startMediaPlayer; + if (widgetState.media != null && widgetState.media.getMediaType() == MediaType.VIDEO + && !widgetState.isCasting) { + startMediaPlayer = new VideoPlayerActivityStarter(context).getPendingIntent(); + } else { + startMediaPlayer = new MainActivityStarter(context).withOpenPlayer().getPendingIntent(); + } RemoteViews views; views = new RemoteViews(context.getPackageName(), R.layout.player_widget); diff --git a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java index 1db7928b4..ab763cd8c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java @@ -5,6 +5,7 @@ import android.content.Intent; import androidx.annotation.NonNull; import androidx.core.app.SafeJobIntentService; import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils; +import de.danoeh.antennapod.core.preferences.PlaybackPreferences; import de.danoeh.antennapod.core.service.playback.PlayerStatus; import de.danoeh.antennapod.core.util.playback.Playable; @@ -24,7 +25,8 @@ public class WidgetUpdaterJobService extends SafeJobIntentService { Playable media = Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext()); if (media != null) { WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(media, PlayerStatus.STOPPED, - media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media))); + media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media), + PlaybackPreferences.getCurrentEpisodeIsStream())); } else { WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(PlayerStatus.STOPPED)); } diff --git a/core/src/main/res/values/ids.xml b/core/src/main/res/values/ids.xml index 3c173b72d..87046cc0f 100644 --- a/core/src/main/res/values/ids.xml +++ b/core/src/main/res/values/ids.xml @@ -23,14 +23,4 @@ <item name="notification_auto_download_report" type="id"/> <item name="notification_playing" type="id"/> <item name="notification_streaming_confirmation" type="id"/> - - <!-- PendingIntent objects that use the same action but different extras need to use a unique request code --> - <item name="pending_intent_download_service_notification" type="id"/> - <item name="pending_intent_download_service_auth" type="id"/> - <item name="pending_intent_download_service_report" type="id"/> - <item name="pending_intent_download_service_autodownload_report" type="id"/> - <item name="pending_intent_allow_stream_always" type="id"/> - <item name="pending_intent_allow_stream_this_time" type="id"/> - <item name="pending_intent_player_activity" type="id"/> - <item name="pending_intent_sync_error" type="id"/> </resources>
\ No newline at end of file diff --git a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java index e8c2b1dcd..0225c508a 100644 --- a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java +++ b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java @@ -36,8 +36,6 @@ public class ClientConfig { public static DownloadServiceCallbacks downloadServiceCallbacks; - public static PlaybackServiceCallbacks playbackServiceCallbacks; - public static CastCallbacks castCallbacks; private static boolean initialized = false; |