如何使用重复选择器对话框在 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;
}
然后,在您的广播接收器中,执行以下操作:
- 显示警报
- 将下一个警报设置为下次出现(基于保存的规则)
希望这能帮助您入门。
我是 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;
}
然后,在您的广播接收器中,执行以下操作:
- 显示警报
- 将下一个警报设置为下次出现(基于保存的规则)
希望这能帮助您入门。