报警时间过去后如何避免报警触发?

时间:2015-04-06 10:42:20

标签: android alarmmanager android-pendingintent repeatingalarm

我已安排每天上午10点触发警报。

我在星期一上午12点设置此闹钟。

如果闹钟时间过去,则会立即触发闹钟。

但是根据我的要求,我不想立即触发。我可以在第二天上午10点触发。

以下是我当前设置闹钟的代码:

Calendar activeModeTime = Calendar.getInstance();
    // activeModeTime.setTimeZone(TimeZone.getTimeZone(Constants.TIME_ZONE));
    activeModeTime.set(Calendar.HOUR_OF_DAY,
            mSharedPrefManager.getActiveStartHourPref());
    activeModeTime.set(Calendar.MINUTE,
            Constants.DEFAULT_ACTIVE_START_MINUTE);
    activeModeTime.set(Calendar.SECOND,
            Constants.ALL_START_END_DEFAULT_SECOND);

    mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            activeModeTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
            getActiveModeAlarmPendingIntent());

我该如何实现这一目标。

2 个答案:

答案 0 :(得分:5)

检查您设置的时间是否已经过去,如果是,则在触发时间内添加24小时。

if(activeModeTime < System.currentTimeMillis()){
    activeModeTime += AlarmManager.INTERVAL_DAY;
}

答案 1 :(得分:0)

写入间隔而不是REPEATING_INTERVAL。 对于上午10 AM的示例,您需要在下面的代码中编写AlarmManager.INTERVAL_DAY而不是REPEATING_INTERVAL。

if(Calendar.getInstance().getTimeInMillis()>=calendar.getTimeInMillis()){
   timeInMillis = calendar.getTimeInMillis() + REPEATING_INTERVAL;
}else { 
   timeInMillis = calendar.getTimeInMillis();
}

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeInMillis,REPEATING_INTERVAL, pendingIntent);