diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt
index 93fd4c72..6bda6d1b 100644
--- a/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt
+++ b/android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt
@@ -103,6 +103,8 @@ data class DeviceSettings(
var autoSleepTimer: Boolean,
var autoSleepTimerStartTime: String,
var autoSleepTimerEndTime: String,
+ var autoSleepTimerAutoRewind: Boolean,
+ var autoSleepTimerAutoRewindTime: Long, //Time in milliseconds
var sleepTimerLength: Long, // Time in milliseconds
var disableSleepTimerFadeOut: Boolean,
var disableSleepTimerResetFeedback: Boolean
@@ -123,6 +125,8 @@ data class DeviceSettings(
autoSleepTimerStartTime = "22:00",
autoSleepTimerEndTime = "06:00",
sleepTimerLength = 900000L, // 15 minutes
+ autoSleepTimerAutoRewind = false,
+ autoSleepTimerAutoRewindTime = 300000L,
disableSleepTimerFadeOut = false,
disableSleepTimerResetFeedback = false
)
@@ -142,6 +146,7 @@ data class DeviceSettings(
@get:JsonIgnore
val autoSleepTimerEndMinute get() = autoSleepTimerEndTime.split(":")[1].toInt()
+
@JsonIgnore
fun getShakeThresholdGravity() : Float { // Used in ShakeDetector
return if (shakeSensitivity == ShakeSensitivitySetting.VERY_HIGH) 1.2f
diff --git a/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt b/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt
index 47c3113c..e5413598 100644
--- a/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt
+++ b/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt
@@ -1,6 +1,7 @@
package com.audiobookshelf.app.managers
import android.content.Context
+import android.media.metrics.PlaybackSession
import android.os.*
import android.util.Log
import com.audiobookshelf.app.device.DeviceManager
@@ -343,6 +344,10 @@ class SleepTimerManager constructor(private val playerNotificationService: Playe
if (currentCalendar.after(startCalendar) && currentCalendar.before(endCalendar)) {
Log.i(tag, "Current hour $currentHour is between ${deviceSettings.autoSleepTimerStartTime} and ${deviceSettings.autoSleepTimerEndTime} - starting sleep timer")
+ // Automatically Rewind in the book if settings is enabled
+ if (deviceSettings.autoSleepTimerAutoRewind) {
+ playerNotificationService.seekBackward(deviceSettings.autoSleepTimerAutoRewindTime)
+ }
// Set sleep timer
// When sleepTimerLength is 0 then use end of chapter/track time
if (deviceSettings.sleepTimerLength == 0L) {
diff --git a/components/modals/AutoSleepTimerRewindLengthModal.vue b/components/modals/AutoSleepTimerRewindLengthModal.vue
new file mode 100644
index 00000000..2f13df25
--- /dev/null
+++ b/components/modals/AutoSleepTimerRewindLengthModal.vue
@@ -0,0 +1,95 @@
+
+ Auto Rewind Time {{ manualTimeoutMin }} min
+
+
+
Auto Sleep Timer Auto Rewind
+ +Auto Rewind Time
+