Update:Sleep timer shake to reset anytime while timer is running #260

This commit is contained in:
advplyr 2023-01-28 16:07:03 -06:00
parent 860c7aac80
commit f06afbd08c
5 changed files with 25 additions and 30 deletions

View file

@ -19,7 +19,7 @@ import org.json.JSONException
class FolderScanner(var ctx: Context) { class FolderScanner(var ctx: Context) {
private val tag = "FolderScanner" 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?) data class DownloadItemScanResult(val localLibraryItem:LocalLibraryItem, var localMediaProgress:LocalMediaProgress?)

View file

@ -1,16 +1,28 @@
package com.audiobookshelf.app.player package com.audiobookshelf.app.managers
import android.content.Context import android.content.Context
import android.os.* import android.os.*
import android.util.Log import android.util.Log
import com.audiobookshelf.app.device.DeviceManager 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 java.util.*
import kotlin.concurrent.schedule import kotlin.concurrent.schedule
import kotlin.math.roundToInt import kotlin.math.roundToInt
const val SLEEP_EXTENSION_TIME = 900000L // 15m 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 val tag = "SleepTimerManager"
private var sleepTimerTask:TimerTask? = null private var sleepTimerTask:TimerTask? = null
@ -121,7 +133,7 @@ class SleepTimerManager constructor(val playerNotificationService:PlayerNotifica
return true return true
} }
fun clearSleepTimer() { private fun clearSleepTimer() {
sleepTimerTask?.cancel() sleepTimerTask?.cancel()
sleepTimerTask = null sleepTimerTask = null
sleepTimerEndTime = 0 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() { fun checkShouldExtendSleepTimer() {
if (!sleepTimerRunning) { if (!sleepTimerRunning) {
if (sleepTimerFinishedAt <= 0L) return if (sleepTimerFinishedAt <= 0L) return
@ -195,11 +193,11 @@ class SleepTimerManager constructor(val playerNotificationService:PlayerNotifica
play() play()
return return
} }
// Only extend if within 30 seconds of finishing
val sleepTimeRemaining = getSleepTimerTimeRemainingSeconds() // Does not apply to chapter sleep timers
if (sleepTimeRemaining <= 30) { if (sleepTimerEndTime == 0L) {
vibrate() vibrate()
extendSleepTime() setSleepTimer(sleepTimerExtensionTime, false)
} }
} }

View file

@ -32,6 +32,7 @@ import com.audiobookshelf.app.data.*
import com.audiobookshelf.app.data.DeviceInfo import com.audiobookshelf.app.data.DeviceInfo
import com.audiobookshelf.app.device.DeviceManager import com.audiobookshelf.app.device.DeviceManager
import com.audiobookshelf.app.managers.DbManager import com.audiobookshelf.app.managers.DbManager
import com.audiobookshelf.app.managers.SleepTimerManager
import com.audiobookshelf.app.media.MediaManager import com.audiobookshelf.app.media.MediaManager
import com.audiobookshelf.app.server.ApiHandler import com.audiobookshelf.app.server.ApiHandler
import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.annotation.JsonIgnore
@ -394,7 +395,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
SkipForwardCustomActionProvider(), SkipForwardCustomActionProvider(),
)) ))
} }
mediaSessionConnector.setCustomActionProviders(*customActionProviders.toTypedArray()); mediaSessionConnector.setCustomActionProviders(*customActionProviders.toTypedArray())
playbackSession.mediaPlayer = getMediaPlayer() playbackSession.mediaPlayer = getMediaPlayer()
@ -640,10 +641,6 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
return currentPlaybackSession?.clone() return currentPlaybackSession?.clone()
} }
fun getCurrentPlaybackSessionId() :String? {
return currentPlaybackSession?.id
}
fun getCurrentBookChapter():BookChapter? { fun getCurrentBookChapter():BookChapter? {
return currentPlaybackSession?.getChapterForTime(this.getCurrentTime()) return currentPlaybackSession?.getChapterForTime(this.getCurrentTime())
} }
@ -828,7 +825,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
clientEventEmitter?.onPlaybackClosed() clientEventEmitter?.onPlaybackClosed()
PlayerListener.lastPauseTime = 0 PlayerListener.lastPauseTime = 0
isClosed = true isClosed = true
stopForeground(true) stopForeground(Service.STOP_FOREGROUND_REMOVE)
stopSelf() stopSelf()
} }

View file

@ -59,7 +59,7 @@ class ShakeDetector : SensorEventListener {
* from the Google Play Store and run it to see how * from the Google Play Store and run it to see how
* many G's it takes to register a shake * 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_SLOP_TIME_MS = 500
private const val SHAKE_COUNT_RESET_TIME_MS = 3000 private const val SHAKE_COUNT_RESET_TIME_MS = 3000
} }

View file

@ -71,7 +71,7 @@ export default {
settingInfo: { settingInfo: {
disableShakeToResetSleepTimer: { disableShakeToResetSleepTimer: {
name: 'Disable shake to reset sleep timer', 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, lockCurrentOrientation: false,