diff options
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java | 9 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java | 15 |
2 files changed, 14 insertions, 10 deletions
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 fbf061966..111e2d37c 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 @@ -711,9 +711,12 @@ public class PlaybackService extends MediaBrowserServiceCompat { } @Override - public void onSleepTimerAlmostExpired() { - float leftVolume = 0.1f * UserPreferences.getLeftVolume(); - float rightVolume = 0.1f * UserPreferences.getRightVolume(); + public void onSleepTimerAlmostExpired(long timeLeft) { + final float[] multiplicators = {0.1f, 0.2f, 0.3f, 0.3f, 0.3f, 0.4f, 0.4f, 0.4f, 0.6f, 0.8f}; + float multiplicator = multiplicators[Math.max(0, (int) timeLeft / 1000)]; + Log.d(TAG, "onSleepTimerAlmostExpired: " + multiplicator); + float leftVolume = multiplicator * UserPreferences.getLeftVolume(); + float rightVolume = multiplicator * UserPreferences.getRightVolume(); mediaPlayer.setVolume(leftVolume, rightVolume); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java index afa7fcebf..883ba6023 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java @@ -360,7 +360,8 @@ public class PlaybackServiceTaskManager { class SleepTimer implements Runnable { private static final String TAG = "SleepTimer"; private static final long UPDATE_INTERVAL = 1000L; - private static final long NOTIFICATION_THRESHOLD = 10000; + public static final long NOTIFICATION_THRESHOLD = 10000; + private boolean hasVibrated = false; private final long waitingTime; private long timeLeft; private ShakeListener shakeListener; @@ -390,7 +391,6 @@ public class PlaybackServiceTaskManager { @Override public void run() { Log.d(TAG, "Starting"); - boolean notifiedAlmostExpired = false; long lastTick = System.currentTimeMillis(); while (timeLeft > 0) { try { @@ -405,19 +405,19 @@ public class PlaybackServiceTaskManager { timeLeft -= now - lastTick; lastTick = now; - if (timeLeft < NOTIFICATION_THRESHOLD && !notifiedAlmostExpired) { + if (timeLeft < NOTIFICATION_THRESHOLD) { Log.d(TAG, "Sleep timer is about to expire"); - if (SleepTimerPreferences.vibrate()) { + if (SleepTimerPreferences.vibrate() && !hasVibrated) { Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); if (v != null) { v.vibrate(500); + hasVibrated = true; } } if (shakeListener == null && SleepTimerPreferences.shakeToReset()) { shakeListener = new ShakeListener(context, this); } - postCallback(callback::onSleepTimerAlmostExpired); - notifiedAlmostExpired = true; + postCallback(() -> callback.onSleepTimerAlmostExpired(timeLeft)); } if (timeLeft <= 0) { Log.d(TAG, "Sleep timer expired"); @@ -425,6 +425,7 @@ public class PlaybackServiceTaskManager { shakeListener.pause(); shakeListener = null; } + hasVibrated = false; if (!Thread.currentThread().isInterrupted()) { postCallback(callback::onSleepTimerExpired); } else { @@ -461,7 +462,7 @@ public class PlaybackServiceTaskManager { public interface PSTMCallback { void positionSaverTick(); - void onSleepTimerAlmostExpired(); + void onSleepTimerAlmostExpired(long timeLeft); void onSleepTimerExpired(); |