Merge pull request #465 from rawlin/volume-fix

#209 - Using Audio Manager to gradually increase volume of the alarm
This commit is contained in:
Tibor Kaputa 2023-06-28 09:29:33 +02:00 committed by GitHub
commit 7c262c9aa6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 7 deletions

View File

@ -28,7 +28,8 @@ import com.simplemobiletools.commons.helpers.isOreoPlus
import kotlinx.android.synthetic.main.activity_reminder.*
class ReminderActivity : SimpleActivity() {
private val INCREASE_VOLUME_DELAY = 3000L
private val INCREASE_VOLUME_DELAY = 300L
private val MAX_VOL = 10f // max volume set to level 10
private val increaseVolumeHandler = Handler()
private val maxReminderDurationHandler = Handler()
@ -37,6 +38,7 @@ class ReminderActivity : SimpleActivity() {
private var didVibrate = false
private var wasAlarmSnoozed = false
private var alarm: Alarm? = null
private var audioManager: AudioManager? = null
private var mediaPlayer: MediaPlayer? = null
private var vibrator: Vibrator? = null
private var lastVolumeValue = 0.1f
@ -168,8 +170,10 @@ class ReminderActivity : SimpleActivity() {
}
private fun setupEffects() {
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
if (!isAlarmReminder || !config.increaseVolumeGradually) {
lastVolumeValue = 1f
lastVolumeValue = MAX_VOL
}
val doVibrate = if (alarm != null) alarm!!.vibrate else config.timerVibrate
@ -197,18 +201,18 @@ class ReminderActivity : SimpleActivity() {
}
if (config.increaseVolumeGradually) {
scheduleVolumeIncrease()
scheduleVolumeIncrease(MAX_VOL)
}
} catch (e: Exception) {
}
}
}
private fun scheduleVolumeIncrease() {
private fun scheduleVolumeIncrease(maxVolume: Float) {
increaseVolumeHandler.postDelayed({
lastVolumeValue = Math.min(lastVolumeValue + 0.1f, 1f)
mediaPlayer?.setVolume(lastVolumeValue, lastVolumeValue)
scheduleVolumeIncrease()
lastVolumeValue = (lastVolumeValue + 0.1f).coerceAtMost(maxVolume)
audioManager?.setStreamVolume(AudioManager.STREAM_ALARM, lastVolumeValue.toInt(), 0)
scheduleVolumeIncrease(maxVolume)
}, INCREASE_VOLUME_DELAY)
}