Как спланировать будильник так, чтобы намерение передавалось каждый раз при изменении даты? - PullRequest
1 голос
/ 27 февраля 2011

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

Я знаю, что это сделает эту работу

alarms.setRepeating(AlarmManager.RTC_WAKEUP,triggerAtTime, interval,alarmIntent);

Но что меня смущает, так это то, что нужно указать в triggerAtTime и интервал. Это говорит System.currentTimeMillis () timebase.

Возможно, я устанавливаю приложение в любой день, поэтому TriggerAtTime должен быть в полночь этого дня, а интервал будет 24 часа.

Как мне добиться этого. Может ли кто-нибудь сказать мне, что поместить в TriggerAtTime и интервал в требуемом формате.

Спасибо

Ответы [ 3 ]

0 голосов
/ 09 марта 2011

Для triggerAtTime это время первого нажатия вашей тревоги.

Параметр интервала - это время между каждым ударом, для вас 24 часа, в миллисекундах: 24 * 60 * 60 *1000* 1003 *

Например, если вы хотите начать обновление через 10 секунд, ваш код должен быть:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10 * 1000),24*60*60*1000, alarmIntent);

Если вы хотите установить первое попадание в полночь, вы должны рассчитать времямежду полуночью и теперь в миллисекундах.Я надеюсь, что вы понимаете мой французский плохой английский.

Баст

0 голосов
/ 13 апреля 2011

Вы можете попробовать вот так

Calendar calendar=Calendar.getInstance();

    calendar.add(Calendar.DATE, 1);
    calendar.set(Calendar.HOUR,0);
    calendar.set(Calendar.MINUTE,0);
    calendar.set(Calendar.SECOND,0);
    calendar.set(Calendar.MILLISECOND,0);

    mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), (24*60*60*1000), mPendingIntent);
0 голосов
/ 27 февраля 2011

Они оба имеют тип long, и я думаю, вам нужно установить их в миллисекундах ...

...