2010-12-17 4 views
1

Итак, я работаю над сигналом тревоги, который дает уведомление, скажем, 3:00 вечера в день, но я хочу, чтобы это было доступно пользователю, между AM/PM и часами/Мин свободно меняющийся. Я, вероятно, использовать TimePicker, и это мой код, который я до сих пор:Время в миллисекундах Тревога

public void startAlarm() { 


      Intent intent = new Intent(currentDay.this, AlarmReceiver.class); 
      PendingIntent sender = PendingIntent.getBroadcast(currentDay.this,0, intent,0); 

      long firstTime = SystemClock.elapsedRealtime(); 
      firstTime += 15*1000; 


      AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 
      am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,AlarmManager.INTERVAL_DAY, sender); 


     } 

Итак, я полагаю, что я буду использовать что-то вдоль линий:

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 19); 
cal.set(Calendar.MINUTE, 45); 

, а затем используя

cal.getTimeInMillis() 

Но это не сработает, никаких идей? Благодаря!

EDIT: Итак, длинный рассказ, я знаю, как получить текущее время, а затем добавить, скажем, 15 секунд, но я хочу иметь определенное время, которое РАБОТАЕТ, например, 5:14 вечера, и все, что я 'Пробовал не работает

+0

Что не работает? – Falmarri 2010-12-17 02:28:45

+0

, когда я помещаю `cal.getTimeInMillis()` в то место, где `firstTime`, скажем, что время подходит, ничего не происходит – Samuel 2010-12-17 02:32:02

ответ

2

Насколько я могу судить, вы получаете экземпляр календаря с текущей датой/временем, а затем добавляете к нему 19 часов и 45 минут, НЕ устанавливая время экземпляра календаря явно до 19:45. Это то, что вы имеете в виду? Для установки явного времени вам нужно использовать метод Calendar set().

Из ссылки API для метода GetInstance Calendar

Календаря возвращает календарь, чей языковой стандарт основан на системных настройках и чьи временные поля инициализированы с текущей датой и временем:

Calendar rightNow = Calendar.getInstance() 
public abstract void add (int field, int value) 

Since: API Level 1 
Adds the specified amount to a Calendar field. 
Parameters 
    field the Calendar field to modify. 
    value the amount to add to the field. 
    Throws IllegalArgumentException if field is DST_OFFSET or ZONE_OFFSET. 

EDIT: Для преобразования местного времени в UTC ...

Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.HOUR_OF_DAY, 19); 
cal.set(Calendar.MINUTE, 45); 
int offset = cal.getTimeZone().getOffset(cal.getTimeInMillis()); 
firstTime = cal.getTimeInMillis() + offset; 

Примечание: Я не пробовал выше, и может быть проще, но он должен работать. Мне сложно тестировать такие вещи, как мой часовой пояс GMT/UTC.

Смежные вопросы