2016-09-24 3 views
1

Я настройка будильника usng этоменеджера сигнализации не планирование будильника правильно

Calendar now = Calendar.getInstance(); 
    Calendar alarm = Calendar.getInstance(); 
    alarm.set(Calendar.HOUR_OF_DAY,21); 
    alarm.set(Calendar.MINUTE,30); 
    if (alarm.before(now)) { 
     alarm.add(Calendar.DAY_OF_MONTH, 1); //Add 1 day if time selected before now 
    } 
     AlarmManager alarmManager =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent(context,Receiver.class); 
    PendingIntent pi = PendingIntent.getBroadcast(context,(int)alarm.getTimeInMillis(),i,0); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (int)alarm.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi); 

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

+0

M уже добавляет день, если время прошло – Akki

+0

Нет его работы не срабатывает сразу же, как установлено – Akki

+1

Почему вы выбрали 'int'? – Marat

ответ

1

Вы закидывающие long метки времени int, таким образом, потери бит и изменение фактического значения временной метки. Вы закончите с временем, которое уже прошло, и оно немедленно выполняет намерение.

PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 

Обратите внимание, что я удалил (int) бросок в последней строке.

+0

Я изменил его, и он не срабатывал немедленно, но он даже не срабатывает в назначенное время – Akki