diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java | 2 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java | 14 | ||||
-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.java | 29 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java | 2 | ||||
-rw-r--r-- | core/src/main/res/values/arrays.xml | 22 | ||||
-rw-r--r-- | core/src/main/res/values/strings.xml | 7 |
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> |