summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java38
-rw-r--r--build.gradle2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/AudioPlayer.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java4
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() {}
/**