每天在特定时间设置重复闹钟

Posted

技术标签:

【中文标题】每天在特定时间设置重复闹钟【英文标题】:Set Repeated alarm at specific time every day 【发布时间】:2011-10-29 12:40:14 【问题描述】:

我尝试使用闹钟管理器在每天的特定时间运行闹钟。 我正在使用此代码

Intent intent = new Intent(AlarmSettings.this, AlarmService.class);
                        intent.putExtra("i", i);
PendingIntent mAlarmSender = PendingIntent.getService(AlarmSettings.this, Id, intent, 0);

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),Calendar.getInstance().getTimeInMillis()+(24*60*60*1000), mAlarmSender);

问题出在 如果 cal.getTimeInMillis() 值在过去,警报会立即运行,我不知道为什么,当 cal.getTimeInMillis() 值在未来时,它会在当时正确运行。

我需要让它在每天的特定时间运行。

【问题讨论】:

【参考方案1】:
// every day at 9 am
Calendar calendar = Calendar.getInstance();

// if it's after or equal 9 am schedule for next day
if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) >= 9) 
    calendar.add(Calendar.DAY_OF_YEAR, 1); // add, not set!

calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);

// alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
// AlarmManager.INTERVAL_DAY, pi);

【讨论】:

【参考方案2】:

看起来像你的电话

setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)

尝试设置适当的 triggerAtTime(将来) - 像

Calendar.getInstance().getTimeInMillis()+(24*60*60*1000)

第三个参数(间隔)显然应该是你的间隔,比如

24*60*60*1000

【讨论】:

谢谢你,我知道我必须在paset中设置triggerAtTime在未来没有【参考方案3】:

这对我帮助很大,我有一个案例,我也在使用分钟,并提出了以下小修改:

/* Create calendar and set desired time before this*/

// Compare the current time milliseconds with the desired calendar time milliseconds
if (java.util.Calendar.getInstance().getTimeInMillis() >= 
            calendar.getTimeInMillis() ) 
    calendar.add(Calendar.DAY_OF_YEAR, 1);

【讨论】:

以上是关于每天在特定时间设置重复闹钟的主要内容,如果未能解决你的问题,请参考以下文章

当一些闹钟在 Android 中重复时,设置多个闹钟的最佳方式

我希望我的闹钟每天在选定的时间重复,并在 iPhone 中具有贪睡功能

如何通过后台服务每天在android中的特定时间重复通知

如何避免超过闹钟时间触发闹钟?

在网站上一周的特定时间自动播放音乐文件的代码(如闹钟)

如何在 iOS 中设置闹钟?