2012-08-08 97 views
0

我试图让警报管理器在事件发生前5分钟提醒用户。我如何去做这件事?设置警报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()); 
      // } 
      // }); 

回答

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

至于事情是否存在,使基于日期的日历,这取决于你如何去做。对你而言,除了提供日期以外,我真的不认为还有其他事情可以做,除非根据分钟数,小时数等来减去。希望我所做的事情是有意义的,并且实际上可以与你想要的一起工作做。