我正在开发一个基于使用 AlarmManager.setAlarmClock 方法编写警报的应用程序。它主要是有效的,但在某些情况下,警报会在错误的时间引发。
例如,在具有 android 5.1 的三星设备中,我在以下位置设置了 3 个警报:
- 18:00
- 22:00
- 6:00(次日)
结果是
- 18:00 -> 好的
- 18:15 -> 18:15 投掷
- 6:00 -> 2:00 投掷!!
下面是设置闹钟的代码:
if (Build.VERSION.SDK_INT >= 21) {
Log.d(TAG, "Final (idle) at " + sdf.format(calendarObj.getTime()));
AlarmManager.AlarmClockInfo info = new AlarmManager.AlarmClockInfo(calendarObj.getTimeInMillis(), pendingIntent);
alarmManager.setAlarmClock(info, pendingIntent);
}
这是生成“calendarObj”实例的代码(iqDate对象是具有特定日期的对象,三个警报是根据该对象的日期设置的。忽略它):
Calendar c1 = Calendar.getInstance();
c1.setTime(iqDate.getTime());
c1.add(Calendar.DAY_OF_MONTH, -1);
c1.set(Calendar.HOUR_OF_DAY, 18);
c1.set(Calendar.MINUTE, 0);
c1.set(Calendar.SECOND, 0);
Calendar c3 = Calendar.getInstance();
c3.setTime(iqDate.getTime());
c3.add(Calendar.DAY_OF_MONTH, -1);
c3.set(Calendar.HOUR_OF_DAY, 22);
c3.set(Calendar.MINUTE, 0);
c3.set(Calendar.SECOND, 0);
Calendar c7 = Calendar.getInstance();
c7.setTime(iqDate.getTime());
c7.set(Calendar.MINUTE, 0);
c7.set(Calendar.SECOND, 0);
c7.set(Calendar.HOUR_OF_DAY, 6);
任何想法为什么会发生这种情况?它在大多数情况下都可以正常工作,但有时警报无法正常工作...
谢谢!