android如何在第二天设置报警,如果选择 time 已经走了

发布时间: 2017/3/19 15:51:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

如何在第二天设置报警,如果选择 time 已经走了吗? 我的方法,我把闹钟,但如果那 time 已经走了现在只是碰巧。我需要,启用此警报在第二天。如何更改此代码?' 因为这段代码不工作︰ 现在闹钟

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

解决方法 1:

这是相当简单的因为你有当你想要的报警设置,只是得到一个日历实例及其 time 在米尔斯和比较它到现在,如果它是更大然后 time 是尚未达到,否则你只需要对该相同的日历添加一天。执行是相当简单,我认为:)。

编辑 实际上,我不得不做一些类似的事情和这里是我的代码,你可以适应它,但你需要和它应该帮助你了解这个问题。

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
}

重要如果你看看我如何使用日历实例你就应该在那里。如果现在是后日历共 time 米利斯我想补充一整天。

赞助商