我想使用来 self 的 GUI 的输入通过 AlarmManager 安排警报。
例如,我希望闹钟在 18:15 响起,所以我有 2 个代表小时和分钟的 int 变量。我尝试用 SimpleDateFormat 解析它们,但它似乎不起作用。任何想法为什么?
编辑:问题是警报似乎没有触发。我猜这是因为自卫队没有按照我的意愿行事。但我不知道如何修复它。
public void setAlarm(){
int hour = 18;
int minute = 15;
String myTime = String.valueOf(hour) + ":" + String.valueOf(minute);
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
try {
date = sdf.parse(myTime);
} catch (ParseException e) {
e.printStackTrace();
}
if (date != null) {
timeInMs = date.getTime() + System.currentTimeMillis();
}
Intent intent = new Intent(this, AlarmClockRingRing.class);
PendingIntent action = PendingIntent.getActivity(this, 0,intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, timeInMs, action);
}
感谢任何帮助。
马库斯
最佳答案
您这样做的方式是将闹钟设置为距当前时间 18 小时 15 分钟,而不是今天的 18 点 15 分。
解决此问题的一种方法是创建一个具有当前时间但具有所需小时和分钟值的日期。然后只需在该日期设置闹钟即可。像这样:
public void setAlarm(){
int hour = 18;
int minute = 15;
String myTime = String.valueOf(hour) + ":" + String.valueOf(minute);
Date date = null;
// today at your defined time Calendar
Calendar customCalendar = new GregorianCalendar();
// set hours and minutes
customCalendar.set(Calendar.HOUR_OF_DAY, hour);
customCalendar.set(Calendar.MINUTE, minute);
customCalendar.set(Calendar.SECOND, 0);
customCalendar.set(Calendar.MILLISECOND, 0);
Date customDate = customCalendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.getDefault());
try {
date = sdf.parse(myTime);
} catch (ParseException e) {
e.printStackTrace();
} catch (java.text.ParseException e) {
e.printStackTrace();
}
if (date != null) {
timeInMs = customDate.getTime();
}
Intent intent = new Intent(this, AlarmClockRingRing.class);
PendingIntent action = PendingIntent.getActivity(this, 0,intent, Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, timeInMs, action);
}
此代码将在当天的 18 点 15 分发出警报。小心设置一个已经过去的日期。确保你设置了一个 future 的时间。
关于android - 在 android 上使用给定时间使用 AlarmManager 安排闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951156/