diff options
6 files changed, 63 insertions, 14 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index 8088caec9..cad414118 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -173,8 +173,17 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O super.setScreenOn(enable); MediaplayerActivity.this.setScreenOn(enable); } + + @Override + public void onPlaybackSpeedAvailableChanged() { + MediaplayerActivity.this.onPlaybackSpeedAvailableChanged(); + } }; + } + protected void onPlaybackSpeedAvailableChanged() { + Log.d(TAG, "onPlaybackSpeedAvailableChanged()"); + updatePlaybackSpeedButton(); } protected void onPlaybackSpeedChange() { @@ -628,25 +637,28 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O if (media != null) { onPositionObserverUpdate(); checkFavorite(); - if(butPlaybackSpeed != null) { - if (controller == null) { - butPlaybackSpeed.setVisibility(View.GONE); - } else { - butPlaybackSpeed.setVisibility(View.VISIBLE); - if (controller.canSetPlaybackSpeed()) { - ViewCompat.setAlpha(butPlaybackSpeed, 1.0f); - } else { - ViewCompat.setAlpha(butPlaybackSpeed, 0.5f); - } - } - updateButPlaybackSpeed(); - } + updatePlaybackSpeedButton(); return true; } else { return false; } } + private void updatePlaybackSpeedButton() { + if(butPlaybackSpeed != null) { + if (controller == null) { + butPlaybackSpeed.setVisibility(View.GONE); + } else { + butPlaybackSpeed.setVisibility(View.VISIBLE); + if (controller.canSetPlaybackSpeed()) { + ViewCompat.setAlpha(butPlaybackSpeed, 1.0f); + } else { + ViewCompat.setAlpha(butPlaybackSpeed, 0.5f); + } + } + updatePlaybackSpeedButtonText(); + } + } private void updatePlaybackSpeedButtonText() { if (controller != null && butPlaybackSpeed != null) { diff --git a/build.gradle b/build.gradle index 2d42a5759..368238172 100644 --- a/build.gradle +++ b/build.gradle @@ -59,7 +59,7 @@ project.ext { rxJavaVersion = "1.1.0" rxJavaRulesVersion = "1.1.0.0" - audioPlayerVersion = "v1.0.14" + audioPlayerVersion = "v1.0.15" } task wrapper(type: Wrapper) { 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 8744f0349..1ca06de52 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 @@ -142,6 +142,11 @@ public class PlaybackService extends Service { public static final int NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE = 8; /** + * Playback speed has changed + */ + public static final int NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE_AVAILABLE_CHANGED = 9; + + /** * Returned by getPositionSafe() or getDurationSafe() if the playbackService * is in an invalid state. */ @@ -515,6 +520,10 @@ public class PlaybackService extends Service { sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE, 0); } + public void playbackSpeedAvailableChanged() { + sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE_AVAILABLE_CHANGED, 0); + } + @Override public void onBufferingUpdate(int percent) { sendNotificationBroadcast(NOTIFICATION_TYPE_BUFFER_UPDATE, percent); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java index 3ecd93274..0c7bb5cb9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java @@ -1018,6 +1018,8 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre void playbackSpeedChanged(float s); + void playbackSpeedAvailableChanged(); + void onBufferingUpdate(int percent); boolean onMediaPlayerInfo(int code); @@ -1038,6 +1040,7 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre ((AudioPlayer) mp) .setOnBufferingUpdateListener(audioBufferingUpdateListener); ((AudioPlayer) mp).setOnInfoListener(audioInfoListener); + ((AudioPlayer) mp).setOnSpeedAdjustmentAvailableChangedListener(audioSpeedAvailableChangedListener); } else { ((VideoPlayer) mp) .setOnCompletionListener(videoCompletionListener); @@ -1082,6 +1085,15 @@ public class PlaybackServiceMediaPlayer implements SharedPreferences.OnSharedPre return callback.onMediaPlayerInfo(what); } + private final MediaPlayer.OnSpeedAdjustmentAvailableChangedListener + audioSpeedAvailableChangedListener = new MediaPlayer.OnSpeedAdjustmentAvailableChangedListener() { + @Override + public void onSpeedAdjustmentAvailableChanged(MediaPlayer arg0, boolean speedAdjustmentAvailable) { + callback.playbackSpeedAvailableChanged(); + } + }; + + private final MediaPlayer.OnErrorListener audioErrorListener = (mp, what, extra) -> { if(mp.canFallback()) { 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 f0850e6df..846733882 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 @@ -1,8 +1,11 @@ package de.danoeh.antennapod.core.util.playback; import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; import android.util.Log; import android.view.SurfaceHolder; + import org.antennapod.audio.MediaPlayer; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -12,8 +15,17 @@ public class AudioPlayer extends MediaPlayer implements IPlayer { public AudioPlayer(Context context) { super(context); + PreferenceManager.getDefaultSharedPreferences(context) + .registerOnSharedPreferenceChangeListener(sonicListener); } + private final SharedPreferences.OnSharedPreferenceChangeListener sonicListener = + (sharedPreferences, key) -> { + if (key.equals(UserPreferences.PREF_SONIC)) { + checkMpi(); + } + }; + @Override public void setScreenOnWhilePlaying(boolean screenOn) { Log.e(TAG, "Setting screen on while playing not supported in Audio Player"); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index 0ad286093..17b1bd72f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -336,6 +336,8 @@ public abstract class PlaybackController { case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE: onPlaybackSpeedChange(); break; + case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE_AVAILABLE_CHANGED: + onPlaybackSpeedAvailableChanged(); } } @@ -362,6 +364,8 @@ public abstract class PlaybackController { public void onPlaybackSpeedChange() {} + public void onPlaybackSpeedAvailableChanged() {} + public void onShutdownNotification() {} /** |