summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-07-25 01:08:16 +0200
committerByteHamster <info@bytehamster.com>2019-07-25 01:08:16 +0200
commitbe8e7c32f138bab841d3b040dad0c85ee54875ac (patch)
treeb2257b226c8884340e94c7a6d000d4520d0bc709 /core/src
parentbe42cc0c7176c056a5b1b7c2b0d16ad6e9850312 (diff)
downloadAntennaPod-be8e7c32f138bab841d3b040dad0c85ee54875ac.zip
Display notification when trying to stream
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java37
-rw-r--r--core/src/main/res/values/arrays.xml4
-rw-r--r--core/src/main/res/values/strings.xml4
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>