반응형
알람을 설정하기전
Calendar 클래스를 이용해 알람시간을 정합니다.
var calendar = Calendar.getInstance()
calendar.set(Calendar.YEAR, 2020)
calendar.set(Calendar.MONTH, 3)
calendar.set(Calendar.DAY_OF_MONTH, 27)
calendar.set(Calendar.HOUR_OF_DAY, 11)
calendar.set(Calendar.MINUTE, 30)
calendar.set(Calendar.SECOND, 0)
2020년 3월 27일 11시 30분 0초에 알람
알람설정
AlarmManager을 이용해 알람을 설정합니다.
안드로이드 버전별로 알람을 설정할 수 있습니다.
// 알람 Intent
val alarmIntent = Intent(context, AlarmBroadcastReceiver::class.java).apply {
action = "com.check.up.setAlarm" // 액션
}
alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
var pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT)
if (Build.VERSION.SDK_INT >= 23) { // 버전별로 알람설정
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
}
else {
if (Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
}
}
alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent) 알람매니저로 알람을 설정합니다.
time은 Long 타입입니다.
알람취소
AlarmManager을 이용해 알람을 취소합니다.
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmIntent = Intent(context, alarmReceiver).apply {
action = "com.check.up.setAlarm"
}
val pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT)
alarmManager.cancel(pendingIntent) // 알람취소
pendingIntent.cancel() // PendingIntent 취소
알람을 취소할때는 PendingIntent requestCode가 알람설정 했을때와 같은 값이어야 합니다.
그런데 requestCode가 같은데 취소가 불가 하다면 알람설정 했을때 Intent 액션값과 똑같이 인텐트에 추가하여야 합니다.
반응형
'프로그래밍' 카테고리의 다른 글
[Kotlin]코틀린 해당 월의 일(day)갯수 계산 (0) | 2021.01.15 |
---|---|
[Kotlin] 두 날짜간 차이 구하기 timeInMillis (0) | 2020.08.21 |
[Kotlin] 안드로이드 앱 비밀번호 잠금 구현 (0) | 2020.05.10 |
파이썬 turtle로 태극기 태극 문양 그리기 (0) | 2019.04.08 |