Add:Android sleep timer setting to disable audio fade out #320

This commit is contained in:
advplyr 2023-02-04 17:39:41 -06:00
parent 5e98a4ff2f
commit 39909a398e
3 changed files with 32 additions and 7 deletions

View file

@ -102,7 +102,8 @@ data class DeviceSettings(
var autoSleepTimer: Boolean, var autoSleepTimer: Boolean,
var autoSleepTimerStartTime: String, var autoSleepTimerStartTime: String,
var autoSleepTimerEndTime: String, var autoSleepTimerEndTime: String,
var sleepTimerLength: Long // Time in milliseconds var sleepTimerLength: Long, // Time in milliseconds
var disableSleepTimerFadeOut: Boolean
) { ) {
companion object { companion object {
// Static method to get default device settings // Static method to get default device settings
@ -119,7 +120,8 @@ data class DeviceSettings(
autoSleepTimer = false, autoSleepTimer = false,
autoSleepTimerStartTime = "22:00", autoSleepTimerStartTime = "22:00",
autoSleepTimerEndTime = "06:00", autoSleepTimerEndTime = "06:00",
sleepTimerLength = 900000L // 15 minutes sleepTimerLength = 900000L, // 15 minutes
disableSleepTimerFadeOut = false
) )
} }
} }

View file

@ -108,10 +108,16 @@ class SleepTimerManager constructor(private val playerNotificationService: Playe
clearSleepTimer() clearSleepTimer()
sleepTimerFinishedAt = System.currentTimeMillis() sleepTimerFinishedAt = System.currentTimeMillis()
} else if (sleepTimeSecondsRemaining <= 60) { } else if (sleepTimeSecondsRemaining <= 60) {
// Start fading out audio if (DeviceManager.deviceData.deviceSettings?.disableSleepTimerFadeOut == true) {
val volume = sleepTimeSecondsRemaining / 60F // Set volume to 1 in case setting was enabled while fading
Log.d(tag, "SLEEP VOLUME FADE $volume | ${sleepTimeSecondsRemaining}s remaining") setVolume(1f)
setVolume(volume) } else {
// Start fading out audio down to 10% volume
val percentToReduce = 1 - (sleepTimeSecondsRemaining / 60F)
val volume = 1f - (percentToReduce * 0.9f)
Log.d(tag, "SLEEP VOLUME FADE $volume | ${sleepTimeSecondsRemaining}s remaining")
setVolume(volume)
}
} }
} }
} }

View file

@ -58,6 +58,13 @@
<ui-text-input :value="shakeSensitivityOption" readonly append-icon="expand_more" style="width: 145px; max-width: 145px" /> <ui-text-input :value="shakeSensitivityOption" readonly append-icon="expand_more" style="width: 145px; max-width: 145px" />
</div> </div>
</div> </div>
<div class="flex items-center py-3" @click="toggleDisableSleepTimerFadeOut">
<div class="w-10 flex justify-center">
<ui-toggle-switch v-model="settings.disableSleepTimerFadeOut" @input="saveSettings" />
</div>
<p class="pl-4">Disable audio fade out</p>
<span class="material-icons-outlined ml-2" @click.stop="showInfo('disableSleepTimerFadeOut')">info</span>
</div>
<div class="flex items-center py-3" @click="toggleAutoSleepTimer"> <div class="flex items-center py-3" @click="toggleAutoSleepTimer">
<div class="w-10 flex justify-center"> <div class="w-10 flex justify-center">
<ui-toggle-switch v-model="settings.autoSleepTimer" @input="saveSettings" /> <ui-toggle-switch v-model="settings.autoSleepTimer" @input="saveSettings" />
@ -109,7 +116,8 @@ export default {
autoSleepTimer: false, autoSleepTimer: false,
autoSleepTimerStartTime: '22:00', autoSleepTimerStartTime: '22:00',
autoSleepTimerEndTime: '06:00', autoSleepTimerEndTime: '06:00',
sleepTimerLength: 900000 // 15 minutes sleepTimerLength: 900000, // 15 minutes
disableSleepTimerFadeOut: false
}, },
lockCurrentOrientation: false, lockCurrentOrientation: false,
settingInfo: { settingInfo: {
@ -120,6 +128,10 @@ export default {
autoSleepTimer: { autoSleepTimer: {
name: 'Auto Sleep Timer', name: 'Auto Sleep Timer',
message: 'When playing media between the specified start and end times a sleep timer will automatically start.' message: 'When playing media between the specified start and end times a sleep timer will automatically start.'
},
disableSleepTimerFadeOut: {
name: 'Disable audio fade out',
message: 'Audio volume will start decreasing when there is less than 1 minute remaining on the sleep timer. Enable this setting to not fade out.'
} }
}, },
hapticFeedbackItems: [ hapticFeedbackItems: [
@ -263,6 +275,10 @@ export default {
this.settings.autoSleepTimer = !this.settings.autoSleepTimer this.settings.autoSleepTimer = !this.settings.autoSleepTimer
this.saveSettings() this.saveSettings()
}, },
toggleDisableSleepTimerFadeOut() {
this.settings.disableSleepTimerFadeOut = !this.settings.disableSleepTimerFadeOut
this.saveSettings()
},
toggleDisableShakeToResetSleepTimer() { toggleDisableShakeToResetSleepTimer() {
this.settings.disableShakeToResetSleepTimer = !this.settings.disableShakeToResetSleepTimer this.settings.disableShakeToResetSleepTimer = !this.settings.disableShakeToResetSleepTimer
this.saveSettings() this.saveSettings()
@ -330,6 +346,7 @@ export default {
this.settings.autoSleepTimerStartTime = deviceSettings.autoSleepTimerStartTime || '22:00' this.settings.autoSleepTimerStartTime = deviceSettings.autoSleepTimerStartTime || '22:00'
this.settings.autoSleepTimerEndTime = deviceSettings.autoSleepTimerEndTime || '06:00' this.settings.autoSleepTimerEndTime = deviceSettings.autoSleepTimerEndTime || '06:00'
this.settings.sleepTimerLength = !isNaN(deviceSettings.sleepTimerLength) ? deviceSettings.sleepTimerLength : 900000 // 15 minutes this.settings.sleepTimerLength = !isNaN(deviceSettings.sleepTimerLength) ? deviceSettings.sleepTimerLength : 900000 // 15 minutes
this.settings.disableSleepTimerFadeOut = !!deviceSettings.disableSleepTimerFadeOut
} }
}, },
mounted() { mounted() {