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

How to set Repeating Alarm in Android using Recurrence Picker Dialog?

我是 android 开发新手,我正在开发任务提醒应用程序。我需要为该任务设置重复警报,为此,我正在使用 Recurrence Picker Dialog。

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

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

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

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

                        }
                    });

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

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

您可以使用 Alarm Manager and a Custom 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;
}

然后,在您的广播接收器中,执行以下操作:

  1. 显示警报
  2. 将下一个警报设置为下次出现(基于保存的规则)

希望这能帮助您入门。