summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2018-04-22 09:43:59 +0200
committerByteHamster <info@bytehamster.com>2018-04-22 09:43:59 +0200
commit6d3fc04f528bc54cfdf3c0b7851650b31e87b3ec (patch)
tree3a969526e5e0297a6226b38fd1e1318cfcff228d /core/src/main
parente4f7d6527355cd0deebb2ac273514a0044261738 (diff)
parentc9a2bbc2c9709a0c1f0d20ea8168bd7a7a1b95d5 (diff)
downloadAntennaPod-6d3fc04f528bc54cfdf3c0b7851650b31e87b3ec.zip
Merge branch 'develop' into exo-player
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java27
-rw-r--r--core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.pngbin0 -> 828 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.pngbin0 -> 635 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.pngbin0 -> 619 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.pngbin0 -> 534 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.pngbin0 -> 862 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.pngbin0 -> 738 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.pngbin0 -> 1155 bytes
-rw-r--r--core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.pngbin0 -> 965 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.pngbin0 -> 1366 bytes
-rw-r--r--core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.pngbin0 -> 1200 bytes
-rw-r--r--core/src/main/res/values/arrays.xml22
-rw-r--r--core/src/main/res/values/attrs.xml1
-rw-r--r--core/src/main/res/values/strings.xml11
-rw-r--r--core/src/main/res/values/styles.xml6
19 files changed, 92 insertions, 5 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index 420288c14..a44ca8a8e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -74,6 +74,7 @@ public class UserPreferences {
private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray";
private static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss";
private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall";
+ public static final String PREF_VIDEO_BEHAVIOR = "prefVideoBehavior";
// Network
private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded";
@@ -663,6 +664,14 @@ public class UserPreferences {
.apply();
}
+ public static VideoBackgroundBehavior getVideoBackgroundBehavior() {
+ switch (prefs.getString(PREF_VIDEO_BEHAVIOR, "stop")) {
+ case "stop": return VideoBackgroundBehavior.STOP;
+ case "pip": return VideoBackgroundBehavior.PICTURE_IN_PICTURE;
+ case "continue": return VideoBackgroundBehavior.CONTINUE_PLAYING;
+ default: return VideoBackgroundBehavior.STOP;
+ }
+ }
public static EpisodeCleanupAlgorithm getEpisodeCleanupAlgorithm() {
int cleanupValue = Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1"));
@@ -841,4 +850,8 @@ public class UserPreferences {
public static boolean isCastEnabled() {
return prefs.getBoolean(PREF_CAST_ENABLED, false);
}
+
+ public enum VideoBackgroundBehavior {
+ STOP, PICTURE_IN_PICTURE, CONTINUE_PLAYING
+ }
}
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 ab25f0a5f..67a2cdad2 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
@@ -1436,6 +1436,12 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void onReceive(Context context, Intent intent) {
+ if (isInitialStickyBroadcast ()) {
+ // Don't pause playback after we just started, just because the receiver
+ // delivers the current headset state (instead of a change)
+ return;
+ }
+
if (TextUtils.equals(intent.getAction(), Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
if (state != -1) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java
index ea1b724d4..b512dce3f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java
@@ -1,6 +1,6 @@
package de.danoeh.antennapod.core.syndication.namespace.atom;
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.text.StringEscapeUtils;
import de.danoeh.antennapod.core.syndication.namespace.Namespace;
import de.danoeh.antennapod.core.syndication.namespace.SyndElement;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java
index a93dd8ee3..e99461806 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java
@@ -3,7 +3,8 @@ package de.danoeh.antennapod.core.util;
import android.text.TextUtils;
import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.text.RandomStringGenerator;
+
/** Generates valid filenames for a given string. */
public class FileNameGenerator {
@@ -34,7 +35,11 @@ public class FileNameGenerator {
}
String filename = buf.toString().trim();
if(TextUtils.isEmpty(filename)) {
- return RandomStringUtils.randomAlphanumeric(8);
+ return new RandomStringGenerator.Builder()
+ .withinRange('0', 'z')
+ .filteredBy(Character::isLetterOrDigit)
+ .build()
+ .generate(8);
}
return filename;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java
new file mode 100644
index 000000000..f763653a1
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java
@@ -0,0 +1,27 @@
+package de.danoeh.antennapod.core.util.gui;
+
+import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.os.Build;
+
+public class PictureInPictureUtil {
+ private PictureInPictureUtil() {
+ }
+
+ public static boolean supportsPictureInPicture(Activity activity) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ PackageManager packageManager = activity.getPackageManager();
+ return packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE);
+ } else {
+ return false;
+ }
+ }
+
+ public static boolean isInPictureInPictureMode(Activity activity) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && supportsPictureInPicture(activity)) {
+ return activity.isInPictureInPictureMode();
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
new file mode 100644
index 000000000..212948b70
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
new file mode 100644
index 000000000..cce69655d
--- /dev/null
+++ b/core/src/main/res/drawable-hdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
new file mode 100644
index 000000000..498ddf8eb
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
new file mode 100644
index 000000000..66a6d7681
--- /dev/null
+++ b/core/src/main/res/drawable-mdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
new file mode 100644
index 000000000..df64c26fe
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
new file mode 100644
index 000000000..9e49cbe0a
--- /dev/null
+++ b/core/src/main/res/drawable-xhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
new file mode 100644
index 000000000..951244d68
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
new file mode 100644
index 000000000..3eaedd318
--- /dev/null
+++ b/core/src/main/res/drawable-xxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
new file mode 100644
index 000000000..6c4c2b94c
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_grey600_24dp.png
Binary files differ
diff --git a/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
new file mode 100644
index 000000000..fd5114044
--- /dev/null
+++ b/core/src/main/res/drawable-xxxhdpi/ic_checkbox_multiple_marked_outline_white_24dp.png
Binary files differ
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index f27b25a17..758abcea3 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -246,4 +246,26 @@
<item>@string/fast_forward_label</item>
<item>@string/skip_episode_label</item>
</string-array>
+
+ <string-array name="video_background_behavior_options">
+ <item>@string/stop_playback</item>
+ <item>@string/player_go_to_picture_in_picture</item>
+ <item>@string/continue_playback</item>
+ </string-array>
+
+ <string-array name="video_background_behavior_values">
+ <item>stop</item>
+ <item>pip</item>
+ <item>continue</item>
+ </string-array>
+
+ <string-array name="video_background_behavior_options_without_pip">
+ <item>@string/stop_playback</item>
+ <item>@string/continue_playback</item>
+ </string-array>
+
+ <string-array name="video_background_behavior_values_without_pip">
+ <item>stop</item>
+ <item>continue</item>
+ </string-array>
</resources>
diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml
index 04ad7ea64..5f25796b0 100644
--- a/core/src/main/res/values/attrs.xml
+++ b/core/src/main/res/values/attrs.xml
@@ -44,6 +44,7 @@
<attr name="ic_unfav" format="reference"/>
<attr name="ic_sleep" format="reference"/>
<attr name="ic_sleep_off" format="reference"/>
+ <attr name="checkbox_multiple" format="reference"/>
<attr name="ic_check_box" format="reference"/>
<attr name="ic_check_box_outline" format="reference"/>
<attr name="ic_indeterminate_check_box" format="reference"/>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index a558c4e9a..f9a03f3a2 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -11,6 +11,7 @@
<string name="add_feed_label">Add Podcast</string>
<string name="episodes_label">Episodes</string>
<string name="all_episodes_short_label">All</string>
+ <string name="new_episodes_label">New</string>
<string name="favorite_episodes_label">Favorites</string>
<string name="new_label">New</string>
<string name="settings_label">Settings</string>
@@ -122,6 +123,9 @@
<string name="mark_all_seen_msg">Marked all Episodes as seen</string>
<string name="mark_all_seen_confirmation_msg">Please confirm that you want to mark all episodes as seen.</string>
<string name="show_info_label">Show information</string>
+ <string name="show_feed_settings_label">Show feed settings</string>
+ <string name="feed_info_label">Feed info</string>
+ <string name="feed_settings_label">Feed settings</string>
<string name="rename_feed_label">Rename Podcast</string>
<string name="remove_feed_label">Remove Podcast</string>
<string name="share_label">Share&#8230;</string>
@@ -135,7 +139,7 @@
<string name="feed_remover_msg">Removing Feed</string>
<string name="load_complete_feed">Refresh complete Feed</string>
<string name="hide_episodes_title">Hide Episodes</string>
- <string name="episode_actions">Apply actions</string>
+ <string name="batch_edit">Batch edit</string>
<string name="hide_unplayed_episodes_label">Unplayed</string>
<string name="hide_paused_episodes_label">Paused</string>
<string name="hide_played_episodes_label">Played</string>
@@ -236,6 +240,7 @@
<string name="no_media_playing_label">No media playing</string>
<string name="position_default_label" translate="false">00:00:00</string>
<string name="player_buffering_msg">Buffering</string>
+ <string name="player_go_to_picture_in_picture">Picture-in-picture mode</string>
<string name="playbackservice_notification_title">Playing podcast</string>
<string name="unknown_media_key">AntennaPod - Unknown media key: %1$d</string>
@@ -442,6 +447,10 @@
<string name="media_player_builtin">Built-in Android player</string>
<string name="media_player_sonic">Sonic Media Player</string>
<string name="media_player_exoplayer">Exoplayer</string>
+ <string name="pref_videoBehavior_title">Video behavior</string>
+ <string name="pref_videoBehavior_sum">Behavior when leaving video playback</string>
+ <string name="stop_playback">Stop playback</string>
+ <string name="continue_playback">Continue playback</string>
<!-- Auto-Flattr dialog -->
<string name="auto_flattr_enable">Enable automatic flattring</string>
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index 13d956bab..b74b55334 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -13,6 +13,7 @@
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item>
<item type="attr" name="action_bar_icon_color">@color/grey600</item>
<item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item>
+ <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_grey600_24dp</item>
<item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item>
<item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item>
<item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item>
@@ -75,7 +76,8 @@
<item name="progressBarTheme">@style/ProgressBarDark</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item>
<item type="attr" name="action_bar_icon_color">@color/white</item>
- <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>g
+ <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>
+ <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_white_24dp</item>
<item type="attr" name="action_search">@drawable/ic_search_white_24dp</item>
<item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item>
<item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item>
@@ -140,6 +142,7 @@
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item>
<item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item>
+ <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_grey600_24dp</item>
<item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item>
<item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item>
<item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item>
@@ -204,6 +207,7 @@
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item>
<item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>
+ <item type="attr" name="checkbox_multiple">@drawable/ic_checkbox_multiple_marked_outline_white_24dp</item>
<item type="attr" name="action_search">@drawable/ic_search_white_24dp</item>
<item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item>
<item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item>