diff --git a/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt b/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt index 7f1e99d5..cb68eb6a 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt @@ -19,7 +19,7 @@ import org.json.JSONException class FolderScanner(var ctx: Context) { private val tag = "FolderScanner" - var jacksonMapper = jacksonObjectMapper().enable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature()) + private var jacksonMapper = jacksonObjectMapper().enable(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature()) data class DownloadItemScanResult(val localLibraryItem:LocalLibraryItem, var localMediaProgress:LocalMediaProgress?) diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/SleepTimerManager.kt b/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt similarity index 90% rename from android/app/src/main/java/com/audiobookshelf/app/player/SleepTimerManager.kt rename to android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt index cc174af1..067034fe 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/SleepTimerManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt @@ -1,16 +1,28 @@ -package com.audiobookshelf.app.player +package com.audiobookshelf.app.managers import android.content.Context import android.os.* import android.util.Log import com.audiobookshelf.app.device.DeviceManager +import com.audiobookshelf.app.player.PlayerNotificationService +import com.audiobookshelf.app.player.SLEEP_TIMER_WAKE_UP_EXPIRATION import java.util.* import kotlin.concurrent.schedule import kotlin.math.roundToInt const val SLEEP_EXTENSION_TIME = 900000L // 15m -class SleepTimerManager constructor(val playerNotificationService:PlayerNotificationService) { +class ShakeSensitivity { + companion object { + val veryHigh = 1f + val high = 1.3f + val medium = 1.6f + val low = 2f + val veryLow = 2.7f + } +} + +class SleepTimerManager constructor(val playerNotificationService: PlayerNotificationService) { private val tag = "SleepTimerManager" private var sleepTimerTask:TimerTask? = null @@ -121,7 +133,7 @@ class SleepTimerManager constructor(val playerNotificationService:PlayerNotifica return true } - fun clearSleepTimer() { + private fun clearSleepTimer() { sleepTimerTask?.cancel() sleepTimerTask = null sleepTimerEndTime = 0 @@ -163,20 +175,6 @@ class SleepTimerManager constructor(val playerNotificationService:PlayerNotifica } } - private fun extendSleepTime() { - if (!sleepTimerRunning) return - setVolume(1F) - if (sleepTimerEndTime == 0L) { - sleepTimerLength += sleepTimerExtensionTime - if (sleepTimerLength + getCurrentTime() > getDuration()) sleepTimerLength = getDuration() - getCurrentTime() - } else { - sleepTimerEndTime += sleepTimerExtensionTime - if (sleepTimerEndTime > getDuration()) sleepTimerEndTime = getDuration() - } - - playerNotificationService.clientEventEmitter?.onSleepTimerSet(getSleepTimerTimeRemainingSeconds()) - } - fun checkShouldExtendSleepTimer() { if (!sleepTimerRunning) { if (sleepTimerFinishedAt <= 0L) return @@ -195,11 +193,11 @@ class SleepTimerManager constructor(val playerNotificationService:PlayerNotifica play() return } - // Only extend if within 30 seconds of finishing - val sleepTimeRemaining = getSleepTimerTimeRemainingSeconds() - if (sleepTimeRemaining <= 30) { + + // Does not apply to chapter sleep timers + if (sleepTimerEndTime == 0L) { vibrate() - extendSleepTime() + setSleepTimer(sleepTimerExtensionTime, false) } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index b8dc19e7..9137d7fc 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -32,6 +32,7 @@ import com.audiobookshelf.app.data.* import com.audiobookshelf.app.data.DeviceInfo import com.audiobookshelf.app.device.DeviceManager import com.audiobookshelf.app.managers.DbManager +import com.audiobookshelf.app.managers.SleepTimerManager import com.audiobookshelf.app.media.MediaManager import com.audiobookshelf.app.server.ApiHandler import com.fasterxml.jackson.annotation.JsonIgnore @@ -394,7 +395,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { SkipForwardCustomActionProvider(), )) } - mediaSessionConnector.setCustomActionProviders(*customActionProviders.toTypedArray()); + mediaSessionConnector.setCustomActionProviders(*customActionProviders.toTypedArray()) playbackSession.mediaPlayer = getMediaPlayer() @@ -640,10 +641,6 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { return currentPlaybackSession?.clone() } - fun getCurrentPlaybackSessionId() :String? { - return currentPlaybackSession?.id - } - fun getCurrentBookChapter():BookChapter? { return currentPlaybackSession?.getChapterForTime(this.getCurrentTime()) } @@ -828,7 +825,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { clientEventEmitter?.onPlaybackClosed() PlayerListener.lastPauseTime = 0 isClosed = true - stopForeground(true) + stopForeground(Service.STOP_FOREGROUND_REMOVE) stopSelf() } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/ShakeDetector.kt b/android/app/src/main/java/com/audiobookshelf/app/player/ShakeDetector.kt index c6126e31..2118fdcd 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/ShakeDetector.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/ShakeDetector.kt @@ -59,7 +59,7 @@ class ShakeDetector : SensorEventListener { * from the Google Play Store and run it to see how * many G's it takes to register a shake */ - private const val SHAKE_THRESHOLD_GRAVITY = 1.5f // orig 2.7f + var SHAKE_THRESHOLD_GRAVITY = 1.5f // orig 2.7f private const val SHAKE_SLOP_TIME_MS = 500 private const val SHAKE_COUNT_RESET_TIME_MS = 3000 } diff --git a/pages/settings.vue b/pages/settings.vue index 340baa6b..a563846d 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -71,7 +71,7 @@ export default { settingInfo: { disableShakeToResetSleepTimer: { name: 'Disable shake to reset sleep timer', - message: 'The sleep timer will start fading out when 30s is remaining. Shaking your device will reset the timer if it is within 30s OR has finished less than 2 mintues ago. Enable this setting to disable that feature.' + message: 'Shaking your device while the timer is running OR within 2 minutes of the timer expiring will reset the sleep timer. Enable this setting to disable shake to reset.' } }, lockCurrentOrientation: false,