2014-10-30 57 views
2

報警應該重複月度報警,每月在同一個月份重複一次,每月如此設置 就好像我在我的地方警報在10月31日,那麼它應該重複31個月有31天,因爲我們沒有相同的天數每個月 我無法弄清楚這個警報的時間間隔,請幫助我如何弄清楚這是什麼INTERVAL_Value必須是或如何處理它以另一種方式android重複鬧鈴,應該每月重複一次,並在每個月的當天重複,等

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_Value, alarmIntent); 
+0

看看[這個](http://stackoverflow.com/questions/7568233/how-to-implement-yearly-and-monthly-repeating-alarms)有幫助。 – 2014-10-30 05:36:22

+0

我想通過另一種方式發佈,作爲一個喉嚨,我認爲這是它可以工作 – mushahid 2014-10-30 05:56:14

回答

1

我們可以從源收到currentMonth值,它是一個整數

if (currentMonth == Calendar.JANUARY || currentMonth == Calendar.MARCH || currentMonth == Calendar.MAY || currentMonth == Calendar.JULY 
      || currentMonth == Calendar.AUGUST || currentMonth == Calendar.OCTOBER || currentMonth == Calendar.DECEMBER){ 
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 31, alarmIntent); 
    } 
    if (currentMonth == Calendar.APRIL || currentMonth == Calendar.JUNE || currentMonth == Calendar.SEPTEMBER 
      || currentMonth == Calendar.NOVEMBER){ 
     alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 30, alarmIntent); 
     } 


    if (currentMonth == Calendar.FEBRUARY){//for feburary month) 
     GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();  
      if(cal.isLeapYear(year)){//for leap year feburary month 
       alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 29, alarmIntent); 
      } 
      else{ //for non leap year feburary month 
       alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 28, alarmIntent); 
      } 
    } 
0

您應該使用cal.getActualMaximum(Calendar.DAY_OF_MONTH));。 這給你每個月的最大日期,不管月份。