일회성 알람의 경우 알람이 울리면 날짜를 다음날로 변경하고 isEnable을 false로 변경한다.
This commit is contained in:
parent
4fc39f10b1
commit
a618903f0f
|
@ -40,7 +40,7 @@ android {
|
||||||
applicationId "kr.co.vividnext.sodalive"
|
applicationId "kr.co.vividnext.sodalive"
|
||||||
minSdk 23
|
minSdk 23
|
||||||
targetSdk 33
|
targetSdk 33
|
||||||
versionCode 87
|
versionCode 88
|
||||||
versionName "1.13.2"
|
versionName "1.13.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import androidx.room.PrimaryKey
|
||||||
data class Alarm(
|
data class Alarm(
|
||||||
@PrimaryKey(autoGenerate = true) val id: Int = 0,
|
@PrimaryKey(autoGenerate = true) val id: Int = 0,
|
||||||
val title: String,
|
val title: String,
|
||||||
val time: Long,
|
var time: Long,
|
||||||
val days: List<String>,
|
val days: List<String>,
|
||||||
val contentId: Long,
|
val contentId: Long,
|
||||||
val contentTitle: String,
|
val contentTitle: String,
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import com.orhanobut.logger.Logger
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
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.Alarm
|
||||||
import kr.co.vividnext.sodalive.mypage.alarm.db.AlarmDatabase
|
import kr.co.vividnext.sodalive.mypage.alarm.db.AlarmDatabase
|
||||||
import kr.co.vividnext.sodalive.mypage.alarm.scheduler.AlarmScheduler
|
import kr.co.vividnext.sodalive.mypage.alarm.scheduler.AlarmScheduler
|
||||||
|
import java.util.Calendar
|
||||||
|
|
||||||
class AlarmReceiver : BroadcastReceiver() {
|
class AlarmReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
|
||||||
val alarmId = intent.getIntExtra(Constants.EXTRA_ALARM_ID, -1)
|
val alarmId = intent.getIntExtra(Constants.EXTRA_ALARM_ID, -1)
|
||||||
|
|
||||||
if (alarmId > 0) {
|
if (alarmId > 0) {
|
||||||
|
@ -36,6 +35,18 @@ class AlarmReceiver : BroadcastReceiver() {
|
||||||
val scheduler = AlarmScheduler(context)
|
val scheduler = AlarmScheduler(context)
|
||||||
if (value.days.isNotEmpty()) {
|
if (value.days.isNotEmpty()) {
|
||||||
scheduler.setAlarm(value)
|
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)
|
alarmLiveData.removeObserver(this)
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,6 @@ class AlarmScheduler(private val context: Context) {
|
||||||
|
|
||||||
val info = AlarmManager.AlarmClockInfo(calendar.timeInMillis, alarmIntent)
|
val info = AlarmManager.AlarmClockInfo(calendar.timeInMillis, alarmIntent)
|
||||||
alarmManager.setAlarmClock(info, alarmIntent)
|
alarmManager.setAlarmClock(info, alarmIntent)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue