summaryrefslogtreecommitdiff
path: root/core/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java14
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java (renamed from core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayer.java)4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java29
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java2
-rw-r--r--core/src/main/res/values/arrays.xml22
-rw-r--r--core/src/main/res/values/strings.xml7
7 files changed, 61 insertions, 19 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
index 96e3a77be..f7db11af6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
@@ -89,7 +89,7 @@ class UpdateManager {
}
if(oldVersionCode < 1050004) {
if(MediaPlayer.isPrestoLibraryInstalled(context) && Build.VERSION.SDK_INT >= 16) {
- UserPreferences.enableSonic(true);
+ UserPreferences.enableSonic();
}
}
}
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 743ee135d..420288c14 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
@@ -103,6 +103,7 @@ public class UserPreferences {
public static final String PREF_IMAGE_CACHE_SIZE = "prefImageCacheSize";
// Mediaplayer
+ public static final String PREF_MEDIA_PLAYER = "prefMediaPlayer";
private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed";
private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs";
private static final String PREF_REWIND_SECS = "prefRewindSecs";
@@ -113,7 +114,6 @@ public class UserPreferences {
private static final String PREF_RIGHT_VOLUME = "prefRightVolume";
// Experimental
- public static final String PREF_SONIC = "prefSonic";
private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono";
public static final String PREF_NORMALIZER = "prefNormalizer";
public static final String PREF_CAST_ENABLED = "prefCast"; //Used for enabling Chromecast support
@@ -642,13 +642,15 @@ public class UserPreferences {
}
public static boolean useSonic() {
- return prefs.getBoolean(PREF_SONIC, false);
+ return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals("sonic");
}
- public static void enableSonic(boolean enable) {
- prefs.edit()
- .putBoolean(PREF_SONIC, enable)
- .apply();
+ public static boolean useExoplayer() {
+ return prefs.getString(PREF_MEDIA_PLAYER, "sonic").equals("exoplayer");
+ }
+
+ public static void enableSonic() {
+ prefs.edit().putString(PREF_MEDIA_PLAYER, "sonic").apply();
}
public static boolean stereoToMono() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
index 8b4678cb2..1d233ff0c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ExoPlayerWrapper.java
@@ -25,7 +25,7 @@ import de.danoeh.antennapod.core.util.playback.IPlayer;
import org.antennapod.audio.MediaPlayer;
-public class ExoPlayer implements IPlayer {
+public class ExoPlayerWrapper implements IPlayer {
private final Context mContext;
private SimpleExoPlayer mExoPlayer;
private MediaSource mediaSource;
@@ -33,7 +33,7 @@ public class ExoPlayer implements IPlayer {
private MediaPlayer.OnCompletionListener audioCompletionListener;
private MediaPlayer.OnErrorListener audioErrorListener;
- ExoPlayer(Context context) {
+ ExoPlayerWrapper(Context context) {
mContext = context;
mExoPlayer = createPlayer();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
index ce8993cbd..7abcc413b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
@@ -313,8 +313,11 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
Log.d(TAG, "Resource prepared");
- if (mediaType == MediaType.VIDEO) {
- ExoPlayer vp = (ExoPlayer) mediaPlayer;
+ if (mediaType == MediaType.VIDEO && mediaPlayer instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper vp = (ExoPlayerWrapper) mediaPlayer;
+ videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
+ } else if(mediaType == MediaType.VIDEO && mediaPlayer instanceof VideoPlayer) {
+ VideoPlayer vp = (VideoPlayer) mediaPlayer;
videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
}
@@ -666,8 +669,12 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
Pair<Integer, Integer> res;
if (mediaPlayer == null || playerStatus == PlayerStatus.ERROR || mediaType != MediaType.VIDEO) {
res = null;
+ } else if (mediaPlayer instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper vp = (ExoPlayerWrapper) mediaPlayer;
+ videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
+ res = videoSize;
} else {
- ExoPlayer vp = (ExoPlayer) mediaPlayer;
+ VideoPlayer vp = (VideoPlayer) mediaPlayer;
videoSize = new Pair<>(vp.getVideoWidth(), vp.getVideoHeight());
res = videoSize;
}
@@ -695,11 +702,19 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
if (mediaPlayer != null) {
mediaPlayer.release();
}
- if(media == null) {
+ if (media == null) {
mediaPlayer = null;
return;
}
- mediaPlayer = new ExoPlayer(context);
+
+ if (UserPreferences.useExoplayer()) {
+ mediaPlayer = new ExoPlayerWrapper(context);
+ } else if (media.getMediaType() == MediaType.VIDEO) {
+ mediaPlayer = new VideoPlayer();
+ } else {
+ mediaPlayer = new AudioPlayer(context);
+ }
+
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setWakeMode(context, PowerManager.PARTIAL_WAKE_LOCK);
setMediaPlayerListeners(mediaPlayer);
@@ -876,8 +891,8 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
ap.setOnBufferingUpdateListener(audioBufferingUpdateListener);
ap.setOnInfoListener(audioInfoListener);
ap.setOnSpeedAdjustmentAvailableChangedListener(audioSetSpeedAbilityListener);
- } else if (mp instanceof ExoPlayer) {
- ExoPlayer ap = (ExoPlayer) mp;
+ } else if (mp instanceof ExoPlayerWrapper) {
+ ExoPlayerWrapper ap = (ExoPlayerWrapper) mp;
ap.setOnCompletionListener(audioCompletionListener);
ap.setOnSeekCompleteListener(audioSeekCompleteListener);
ap.setOnErrorListener(audioErrorListener);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java
index 846733882..a1530e808 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java
@@ -21,7 +21,7 @@ public class AudioPlayer extends MediaPlayer implements IPlayer {
private final SharedPreferences.OnSharedPreferenceChangeListener sonicListener =
(sharedPreferences, key) -> {
- if (key.equals(UserPreferences.PREF_SONIC)) {
+ if (key.equals(UserPreferences.PREF_MEDIA_PLAYER)) {
checkMpi();
}
};
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index 45650495c..f27b25a17 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -181,6 +181,28 @@
<item>3</item>
</string-array>
+ <string-array name="media_player_options">
+ <item>@string/media_player_builtin</item>
+ <item>@string/media_player_sonic</item>
+ <item>@string/media_player_exoplayer</item>
+ </string-array>
+
+ <string-array name="media_player_values">
+ <item>builtin</item>
+ <item>sonic</item>
+ <item>exoplayer</item>
+ </string-array>
+
+ <string-array name="media_player_options_no_sonic">
+ <item>@string/media_player_builtin</item>
+ <item>@string/media_player_exoplayer</item>
+ </string-array>
+
+ <string-array name="media_player_values_no_sonic">
+ <item>builtin</item>
+ <item>exoplayer</item>
+ </string-array>
+
<string-array name="episode_filter_options">
<item>@string/hide_unplayed_episodes_label</item>
<item>@string/hide_paused_episodes_label</item>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index aa36eab33..a558c4e9a 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -426,8 +426,8 @@
<string name="crash_report_sum">Send the latest crash report via e-mail</string>
<string name="send_email">Send e-mail</string>
<string name="experimental_pref">Experimental</string>
- <string name="pref_sonic_title">Sonic Media Player</string>
- <string name="pref_sonic_message">Use built-in sonic media player as a replacement for Android\'s native mediaplayer and Prestissimo</string>
+ <string name="pref_media_player_title">Media Player</string>
+ <string name="pref_media_player_message">Select which media player to use to play files</string>
<string name="pref_current_value">Current value: %1$s</string>
<string name="pref_proxy_title">Proxy</string>
<string name="pref_proxy_sum">Set a network proxy</string>
@@ -439,6 +439,9 @@
<string name="pref_cast_message_free_flavor">Chromecast requires third party proprietary libraries that are disabled in this version of AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Enqueue Downloaded</string>
<string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string>
+ <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>
<!-- Auto-Flattr dialog -->
<string name="auto_flattr_enable">Enable automatic flattring</string>