summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2021-10-24 18:52:26 +0200
committerByteHamster <info@bytehamster.com>2021-10-24 18:52:26 +0200
commita859b3bbc595689217d3d934011580be49cbcb39 (patch)
tree7411f1a2fada7aa0803b2a8bbf215f9711a69b31
parent8a4b0361485a0f0953af7b13d74c13dc06bd0ca7 (diff)
downloadAntennaPod-a859b3bbc595689217d3d934011580be49cbcb39.zip
Convert speed update to event
-rw-r--r--app/src/androidTest/java/de/test/antennapod/service/playback/CancelablePSMPCallback.java8
-rw-r--r--app/src/androidTest/java/de/test/antennapod/service/playback/DefaultPSMPCallback.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java26
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java25
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/playback/SpeedChangedEvent.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java11
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java9
10 files changed, 49 insertions, 72 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/CancelablePSMPCallback.java b/app/src/androidTest/java/de/test/antennapod/service/playback/CancelablePSMPCallback.java
index a4d1c2bc9..2c164f131 100644
--- a/app/src/androidTest/java/de/test/antennapod/service/playback/CancelablePSMPCallback.java
+++ b/app/src/androidTest/java/de/test/antennapod/service/playback/CancelablePSMPCallback.java
@@ -35,14 +35,6 @@ public class CancelablePSMPCallback implements PlaybackServiceMediaPlayer.PSMPCa
}
@Override
- public void playbackSpeedChanged(float s) {
- if (isCancelled) {
- return;
- }
- originalCallback.playbackSpeedChanged(s);
- }
-
- @Override
public void onMediaChanged(boolean reloadUI) {
if (isCancelled) {
return;
diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/DefaultPSMPCallback.java b/app/src/androidTest/java/de/test/antennapod/service/playback/DefaultPSMPCallback.java
index ddc8cb29b..090a94d6e 100644
--- a/app/src/androidTest/java/de/test/antennapod/service/playback/DefaultPSMPCallback.java
+++ b/app/src/androidTest/java/de/test/antennapod/service/playback/DefaultPSMPCallback.java
@@ -18,11 +18,6 @@ public class DefaultPSMPCallback implements PlaybackServiceMediaPlayer.PSMPCallb
}
@Override
- public void playbackSpeedChanged(float s) {
-
- }
-
- @Override
public void onMediaChanged(boolean reloadUI) {
}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java
index 31c2d3369..f4b3b1bfa 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java
@@ -12,9 +12,13 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.event.playback.SpeedChangedEvent;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
import de.danoeh.antennapod.view.PlaybackSpeedSeekBar;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import java.util.Locale;
@@ -44,16 +48,12 @@ public class PlaybackControlsDialog extends DialogFragment {
public void loadMediaInfo() {
setupUi();
setupAudioTracks();
- updateSpeed();
- }
-
- @Override
- public void onPlaybackSpeedChange() {
- updateSpeed();
+ updateSpeed(new SpeedChangedEvent(getCurrentPlaybackSpeedMultiplier()));
}
};
controller.init();
setupUi();
+ EventBus.getDefault().register(this);
}
@Override
@@ -61,6 +61,7 @@ public class PlaybackControlsDialog extends DialogFragment {
super.onStop();
controller.release();
controller = null;
+ EventBus.getDefault().unregister(this);
}
@NonNull
@@ -79,10 +80,9 @@ public class PlaybackControlsDialog extends DialogFragment {
speedSeekBar.setProgressChangedListener(speed -> {
if (controller != null) {
controller.setPlaybackSpeed(speed);
- updateSpeed();
}
});
- updateSpeed();
+ updateSpeed(new SpeedChangedEvent(controller.getCurrentPlaybackSpeedMultiplier()));
final CheckBox stereoToMono = dialog.findViewById(R.id.stereo_to_mono);
stereoToMono.setChecked(UserPreferences.stereoToMono());
@@ -111,12 +111,10 @@ public class PlaybackControlsDialog extends DialogFragment {
});
}
- private void updateSpeed() {
- if (controller != null) {
- txtvPlaybackSpeed.setText(String.format(
- Locale.getDefault(), "%.2fx", controller.getCurrentPlaybackSpeedMultiplier()));
- speedSeekBar.updateSpeed(controller.getCurrentPlaybackSpeedMultiplier());
- }
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void updateSpeed(SpeedChangedEvent event) {
+ txtvPlaybackSpeed.setText(String.format(Locale.getDefault(), "%.2fx", event.getNewSpeed()));
+ speedSeekBar.updateSpeed(event.getNewSpeed());
}
private void setupAudioTracks() {
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java
index 5d13f6f00..12cb26409 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java
@@ -15,10 +15,14 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.chip.Chip;
import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.event.playback.SpeedChangedEvent;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
import de.danoeh.antennapod.view.ItemOffsetDecoration;
import de.danoeh.antennapod.view.PlaybackSpeedSeekBar;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
@@ -47,22 +51,12 @@ public class VariableSpeedDialog extends BottomSheetDialogFragment {
super.onStart();
controller = new PlaybackController(getActivity()) {
@Override
- public void onPlaybackSpeedChange() {
- updateSpeed();
- }
-
- @Override
public void loadMediaInfo() {
- updateSpeed();
+ updateSpeed(new SpeedChangedEvent(controller.getCurrentPlaybackSpeedMultiplier()));
}
};
controller.init();
- updateSpeed();
- }
-
- private void updateSpeed() {
- speedSeekBar.updateSpeed(controller.getCurrentPlaybackSpeedMultiplier());
- addCurrentSpeedChip.setText(speedFormat.format(controller.getCurrentPlaybackSpeedMultiplier()));
+ EventBus.getDefault().register(this);
}
@Override
@@ -70,6 +64,13 @@ public class VariableSpeedDialog extends BottomSheetDialogFragment {
super.onStop();
controller.release();
controller = null;
+ EventBus.getDefault().unregister(this);
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void updateSpeed(SpeedChangedEvent event) {
+ speedSeekBar.updateSpeed(event.getNewSpeed());
+ addCurrentSpeedChip.setText(speedFormat.format(event.getNewSpeed()));
}
@Nullable
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
index 469a48a39..94326efe8 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -28,6 +28,7 @@ import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.core.event.playback.BufferUpdateEvent;
import de.danoeh.antennapod.core.event.playback.PlaybackServiceEvent;
import de.danoeh.antennapod.core.event.PlayerErrorEvent;
+import de.danoeh.antennapod.core.event.playback.SpeedChangedEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -244,14 +245,11 @@ public class AudioPlayerFragment extends Fragment implements
});
}
- protected void updatePlaybackSpeedButton(Playable media) {
- if (butPlaybackSpeed == null || controller == null) {
- return;
- }
- float speed = PlaybackSpeedUtils.getCurrentPlaybackSpeed(media);
- String speedStr = new DecimalFormat("0.00").format(speed);
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void updatePlaybackSpeedButton(SpeedChangedEvent event) {
+ String speedStr = new DecimalFormat("0.00").format(event.getNewSpeed());
txtvPlaybackSpeed.setText(speedStr);
- butPlaybackSpeed.setSpeed(speed);
+ butPlaybackSpeed.setSpeed(event.getNewSpeed());
}
private void loadMediaInfo(boolean includingChapters) {
@@ -301,11 +299,6 @@ public class AudioPlayerFragment extends Fragment implements
public void onPlaybackEnd() {
((MainActivity) getActivity()).getBottomSheet().setState(BottomSheetBehavior.STATE_COLLAPSED);
}
-
- @Override
- public void onPlaybackSpeedChange() {
- updatePlaybackSpeedButton(getMedia());
- }
};
}
@@ -315,7 +308,7 @@ public class AudioPlayerFragment extends Fragment implements
}
duration = controller.getDuration();
updatePosition(new PlaybackPositionEvent(controller.getPosition(), duration));
- updatePlaybackSpeedButton(media);
+ updatePlaybackSpeedButton(new SpeedChangedEvent(PlaybackSpeedUtils.getCurrentPlaybackSpeed(media)));
setChapterDividers(media);
setupOptionsMenu(media);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/playback/SpeedChangedEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/playback/SpeedChangedEvent.java
new file mode 100644
index 000000000..2fd20c7fb
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/playback/SpeedChangedEvent.java
@@ -0,0 +1,13 @@
+package de.danoeh.antennapod.core.event.playback;
+
+public class SpeedChangedEvent {
+ private final float newSpeed;
+
+ public SpeedChangedEvent(float newSpeed) {
+ this.newSpeed = newSpeed;
+ }
+
+ public float getNewSpeed() {
+ return newSpeed;
+ }
+}
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 ca6e652d3..1556e5a51 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
@@ -16,6 +16,7 @@ import androidx.media.AudioFocusRequestCompat;
import androidx.media.AudioManagerCompat;
import de.danoeh.antennapod.core.event.PlayerErrorEvent;
import de.danoeh.antennapod.core.event.playback.BufferUpdateEvent;
+import de.danoeh.antennapod.core.event.playback.SpeedChangedEvent;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.playback.MediaPlayerError;
import org.antennapod.audio.MediaPlayer;
@@ -617,7 +618,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
private void setSpeedSyncAndSkipSilence(float speed, boolean skipSilence) {
playerLock.lock();
Log.d(TAG, "Playback speed was set to " + speed);
- callback.playbackSpeedChanged(speed);
+ EventBus.getDefault().post(new SpeedChangedEvent(speed));
mediaPlayer.setPlaybackParams(speed, skipSilence);
playerLock.unlock();
}
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 f86b26632..10c78bee6 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
@@ -45,6 +45,7 @@ import androidx.preference.PreferenceManager;
import de.danoeh.antennapod.core.event.playback.BufferUpdateEvent;
import de.danoeh.antennapod.core.event.playback.PlaybackServiceEvent;
import de.danoeh.antennapod.core.event.PlayerErrorEvent;
+import de.danoeh.antennapod.core.event.playback.SpeedChangedEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@@ -182,11 +183,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
public static final int NOTIFICATION_TYPE_PLAYBACK_END = 7;
/**
- * Playback speed has changed
- */
- public static final int NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE = 8;
-
- /**
* Returned by getPositionSafe() or getDurationSafe() if the playbackService
* is in an invalid state.
*/
@@ -892,11 +888,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
@Override
- public void playbackSpeedChanged(float s) {
- sendNotificationBroadcast(NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE, 0);
- }
-
- @Override
public void onMediaChanged(boolean reloadUI) {
Log.d(TAG, "reloadUI callback reached");
if (reloadUI) {
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 7af27c016..623ad58bb 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
@@ -348,8 +348,6 @@ public abstract class PlaybackServiceMediaPlayer {
void shouldStop();
- void playbackSpeedChanged(float s);
-
void onMediaChanged(boolean reloadUI);
boolean onMediaPlayerInfo(int code, @StringRes int resourceId);
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 c51286bbf..a52cb99fe 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
@@ -13,6 +13,7 @@ import android.util.Pair;
import android.view.SurfaceHolder;
import androidx.annotation.NonNull;
import de.danoeh.antennapod.core.event.playback.PlaybackServiceEvent;
+import de.danoeh.antennapod.core.event.playback.SpeedChangedEvent;
import de.danoeh.antennapod.model.playback.MediaType;
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
@@ -222,9 +223,6 @@ public abstract class PlaybackController {
case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_END:
onPlaybackEnd();
break;
- case PlaybackService.NOTIFICATION_TYPE_PLAYBACK_SPEED_CHANGE:
- onPlaybackSpeedChange();
- break;
}
}
@@ -232,9 +230,6 @@ public abstract class PlaybackController {
public void onPositionObserverUpdate() {}
-
- public void onPlaybackSpeedChange() {}
-
/**
* Called when the currently displayed information should be refreshed.
*/
@@ -454,7 +449,7 @@ public abstract class PlaybackController {
if (playbackService != null) {
playbackService.setSpeed(speed);
} else {
- onPlaybackSpeedChange();
+ EventBus.getDefault().post(new SpeedChangedEvent(speed));
}
}