我正在尝试让Alarm Manager在事件发生前5分钟提醒用户。我该怎么做呢?
例如,活动时间是10:00:00,我需要在9:55:00提前5分钟设置闹钟。我无法在搜索中找到相关示例。
是否有可以根据日期设置较早时间的日期或日历功能?
以下是不完整的伪代码
int index = eventTime.indexOf(':');
String Hour =eventTime.substring(0, index);
String Min = eventTime.substring(index + 1, index + 3);
Calendar cal = Calendar.getInstance();
int em = Integer.parseInt(eventMonth);
int ed = Integer.parseInt(eventDay);
int ey = Integer.parseInt(eventYear);
int h = Integer.parseInt(Hour);
int m = Integer.parseInt(Min);
int alertTime=5;
m=m+alertTime;
cal.set(Calendar.MONTH, em);
cal.set(Calendar.YEAR, ey);
cal.set(Calendar.DAY_OF_MONTH, ed);
cal.set(Calendar.HOUR_OF_DAY, h);
cal.set(Calendar.MINUTE, m);
AlarmManager mgr = new AlarmManager();
mgr.addAlarm(cal.getTime(), new AlarmListener() {
// public void handleAlarm(AlarmEntry entry)
Log.v("calander", cal.toString());
// }
// });
答案 0 :(得分:2)
您的伪代码在正确的轨道上。虽然对于AlarmManager
你想做这样的事情:
AlarmManager alarm = (AlarmManager)getContext().getSystemService(Activity.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pi);
//pi is a PendingIntent since you want it to run some code at the point it goes off
//Look up PendingIntent on the Android docs to understand what it does if you dont already know
对于使用Calendar
的约会对象,您做得对。虽然以这种方式使用set()
会更清晰:
set(int year, int month, int day, int hourOfDay, int minute)
在您的情况下,它可能如下所示:
Calendar cal = Calendar.getInstance();
cal.set(ey, em, ed, h, m-5);
至于是否存在根据日期制作日历的内容,这取决于您希望如何进行。对你来说,我真的不认为除了提供日期之外你还能做什么,只是根据它的分钟,小时等来减去。希望我所做的事情有意义并且实际上可以与你想要的东西一起工作做。