diff options
Diffstat (limited to 'core/src')
4 files changed, 38 insertions, 45 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 2fb37cc05..edcaacefc 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 @@ -745,10 +745,12 @@ public class PlaybackService extends MediaBrowserServiceCompat { setupPositionUpdater(); stateManager.validStartCommandWasReceived(); // set sleep timer if auto-enabled - if (newInfo.oldPlayerStatus != null && newInfo.oldPlayerStatus != PlayerStatus.SEEKING && - SleepTimerPreferences.autoEnable() && !sleepTimerActive()) { + if (newInfo.oldPlayerStatus != null && newInfo.oldPlayerStatus != PlayerStatus.SEEKING + && SleepTimerPreferences.autoEnable() && !sleepTimerActive()) { setSleepTimer(SleepTimerPreferences.timerMillis(), SleepTimerPreferences.shakeToReset(), SleepTimerPreferences.vibrate()); + EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_enabled_label), + PlaybackService.this::disableSleepTimer)); } break; @@ -1007,17 +1009,14 @@ public class PlaybackService extends MediaBrowserServiceCompat { } public void setSleepTimer(long waitingTime, boolean shakeToReset, boolean vibrate) { - Log.d(TAG, "Setting sleep timer to " + Long.toString(waitingTime) + " milliseconds"); + Log.d(TAG, "Setting sleep timer to " + waitingTime + " milliseconds"); taskManager.setSleepTimer(waitingTime, shakeToReset, vibrate); sendNotificationBroadcast(NOTIFICATION_TYPE_SLEEPTIMER_UPDATE, 0); - EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_enabled_label), - this::disableSleepTimer)); } public void disableSleepTimer() { taskManager.disableSleepTimer(); sendNotificationBroadcast(NOTIFICATION_TYPE_SLEEPTIMER_UPDATE, 0); - EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_disabled_label))); } private void sendNotificationBroadcast(int type, int code) { 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 736cf8cf2..62eda415e 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 @@ -397,41 +397,42 @@ public class PlaybackServiceTaskManager { while (timeLeft > 0) { try { Thread.sleep(UPDATE_INTERVAL); - long now = System.currentTimeMillis(); - timeLeft -= now - lastTick; - lastTick = now; - - if(timeLeft < NOTIFICATION_THRESHOLD && !notifiedAlmostExpired) { - Log.d(TAG, "Sleep timer is about to expire"); - if(vibrate) { - Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); - if(v != null) { - v.vibrate(500); - } - } - if(shakeListener == null && shakeToReset) { - shakeListener = new ShakeListener(context, this); - } - postCallback(callback::onSleepTimerAlmostExpired); - notifiedAlmostExpired = true; - } - if (timeLeft <= 0) { - Log.d(TAG, "Sleep timer expired"); - if(shakeListener != null) { - shakeListener.pause(); - shakeListener = null; - } - if (!Thread.currentThread().isInterrupted()) { - postCallback(callback::onSleepTimerExpired); - } else { - Log.d(TAG, "Sleep timer interrupted"); - } - } } catch (InterruptedException e) { Log.d(TAG, "Thread was interrupted while waiting"); e.printStackTrace(); break; } + + long now = System.currentTimeMillis(); + timeLeft -= now - lastTick; + lastTick = now; + + if (timeLeft < NOTIFICATION_THRESHOLD && !notifiedAlmostExpired) { + Log.d(TAG, "Sleep timer is about to expire"); + if (vibrate) { + Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); + if (v != null) { + v.vibrate(500); + } + } + if (shakeListener == null && shakeToReset) { + shakeListener = new ShakeListener(context, this); + } + postCallback(callback::onSleepTimerAlmostExpired); + notifiedAlmostExpired = true; + } + if (timeLeft <= 0) { + Log.d(TAG, "Sleep timer expired"); + if (shakeListener != null) { + shakeListener.pause(); + shakeListener = null; + } + if (!Thread.currentThread().isInterrupted()) { + postCallback(callback::onSleepTimerExpired); + } else { + Log.d(TAG, "Sleep timer interrupted"); + } + } } } 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 e7f6ad4f1..cb22fbcc9 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 @@ -628,10 +628,6 @@ public class PlaybackController { return playbackService != null && playbackService.sleepTimerActive(); } - public boolean sleepTimerNotActive() { - return playbackService != null && !playbackService.sleepTimerActive(); - } - public void disableSleepTimer() { if (playbackService != null) { playbackService.disableSleepTimer(); diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index d2774ac7a..8c6697c4c 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -312,6 +312,7 @@ <string name="clear_queue_confirmation_msg">Please confirm that you want to clear the queue of ALL of the episodes in it</string> <string name="sort_old_to_new">Old to new</string> <string name="sort_new_to_old">New to old</string> + <string name="time_left_label">Time left:\u0020</string> <!-- Variable Speed --> <string name="download_plugin_label">Download Plugin</string> @@ -574,12 +575,9 @@ <!-- Sleep timer --> <string name="set_sleeptimer_label">Set sleep timer</string> <string name="disable_sleeptimer_label">Disable sleep timer</string> - <string name="enter_time_here_label">Enter time</string> <string name="sleep_timer_label">Sleep timer</string> - <string name="time_left_label">Time left:\u0020</string> <string name="time_dialog_invalid_input">Invalid input, time has to be an integer</string> - <string name="timer_about_to_expire_label"><b>When timer is about to expire:</b></string> - <string name="shake_to_reset_label">Shake to reset timer</string> + <string name="shake_to_reset_label">Shake to reset</string> <string name="timer_vibration_label">Vibrate</string> <string name="time_seconds">seconds</string> <string name="time_minutes">minutes</string> @@ -598,7 +596,6 @@ </plurals> <string name="auto_enable_label">Auto-enable</string> <string name="sleep_timer_enabled_label">Sleep timer enabled</string> - <string name="sleep_timer_disabled_label">Sleep timer disabled</string> <!-- gpodder.net --> <string name="gpodnet_taglist_header">CATEGORIES</string> |