0

我试图让警报管理器在事件发生前 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());
            // }
            // });
4

1 回答 1

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);

至于是否存在根据日期制作日历的东西,这取决于你想怎么做。对你来说,我真的不认为除了提供日期之外你真的可以做任何其他事情,只是根据它的分钟、小时等减去做。

于 2012-08-08T03:42:41.443 回答