这是我的警报管理器代码:
Intent intent=new Intent(getBaseContext(),AlarmReciever.class);
intent.setAction("com.example.projectx.ACTION");
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,12345, intent,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager=(AlarmManager)getSystemService(Activity.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,targetCal.getTimeInMillis(),pendingIntent);
如果我选择在 future 的小时/分钟触发警报,则代码效果很好。但是如果我选择过去的一个小时/分钟,它会在我点击“设置闹钟”时立即启动。
例子:
我的时间选择器始终设置为 24 小时模式。这可能是个问题吗?
谢谢!
最佳答案
当然可以......它的意思是这样工作。
Android 识别出时间已经过去,因此它会发出警报,即使已经晚了。
您可以确保为闹钟设置的时间晚于当前时间。
只需计算这个差异:
int diff = Calendar.getInstance().getTimeInMilis() - targetCal.getTimeInMillis();
如果 diff 大于 0,则在日历中添加一天 (targetCal)
现在,您设备的时间将比下一个预定的闹钟时间早 (而不是 晚 )。