fix: use alarm audio stream for alarm sound

Closes: #63
This commit is contained in:
Nishant Mishra
2025-10-08 21:22:36 +05:30
parent bab70e6de1
commit 84daa547d8

View File

@@ -3,6 +3,7 @@ package org.nsh07.pomodoro.service
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Service import android.app.Service
import android.content.Intent import android.content.Intent
import android.media.AudioAttributes
import android.media.MediaPlayer import android.media.MediaPlayer
import android.os.Build import android.os.Build
import android.os.IBinder import android.os.IBinder
@@ -78,7 +79,7 @@ class TimerService : Service() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
timerRepository.serviceRunning = true timerRepository.serviceRunning = true
alarm = MediaPlayer.create(this, timerRepository.alarmSoundUri) alarm = initializeMediaPlayer()
} }
override fun onDestroy() { override fun onDestroy() {
@@ -387,9 +388,29 @@ class TimerService : Service() {
) )
} }
private fun initializeMediaPlayer(): MediaPlayer? {
return try {
MediaPlayer().apply {
setAudioAttributes(
AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_ALARM)
.build()
)
timerRepository.alarmSoundUri?.let {
setDataSource(applicationContext, it)
prepare()
}
}
} catch (e: Exception) {
e.printStackTrace()
null
}
}
fun updateAlarmTone() { fun updateAlarmTone() {
alarm?.release() alarm?.release()
alarm = MediaPlayer.create(this, timerRepository.alarmSoundUri) alarm = initializeMediaPlayer()
} }
suspend fun saveTimeToDb() { suspend fun saveTimeToDb() {
@@ -417,4 +438,4 @@ class TimerService : Service() {
enum class Actions { enum class Actions {
TOGGLE, SKIP, RESET, STOP_ALARM, UPDATE_ALARM_TONE TOGGLE, SKIP, RESET, STOP_ALARM, UPDATE_ALARM_TONE
} }
} }