2016-09-24 9 views
1

내가 설정하고 알람 usng을 예약하지이경보 관리자 경보를 제대로

Calendar now = Calendar.getInstance(); 
    Calendar alarm = Calendar.getInstance(); 
    alarm.set(Calendar.HOUR_OF_DAY,21); 
    alarm.set(Calendar.MINUTE,30); 
    if (alarm.before(now)) { 
     alarm.add(Calendar.DAY_OF_MONTH, 1); //Add 1 day if time selected before now 
    } 
     AlarmManager alarmManager =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent(context,Receiver.class); 
    PendingIntent pi = PendingIntent.getBroadcast(context,(int)alarm.getTimeInMillis(),i,0); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (int)alarm.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi); 

하지만 다음 날에 예약하는 경우에도, 즉시 경보를 저장 한 후 트리거합니다. 망가 문제가 많이 검색 한 않고 다른 사람들이 당신이 int 따라서 손실 비트에 long 타임 스탬프를 캐스팅과 실제 타임 스탬프 값을 변경

+0

시간이 지나면 이미 일을 추가하고 있습니다. – Akki

+0

아니요 작동하지 않습니다. 설정된대로 즉시 트리거됩니다. – Akki

+1

왜 'int'로 변환하고 있습니까? – Marat

답변

1

작동됩니다 것을 알고있다. 당신은 이미 지나간 시간으로 끝나기 때문에 즉시 의도를 실행합니다.

PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 

마지막 줄에 (int) 캐스트가 삭제되었습니다.

+0

변경했는데 즉시 트리거되지는 않았지만 예정된 시간에 트리거되지 않았습니다. – Akki