Проблема Alarm Manager в настройке времени

Я хочу установить будильник на определенную дату и время. я получаю свою дату и время с помощью веб-сервиса. Я проанализировал и разделил дату и время и использовал SimpleDateFormat, и теперь я хочу поместить эту дату и время в [alarmManager.set (AlarmManager.RTC_WAKEUP, dt, pendingIntent);] но мой будильник не срабатывает в указанное время

       String str_date= hr+":"+min+":"+sec+" "+dat+"/"+mon+"/"+year;
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy");
    ParsePosition position = new ParsePosition(0);

    java.util.Date stringToDate = sdf.parse(str_date, position);
     dt = stringToDate.getDate();

Помогите пожалуйста заранее спасибо


person kanchan    schedule 21.01.2011    source источник


Ответы (2)


Время, которое вы должны передать Alarm.set — это long и getDate (то есть устарело) возвращает целое число.

Попробуйте с getTime()

person ccheneson    schedule 21.01.2011
comment
Тем не менее, это тост по умолчанию, а не мое проанализированное время. - person kanchan; 21.01.2011
comment
Попробуйте поменять местами time и date, например date time вместо time date - person ccheneson; 21.01.2011
comment
Поскольку вы сами анализируете дату и у вас есть разные части даты и времени, вы можете использовать Calendar и использовать метод set с частями даты и времени. Затем вы можете вызвать getTimeInMillis и передать результат диспетчеру аварийных сигналов. Дополнительные сведения см. на странице разработчика. android.com/reference/java/util/Calendar.html - person ccheneson; 21.01.2011
comment
Календарь cal = Calendar.getInstance(); cal.add(Календарь.DAY_OF_YEAR, 23); cal.set(Календарь.HOUR_OF_DAY, 10); cal.set(Календарь.МИНУТА, 36); cal.set(Календарь.СЕКУНД, 0); OnetimeAlarmReceiver (cal); cal.set(Календарь.HOUR_OF_DAY, 10); cal.set(Календарь.МИНУТЫ, 40); OnetimeAlarmReceiver (cal); - person kanchan; 23.01.2011

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

Итак, после нового экземпляра SimpleDateFormat вы можете установить часовой пояс UTC

пример :

SimpleDateFormat sdf = new SimpleDateFormat("ЧЧ:мм:сс дд/мм/гггг"); sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

тогда ваш синтаксический анализ будет в порядке и совместим со службой AlarmManager.

person Emmanuel Devaux    schedule 16.08.2011