0

请帮帮我,我正在创建一个闹钟项目,但我遇到了问题。

这是我需要在当前时间之前设置闹钟的问题,例如,如果现在的时间是下午 1:00,则设置为上午 10:00,所以基本上它还有 18 小时剩余时间和闹钟时间前 59 分钟,问题是一旦你设置了闹钟就像上午 10:00 和下午 1:00 一样,它会在您单击“确定”后发出警报

                    if (setHour < c.get(Calendar.HOUR_OF_DAY)
                            || setHour == c.get(Calendar.HOUR_OF_DAY)
                            && setMinute < c.get(Calendar.MINUTE)) {

                        c.set(Calendar.HOUR_OF_DAY, setHour);
                        c.set(Calendar.MINUTE, setMinute);
                        c.set(Calendar.SECOND, 0);
                        client.setAlarmNotification(c, requestCode);

                    } 

setHour 来自 timepicker 以及 setMinute。Requestcode 是唯一的,因为它来自数据库 (PrimaryKey) 中的 id,所以没问题,当您在当前时间之后但不是在当前时间之前发出警报时,这一切都有效。伙计们请帮我处理这几天。先感谢您

——拉斐尔

4

2 回答 2

0

将日历设置为您希望使用的时间和日期,而不是仅设置时间。

    Calendar c= Calendar.getInstance();
    c.set(year,month,day,hour,minute);
    client.setAlarmNotification(c, requestCode);

注意:月份是 0 到 11 而不是 1 到 12

如果您只想明天发出警报,请在日历中添加一天,如下所示:

  c.add(Calendar.DATE,1); // Add one day to the calendar

然后你只需要设置时间。

于 2013-09-25T11:52:14.210 回答
0

据我了解,您只需要设置第二天的闹钟。

Calendar c = Calendar.getInstance();
if (setHour < c.get(Calendar.HOUR_OF_DAY)
|| setHour == c.get(Calendar.HOUR_OF_DAY)
&& setMinute < c.get(Calendar.MINUTE)) 
{
     c.set(Calendar.HOUR_OF_DAY, setHour);
     c.set(Calendar.MINUTE, setMinute);
     c.set(Calendar.SECOND, 0);
     long time = c.getTimeInMillis();
     time = time + 1000*60*60*24; // Add 24h to the date
     c.setTimeInMillis(time);
     client.setAlarmNotification(c, requestCode);
} 
于 2013-09-25T11:38:48.667 回答