如果选择的时间已经过去,如何在第二天设置闹钟

时间:2017-01-09 17:52:44

标签: java android calendar alarmmanager

如果选择的时间已经消失,如何在第二天设置闹钟? 我有方法,我设置闹钟,但如果那个时间已经过去,它现在就发生了。我需要,在第二天启用此警报。我该如何更改此代码? '因为这段代码不起作用:现在报警

Calendar calendar = Calendar.getInstance();
    long now = calendar.getTimeInMillis();
    sharedPreferences = getPreferences(MODE_PRIVATE);

    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    calendar.set(Calendar.MILLISECOND, 999);
    long until = calendar.getTimeInMillis();

    calendar.set(Calendar.HOUR_OF_DAY, sharedPreferences.getInt(SAVED_HOUR_1, selected_hour_1));
    calendar.set(Calendar.MINUTE, sharedPreferences.getInt(SAVED_MINUTE_1, selected_minute_1));
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    long seted = calendar.getTimeInMillis();

    Intent intent = new Intent(getApplicationContext(), SetVolume_1.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 23, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, seted, AlarmManager.INTERVAL_DAY, pendingIntent);
    } else {
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, seted, AlarmManager.INTERVAL_DAY, pendingIntent);
    }

2 个答案:

答案 0 :(得分:0)

这很简单,因为你有一个日历实例可以设置你想要设置闹钟的时间,只需要以毫秒计算时间并将其与现在进行比较,如果它更大则时间尚未到达,否则你只需要在同一个日历中添加一天。我认为实现非常简单:)。

修改 我实际上必须做类似的事情,这是我的代码,你可以根据需要调整它,它应该可以帮助你理解这个问题。

fun setAlarm(context: Context, interval: Long) {
    val am = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
    val i = Intent(context, AlarmReceiver::class.java)
    val pi = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT) //Flag Update Current FLAG_CANCEL_CURRENT

    val prefTime = PreferenceManager.getDefaultSharedPreferences(context).getString(SettingsValues.NOTIFICATION_TIME_KEY, "1").toInt()
    val calendar = Calendar.getInstance()
    calendar.set(Calendar.HOUR_OF_DAY, prefTime)
    calendar.set(Calendar.SECOND, 0)
    calendar.set(Calendar.MINUTE, 0)
    var time = calendar.timeInMillis
    if (System.currentTimeMillis() > time) {
        time = time + 24 * 60 * 60 * 1000 // Next day
    }
    am.setRepeating(AlarmManager.RTC_WAKEUP,
            time , AlarmManager.INTERVAL_DAY, pi);
    isActive = true
}

重要如果您看看我如何使用日历实例,那么您的衣服应该在那里。如果现在是在以毫米为单位的日历总时间之后,我会添加一整天。

答案 1 :(得分:0)

要设置第二天的闹钟,您可以在设置时间时添加此闹钟:

$(":not('.class1')").mouseover(function(){
  $('.class1').removeClass("class1");
})

要轻松检查当天是否已经过了该时间,并且仅在第二天将其设置为已过,请按以下方式检查:

calendar.set(Calendar.DATE, 1);

如果当天设定的时间过去,这只会将日历时间设定为次日。