diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java | 37 | ||||
-rw-r--r-- | core/src/main/res/values/arrays.xml | 4 | ||||
-rw-r--r-- | core/src/main/res/values/strings.xml | 4 |
3 files changed, 40 insertions, 5 deletions
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 d4be0013f..6707d10f4 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 @@ -25,6 +25,7 @@ import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.app.NotificationCompat; +import android.support.v4.app.NotificationManagerCompat; import android.support.v4.media.MediaBrowserCompat; import android.support.v4.media.MediaBrowserServiceCompat; import android.support.v4.media.MediaDescriptionCompat; @@ -67,6 +68,7 @@ import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.FeedSearcher; import de.danoeh.antennapod.core.util.IntList; import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.core.util.QueueAccess; import de.danoeh.antennapod.core.util.gui.NotificationUtils; import de.danoeh.antennapod.core.util.playback.ExternalMedia; @@ -94,6 +96,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { * True if media should be streamed. */ public static final String EXTRA_SHOULD_STREAM = "extra.de.danoeh.antennapod.core.service.shouldStream"; + public static final String EXTRA_ALLOW_STREAM_THIS_TIME = "extra.de.danoeh.antennapod.core.service.allowStream"; /** * True if playback should be started immediately after media has been * prepared. @@ -103,7 +106,6 @@ public class PlaybackService extends MediaBrowserServiceCompat { public static final String EXTRA_PREPARE_IMMEDIATELY = "extra.de.danoeh.antennapod.core.service.prepareImmediately"; public static final String ACTION_PLAYER_STATUS_CHANGED = "action.de.danoeh.antennapod.core.service.playerStatusChanged"; - public static final String EXTRA_NEW_PLAYER_STATUS = "extra.de.danoeh.antennapod.service.playerStatusChanged.newStatus"; private static final String AVRCP_ACTION_PLAYER_STATUS_CHANGED = "com.android.music.playstatechanged"; private static final String AVRCP_ACTION_META_CHANGED = "com.android.music.metachanged"; @@ -206,6 +208,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { private static volatile boolean isCasting = false; private static final int NOTIFICATION_ID = 1; + private static final int NOTIFICATION_ID_STREAMING = 2; private PlaybackServiceMediaPlayer mediaPlayer; private PlaybackServiceTaskManager taskManager; @@ -467,8 +470,8 @@ public class PlaybackService extends MediaBrowserServiceCompat { } } else if (!flavorHelper.castDisconnect(castDisconnect) && playable != null) { started = true; - boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM, - true); + boolean stream = intent.getBooleanExtra(EXTRA_SHOULD_STREAM, true); + boolean allowStreamThisTime = intent.getBooleanExtra(EXTRA_ALLOW_STREAM_THIS_TIME, false); boolean startWhenPrepared = intent.getBooleanExtra(EXTRA_START_WHEN_PREPARED, false); boolean prepareImmediately = intent.getBooleanExtra(EXTRA_PREPARE_IMMEDIATELY, false); sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0); @@ -477,6 +480,11 @@ public class PlaybackService extends MediaBrowserServiceCompat { if (playable instanceof FeedMedia) { playable = DBReader.getFeedMedia(((FeedMedia) playable).getId()); } + if (stream && !NetworkUtils.isStreamingAllowed() && !allowStreamThisTime) { + displayStreamingNotAllowedNotification(intent); + stopService(); + return Service.START_NOT_STICKY; + } mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately); } else { Log.d(TAG, "Did not handle intent to PlaybackService: " + intent); @@ -487,6 +495,29 @@ public class PlaybackService extends MediaBrowserServiceCompat { return Service.START_NOT_STICKY; } + private void displayStreamingNotAllowedNotification(Intent originalIntent) { + Intent intent = new Intent(originalIntent); + intent.putExtra(EXTRA_ALLOW_STREAM_THIS_TIME, true); + PendingIntent pendingIntent; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + pendingIntent = PendingIntent.getForegroundService(this, 0, intent, 0); + } else { + pendingIntent = PendingIntent.getService(this, 0, intent, 0); + } + + NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NotificationUtils.CHANNEL_ID_USER_ACTION) + .setSmallIcon(R.drawable.stat_notify_sync_error) + .setContentTitle(getString(R.string.confirm_mobile_streaming_notification_title)) + .setContentText(getString(R.string.confirm_mobile_streaming_notification_message)) + .setStyle(new NotificationCompat.BigTextStyle() + .bigText(getString(R.string.confirm_mobile_streaming_notification_message))) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setContentIntent(pendingIntent) + .setAutoCancel(true); + NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); + notificationManager.notify(NOTIFICATION_ID_STREAMING, builder.build()); + } + /** * Handles media button events * return: keycode was handled diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index d5f1c30b1..49ebb7416 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -77,6 +77,10 @@ <item>images</item> </string-array> + <string-array name="mobile_update_default_value"> + <item>images</item> + </string-array> + <string-array name="episode_cleanup_entries"> <item>@string/episode_cleanup_queue_removal</item> <item>0</item> diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 82a56cf88..a6ba0740e 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -265,8 +265,8 @@ <string name="confirm_mobile_download_dialog_title">Confirm Mobile Download</string> <string name="confirm_mobile_download_dialog_message_not_in_queue">Downloading over mobile data connection is disabled in the settings.\n\nYou can choose to either only add the episode to the queue or you can allow downloading temporarily.\n\n<small>Your choice will be remembered for 10 minutes.</small></string> <string name="confirm_mobile_download_dialog_message">Downloading over mobile data connection is disabled in the settings.\n\nDo you want to allow downloading temporarily?\n\n<small>Your choice will be remembered for 10 minutes.</small></string> - <string name="confirm_mobile_streaming_dialog_title">Confirm Mobile streaming</string> - <string name="confirm_mobile_streaming_dialog_message">Streaming over mobile data connection is disabled in the settings. Do you want to stream anyway?</string> + <string name="confirm_mobile_streaming_notification_title">Confirm Mobile streaming</string> + <string name="confirm_mobile_streaming_notification_message">Streaming over mobile data connection is disabled in the settings. Tap to stream anyway.</string> <string name="confirm_mobile_download_dialog_only_add_to_queue">Enqueue</string> <string name="confirm_mobile_download_dialog_enable_temporarily">Allow temporarily</string> |