Нужно показать уведомление в выбранную пользователем в диалоге дату и время.
Есть код, но работает не так как надо. Выбираю в диалоге завтрашнюю дату и время на минуту вперёд текущего( например 12:20) и уведомление приходит через минуту, хотя должно завтра прийти... Выбираю в диалоге сегодняшний день и уведомление сразу появляется, не успеваю даже время поставить..
Как то по отдельности обрабатываются дата и время, а нужно чтоб это одно целое было...
// запуск диалогов
public void oneTime(View view){
openTimePickerDialog(true);
openDatePickerDialog(null);
}
private void openTimePickerDialog(boolean is24r){
Calendar calendar = Calendar.getInstance();
timePickerDialog = new TimePickerDialog(
NoteActivity.this,
onTimeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
is24r);
timePickerDialog.setTitle("Set Alarm Time");
timePickerDialog.show();
}
OnTimeSetListener onTimeSetListener
= new OnTimeSetListener()
{
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
if(calSet.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
//calSet.add(Calendar.DATE, 1);
}
time = new SimpleDateFormat("HH:mm").format(calSet.getTime());
setAlarm(calSet);
}};
//////////////////////////date
public void openDatePickerDialog(View v) {
new DatePickerDialog(NoteActivity.this, d,
dateAndTime.get(Calendar.YEAR),
dateAndTime.get(Calendar.MONTH),
dateAndTime.get(Calendar.DAY_OF_MONTH))
.show();
}
DatePickerDialog.OnDateSetListener d =new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calNow = Calendar.getInstance();
Calendar dateAndTime = (Calendar) calNow.clone();
dateAndTime.set(Calendar.YEAR, year);
dateAndTime.set(Calendar.MONTH, monthOfYear);
dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
if(dateAndTime.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
//dateAndTime.add(Calendar.DATE, 0);
}
date = new SimpleDateFormat("EEE, d MMM ").format(dateAndTime.getTime());
setAlarm(dateAndTime);
}};
private void setAlarm(Calendar targetCal){
editTextNote.setText(date+time+" + ");
final int id = (int) System.currentTimeMillis();
Intent intent = new Intent(getBaseContext(), AlarmBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}