Time Picker Разница между текущим и Time Picker Time Android-будильник

android alarmmanager alarm

384 просмотра

1 ответ

Я создаю простой диалог выбора времени, и когда пользователь устанавливает время, я сохраняю это время в экземпляре календаря.

 public void onTimeSet(TimePicker timePicker, int i, int i1) 
 {
    tpCalendar = Calendar.getInstance();
    tpCalendar.set(Calendar.HOUR_OF_DAY, i);
    tpCalendar.set(Calendar.MINUTE, i1);
    tpCalendar.set(Calendar.SECOND,0);
    updateReminder();
 }

И вычисление разницы в методе updateReminder ()

private void updateReminder() 
{
    long currTime = System.currentTimeMillis();
    long diff = tpCalendar.getTimeInMillis() - currTime;
    long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diff);

    Intent reminderIntent = new Intent(this, ReminderReceiver.class);
      AlarmManager alarmManager = (AlarmManager)     getSystemService(Context.ALARM_SERVICE);

    alarmManager.set(AlarmManager.RTC_WAKEUP, diff,
            PendingIntent.getBroadcast(this, 1, reminderIntent,
            PendingIntent.FLAG_UPDATE_CURRENT));
}

И на основании разницы я устанавливаю будильник. Я получаю правильную разницу в миллис (разность переменных). Но проблема в том, что после того, как будильник установлен, и независимо от того, какая разница установлена, он уведомляет через 5 секунд.

В широковещательных приемниках я просто создаю уведомление. Я буду признателен за любую помощь, спасибо.

Автор: Rahul Bhavani Источник Размещён: 08.11.2019 10:54

Ответы (1)


3 плюса

Решение

Я делал что-то вроде того, когда я сделал мой AlarmClock (после TimePicked):

String[] arrTime = time.split(":");
int hour = Integer.parseInt(arrTime[0]);
    int minute = Integer.parseInt(arrTime[1]);
    GregorianCalendar calendar = (GregorianCalendar) GregorianCalendar.getInstance();
    calendar.set(GregorianCalendar.DATE, calendar.get(GregorianCalendar.DATE));
    calendar.set(GregorianCalendar.HOUR_OF_DAY, hour);
    calendar.set(GregorianCalendar.MINUTE, minute);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);

    Intent intent = new Intent(this, AlarmReceiver.class);
    intent.putExtra("message", message);
    PendingIntent pIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
Автор: MirlanMaksv Размещён: 20.08.2016 05:32
Вопросы из категории :
32x32