установить время в диспетчере будильников Android - будильник срабатывает мгновенно - PullRequest
0 голосов
/ 17 августа 2011

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

Я устанавливаю время только с помощью выбора времени.

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,mHour,mMinute);
PendingIntent sender = PendingIntent.getBroadcast(AddAlarm.this, REQUEST_CODE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

Если я возьму ниже код тревоги не работает ..

 Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, mHour);
calendar.set(Calendar.MINUTE, mMinute);
PendingIntent sender = PendingIntent.getBroadcast(AddAlarm.this, REQUEST_CODE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

Помогите мне, если я перейду на работу должным образом. Заранее спасибо ...

Ответы [ 2 ]

4 голосов
/ 17 августа 2011

Второй код должен обычно работать для датированных аварийных сигналов.

Имейте в виду: если вы устанавливаете HOUR и MINUTE, вы устанавливаете их на текущий день, например, HOUR = 1 и MINUTE = 30 означает, что вы установили будильникна 01:30Если это закончится, вы можете получить сигнал тревоги прямо сейчас.

Если вы хотите создать будильник в будущем с 1:30 до конца, используйте calendar.add (..,..) метод.

0 голосов
/ 07 апреля 2012

Я не уверен, что вы пытаетесь сделать с этой строкой:

calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,mHour,mMinute);

, но я почти уверен, что она не делает то, что вы хотите.Это установит в календаре те часы и минуты, которые вы выбрали 5 марта года 1 нашей эры.Когда вы преобразуете это в миллисекунды, вы получите 0, потому что это раньше самой ранней даты, которая может быть представлена ​​в миллисекундах.

У вас также есть другая проблема, связанная с API Календаря в этой строке:

calendar.set(Calendar.HOUR, mHour);

Здесь ваша проблема в том, что поле Calendar.HOUR относится к часу в 12-часовой записи, тогда как ваш mHour предположительно использует 24-часовую запись (в противном случае вам также потребуется поле AM / PM для храненияполный день стоит раз).Вам нужен Календарь. HOUR_OF_DAY.

...