如何使用重复选择器对话框在Android中设置重复警报?

时间:2016-01-31 12:47:42

标签: android android-alarms

我是Android开发的新手,我正在开发Task Reminder App。我需要为任务设置重复警报,为此,我使用重复选择器对话框。

但我不知道如何根据重复选择器对话框返回的字符串设置多个警报。

我正在使用以下重复选择器对话框。

enter image description here

它在变量' rrule'中返回一个字符串,但我不知道如何使用该字符串来设置多个警报。下面是为选择器设置Listener的代码。

recurrencePickerDialog.setOnRecurrenceSetListener(new RecurrencePickerDialog.OnRecurrenceSetListener() {
                        @Override
                        public void onRecurrenceSet(String rrule) {

                        }
                    });

recurrencePickerDialog.show(getSupportFragmentManager(),"recurrencePicker");

任何人都请帮助我。我会很感激..

1 个答案:

答案 0 :(得分:3)

您可以使用Alarm Manager和自定义Broadcast Receiver设置闹钟。 您可以这样设置闹钟。

 @Override
 public void onRecurrenceSet(String rrule) {

     if (rrule != null && rrule.length() > 0) {
        EventRecurrence recurrenceEvent = new EventRecurrence();
        recurrenceEvent.setStartDate(new Time("" + new Date().getTime()));
        recurrenceEvent.parse(rrule);

      //Sets alarm
        Intent intent=new Intent(this,MyBroadcastReceiver.class);
        PendingIntent pendingIntent= PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
        long offset=getNextOccurence(recurrenceEvent);
        alarmManager.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis()+offset,pendingIntent);

       //Then save the rule somewhere.


     } else {
      Lod.d("TEST","No recurrence");
     }
   }

getNextOccurrence 功能

 /**
 * Get the milliseconds till next alarm
 * @param e
 * @return
 */
private long getNextOccurrence(EventRecurrence e) {
    switch (e.freq) {
        case EventRecurrence.HOURLY://When alarm is hourly
            if(e.interval==0)//When set to 1 Hour
                return 1000 * 60 * 60;
            return 1000 * 60 * 60 * e.interval;
        // TODO: Implement cases for other frequencies 


    }
    return 0;
}

然后,在您的Broacast Receiver中,执行以下操作:

  1. 显示闹钟
  2. 将下一个警报设置为下次发生(基于保存的规则)
  3. 希望这有助于您开始使用。