AlarmManager를 활용한 다중 알람 생성

안녕하세요. 안드로이드에서 AlarmManager와 PengingIntent를 이용해 알람을 만들고 있습니다. 매일 아침, 점심, 저녁 이렇게 세 번 알람이 울리는데요, 알람이 제대로 동작하지 않습니다. 알람이 한참 뒤에 울리거나(1~2분 정도 오차가 아니라 10분 넘게 차이가 납니다), 아침에 아침/점심/저녁 알람이 한꺼번에 울리기도 합니다.

대략적인 방식은 이렇습니다 Activity가 3개의 TimePickerDialog로 각각의 시간을 받아 놓고, AlarmReceiver에 넘깁니다. 그러면 AlarmReceiver의 addAlarm() 함수가 값을 받아 알람을 추가합니다. 등록된 알람들은 시간이 되면 AlarmReceiver의 onReceive()함수를 실행시키고, onReceive에서 AlarmActivity를 화면에 띄웁니다.

코드는 이렇습니다.

AlarmReceiver.java의 addAlarm()

Intent intent = new Intent(con, AlarmReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
Calendar cal = new GregorianCalendar(); // 시간을 정하기 위한 Calendar 객체
cal.set(2016, 7, 27, morningHour, morningMinute, 0); // Hour과 Minute은 TimePickerDialog로 가져옴
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent); // 하루에 한 번 반복되는 알람 설정

intent = new Intent(con, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
cal.set(2016, 7, 27, lunchHour, lunchMinute, 0); // TimePickerDialog로 가져옴
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);

intent = new Intent(con, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
cal.set(2016, 7, 27, dinnerHour, dinnerMinute, 0); // TimePickerDialog로 가져옴
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);

변수들(아침, 점심, 저녁의 시간/분)은 전부 다른 값이 들어갔습니다. AlarmManager의 사용법이 생각보다 까다롭네요ㅜㅜ

1답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.