【发布时间】:2017-03-29 08:04:35
【问题描述】:
这是我的代码,它可以工作,但我无法设置闹钟,除非在 12:00 AM 我希望用户在特定日期设置闹钟,如下所示,但能够在一天中的任何时间设置它,而不仅仅是午夜......有人可以帮忙吗?
现在日历 = Calendar.getInstance();
pickerDate.init(
now.get(Calendar.YEAR),
now.get(Calendar.MONTH),
now.get(Calendar.DAY_OF_MONTH),
null);
pickerTime.setCurrentHour(now.get(Calendar.HOUR_OF_DAY));
pickerTime.setCurrentMinute(now.get(Calendar.MINUTE));
buttonSetAlarm = (Button)findViewById(R.id.setalarm);
buttonSetAlarm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
Calendar current = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
cal.set(pickerDate.getYear(),
pickerDate.getMonth(),
pickerDate.getDayOfMonth(),
pickerTime.getCurrentHour(),
pickerTime.getCurrentMinute(),
0);
if(cal.compareTo(current) <= 0){
Toast.makeText(getApplicationContext(), "Invalid Date/Time", Toast.LENGTH_LONG).show();
}else{
setAlarm(cal);
}
}});
}
private void setAlarm(Calendar targetCal){
String pattern = "MM/dd/yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Calendar cal = Calendar.getInstance();
cal.set(pickerDate.getYear(),
pickerDate.getMonth(),
pickerDate.getDayOfMonth(),
pickerTime.getCurrentHour(),
pickerTime.getCurrentMinute(),
0);
cal.set(Calendar.MILLISECOND,0);
try {
Date date12_25 = format.parse("12/25/2017");
Lebanon.put(date12_25,"Christmas Day");
for(Date k : Lebanon.keySet()){
if(cal.getTime().equals(k)){
String val = (String)Lebanon.get(k);
info.setText("Your alarm is set for :"+k+", on: "+val);
}
}
} catch (ParseException e) {
e.printStackTrace();
}format.format(new Date());
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
【问题讨论】:
-
您所说的“我只能在 12:00 AM 设置闹钟”到底是什么意思?您的闹钟是否只在凌晨 12 点响起?如果选择的时间不是上午 12 点,它会不会被设置?
-
是的,我必须将时间选择器设置为上午 12 点才能设置闹钟。我想在某个日期设置闹钟,但不管时间是什么。 @MikeM。
-
所以,您是说,忽略日期,如果您没有将
TimePicker设置为正好凌晨 12:00,您会得到“无效的日期/时间”Toast?跨度> -
no no "Invalid Date/Time" 仅当日期时间设置设置在当前设置之前,如过去,问题就在这里,我认为 if(cal.getTime().equals (k)) 但我真的不知道如何解决它...@MikeM。
-
事实证明你是对的,问题在于时间选择器的分钟和秒数,所以谢谢@MikeM。
标签: android datepicker alarm timepicker