notification = new NotificationCompat.Builder(this);
notification.setAutoCancel(true);
counter = (TextView) findViewById(R.id.textView);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 5000, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR_OF_DAY, 22);
cal.add(Calendar.MINUTE, 43);
cal.add(Calendar.SECOND, 0);
cal.add(Calendar.MILLISECOND, 0);
// cal.add(Calendar.SECOND, 20);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast);
但是当我在仅使用cal.add(Calendar.SECOND, 20)
时设置我的闹钟它给我通知(工作正常)所以任何人都可以告诉我为什么它在使用小时,分钟以及为什么它只在我使用时工作时不起作用Seconds
只有?/任何帮助将非常感谢,谢谢:)。
答案 0 :(得分:2)
请找到下面的方法及其参数
setInexactRepeating (int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)
如果你想在22:43:00每天重复闹钟,那就这样打电话
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
如果你想每15分钟重复一次闹铃,那么就像这样打电话
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent);
答案 1 :(得分:2)
正如@Indra在他的回答中所说,你错误地使用cal.getTimeInMillis()
两者作为警报触发时间和间隔。该值不是有效间隔。据推测,您希望闹钟每小时,每天或其他合理间隔发射。我猜这是因为你请求的间隔是一个巨大的值,并且你要求的警报是不精确的,你永远不会看到它因为documentation中解释的这种行为而触发:“你的警报的第一次触发不会在要求的时间之前,但在那段时间之后几乎整整一段时间内可能不会发生“。在这种情况下,“完整间隔”大约是46年。