2013-04-24 5 views
2

알람 응용 프로그램을 작성하려고합니다. 나는 전에 일하는 알람을 가지고 있었고 나는 다른 시간을 설정할 수 있었고 알람이 적절하게 사라질 것입니다. 그런 다음 ChangeAlarmActivity의 레이아웃을 TableLayout으로 변경했는데 이제 작동하지 않습니까? 나는 코드를 건드리지 않았다. 다음은 내가 알람을 설정하는 방법입니다.AlarmManager가 즉시 꺼지는 이유는 무엇입니까?

Intent alarmIntent = new Intent(ChangeAlarmActivity.this, AlarmReceiver.class); 
PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(ChangeAlarmActivity.this, (int)alarm.getID(), 
     alarmIntent, 0); 

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
System.out.println("Alarm time: " + hour + ":" + min); 
Calendar alarmCal = Calendar.getInstance(); 
//alarmCal.setTimeInMillis(System.currentTimeMillis()); 
alarmCal.set(Calendar.HOUR_OF_DAY, hour); 
alarmCal.set(Calendar.MINUTE, min);   
//alarmCal.set(Calendar.SECOND, 0); 

alarmManager.set(AlarmManager.RTC_WAKEUP, 
     alarmCal.getTimeInMillis(), 
     pendingAlarmIntent); 

답변

15

시간과 분이 과거 일 가능성이 있습니다.

은의이 현재 시간대 (24 시간 시간을 사용) 16시 7분 시간이라고 가정 해 봅시다, 당신은 327minhour이 코드를 실행합니다. 03:27은 과거 였고 따라서 경보가 즉시 발사되었습니다.

set() 전화를 한 후에는 시간이 지금보다 빠른 지 확인하고, 그렇다면 add()을 하루에 확인하십시오.

+1

if (alarmCal.getTimeInMillis()

+0

@ JohnathanAu : 그게 효과가있다. – CommonsWare

+0

감사합니다. 지금 시도해보십시오 :) –

관련 문제