매시 정각에 알림을 해줘야 할 요구사항이 들어와 AlarmManager를 사용해 보았다.
안드로이드 develop사이트를 참고하였으며
https://developer.android.com/training/scheduling/alarms
적용 후 현상/느낌? 에 대해서도 정리해보자
사용법은 간단하다.
응답을 받을 브로드캐스트 리시버를 생성하고 AlarmManager를 통해 트리거 시간과 반복 시간 그리고 생성한 브로드캐스트 리시버를 세팅해하게 되면 끝이다.
브로드캐스트 리시버를 생성하고
class AlarmBroadCastReceiver : BroadcastReceiver() {
override fun onReceive(p0: Context?, p1: Intent?) {
//알람을 받아보자
}
}
AndroidManifest에 등록한다.
<receiver android:name="com.normal.sample.AlarmBroadCastReceiver"></receiver>
그리고 세팅을 원하는 위치에 하기와 같이 반복 알람 설정을 하면 끝이다. 매우 간단하다.
나는 정각 알림을 구현하였기 때문에 트리거 타임을 현재시간 기준으로 다음 정각으로 하고 반복 시간을 INTERVAL_HOUR로 설정했다.
val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
val triggerTime = Calendar.getInstance()
triggerTime.set(Calendar.HOUR_OF_DAY, triggerTime.get(Calendar.HOUR_OF_DAY) + 1)
triggerTime.set(Calendar.MINUTE, 0)
triggerTime.set(Calendar.SECOND, 0)
triggerTime.set(Calendar.MILLISECOND, 0)
val intent = Intent(this@MainActivity, AlarmBroadCastReceiver::class.java)
val pIntent = PendingIntent.getBroadcast(this@MainActivity, 0, intent, 0)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, triggerTime.timeInMillis, AlarmManager.INTERVAL_HOUR, pIntent)
이러면 정각에 설정된 브로드캐스트로 알림이 올 것이다!
그래도 테스트는 해봐야 되니 1시간을 계속 기다릴 수 없으니 1분마다 0초에 한 번씩 알림이 오도록 설정을 해서 테스트를 해봤다
하지만 잘 안 맞는다 내가 뭘 잘못한 건가 하고 이리저리 찾아봤는데 아래와 같이 디벨롭 사이트에는 하기와 같이 설명이 나와있다.
그럼 정밀하지 않게 1시간에 1번은 잘되는 건가 하고 적용해보려고 했는데
몇 시간을 테스트를 해볼 수는 없어서 다른 방법을 써서 요구사항을 적용했고 ACTION_TIME_TICK이라는 인텐트 필터로 브로드캐스트를 이용해서 적용하였다 그 부분과 관련된 내용은 다음에..
1시간에 1번 결과는 밤에 한번 돌려보고 잘못 구현된 부분이 있나 좀 더 확인해 보고 추가적인 내용이 있으면 올리도록 하겠음.
※추가사항
1시간에 1번씩 돌려봤는데 잘 안맞는다. 더 검토해봐야겠다. 끝
'Develop > Android' 카테고리의 다른 글
[Telegram] 안드로이드 텔레그램 API 사용하기(TDLib) - 5 (채팅리스트) (5) | 2022.03.10 |
---|---|
[Telegram] 안드로이드 텔레그램 API 사용하기(TDLib) - 4 (전화번호 인증) (0) | 2022.03.08 |
[Telegram] 안드로이드 텔레그램 API 사용하기(TDLib) - 3 (인증상태 확인) (1) | 2022.03.06 |
[Telegram] 안드로이드 텔레그램 API 사용하기(TDLib) - 2 (0) | 2022.03.05 |
[Telegram] 안드로이드 텔레그램 API 사용하기(TDLib) - 1 (0) | 2022.03.05 |
댓글