일회성 알람의 경우 알람이 울리면 날짜를 다음날로 변경하고 isEnable을 false로 변경한다.
This commit is contained in:
klaus 2024-07-29 12:17:48 +09:00
parent 4fc39f10b1
commit a618903f0f
4 changed files with 15 additions and 5 deletions

View File

@ -40,7 +40,7 @@ android {
applicationId "kr.co.vividnext.sodalive"
minSdk 23
targetSdk 33
versionCode 87
versionCode 88
versionName "1.13.2"
}

View File

@ -7,7 +7,7 @@ import androidx.room.PrimaryKey
data class Alarm(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
val title: String,
val time: Long,
var time: Long,
val days: List<String>,
val contentId: Long,
val contentTitle: String,

View File

@ -4,7 +4,6 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import androidx.lifecycle.Observer
import com.orhanobut.logger.Logger
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -14,10 +13,10 @@ import kr.co.vividnext.sodalive.mypage.alarm.AlarmActivity
import kr.co.vividnext.sodalive.mypage.alarm.db.Alarm
import kr.co.vividnext.sodalive.mypage.alarm.db.AlarmDatabase
import kr.co.vividnext.sodalive.mypage.alarm.scheduler.AlarmScheduler
import java.util.Calendar
class AlarmReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val alarmId = intent.getIntExtra(Constants.EXTRA_ALARM_ID, -1)
if (alarmId > 0) {
@ -36,6 +35,18 @@ class AlarmReceiver : BroadcastReceiver() {
val scheduler = AlarmScheduler(context)
if (value.days.isNotEmpty()) {
scheduler.setAlarm(value)
} else {
scheduler.cancelAlarm(value)
val calendar = Calendar.getInstance()
calendar.timeInMillis = value.time
calendar.add(Calendar.DAY_OF_YEAR, 1)
value.time = calendar.timeInMillis
value.isEnabled = false
CoroutineScope(Dispatchers.IO).launch {
alarmDao.updateAlarm(value)
}
}
alarmLiveData.removeObserver(this)
}

View File

@ -57,7 +57,6 @@ class AlarmScheduler(private val context: Context) {
val info = AlarmManager.AlarmClockInfo(calendar.timeInMillis, alarmIntent)
alarmManager.setAlarmClock(info, alarmIntent)
}
}