2014-11-07 2 views
0

До сих пор у меня есть этот метод, который устанавливает повторяющийся сигнал тревоги. Этот сигнал устанавливает будильник в 11:15 с 15-минутными интервалами. Мне интересно, хочу ли я установить еще один повторяющийся сигнал тревоги в течение 12:00 утра рядом с этим сигналом тревоги, нужно ли мне делать что-то другое?Установка нескольких аварийных сигналов

Кроме того, возможно ли иметь несколько видов видов, чтобы показать, когда будильник погас? Если бы я хотел, чтобы одно представление появилось в 11:15, а другое представление появилось в 12:36, могу ли я настроить это? Если да, то как?

private void setCollectionAlarms() { 

    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 

    interval = 900000; 

    try { 
     //If the date is set to HHmm, then add current date time 
     SimpleDateFormat format = new SimpleDateFormat("HH:mm"); 
     String time = "11:15"; 

     long timeOfFirstCollectionInMillis = format.parse(time).getTime(); 
     System.out.println("Time in Milis: " + timeOfFirstCollectionInMillis); 

     Calendar now = Calendar.getInstance(); 
     now.setTime(new Date()); 

     Calendar cal = Calendar.getInstance(); 
     Date timedate = format.parse(time); 
     cal.setTime(timedate); // thinks 1970 
     cal.set(Calendar.YEAR, now.get(Calendar.YEAR)); 
     cal.set(Calendar.MONTH, now.get(Calendar.MONTH)); 
     cal.set(Calendar.DAY_OF_MONTH, now.get(Calendar.DAY_OF_MONTH)); 

     //If the time from the db is before now (That is no date set but time set), then set it for tomorrow 
     if (cal.before(now)) { 
      // increase 
      Date tomorrow = cal.getTime(); 
      cal.setTime(tomorrow); 
      cal.add(Calendar.DATE, 1); 
      tomorrow = cal.getTime(); 
      System.out.println("TimeDate for Tomorrow: " + tomorrow); 

      //convert date to milis 
      long timeInMilis = (tomorrow.getTime()); 

      //Set Alarm to Repeat 
      manager.setRepeating(AlarmManager.RTC_WAKEUP, timeInMilis, interval, pendingIntent); 


      //else, set the alarm for today 
     } else { 
      timedate = cal.getTime(); 
      System.out.println("TimeDate: " + timedate); 

      //convert date to milis 
      long timeInMilis = (timedate.getTime()); 

      //Set Alarm to Repeat 
      manager.setRepeating(AlarmManager.RTC_WAKEUP, timeInMilis, interval, pendingIntent); 


     } 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

} 
+0

Просто краткое примечание, чтобы довести до вашего сведения поведение setRepeating, измененное в KitKat - https://developer.android.com/about/versions/android-4.4.html, оно не является точным (в случае, если это имеет значение) –

+0

ой ну спасибо! Мне нужна точная повторяющаяся тревога. Возможно ли это? –

+0

Да, 'setExact()' будет работать корректно. Сейчас немного больно, если вы хотите, чтобы это было точно, вам нужно установить новый сигнал тревоги, когда вы обрабатываете событие (в вашем «BroadcastReceiver») из setExact, эффективно создавая цепочку аварийных сигналов, причем последняя установка время для следующего. –

ответ

1

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

Android bytes: Alarms

Надеется, что это достаточно ясно, но если у вас есть какие-либо дополнительные вопросы, я могу обновить ответ.

+0

Привет, Бен, у меня есть еще один вопрос, если вы хотите сохранить значения тревоги в моей базе данных и обновить значение до нового времени будильника, как я могу это сделать? Как узнать, когда срабатывает будильник? Я хотел бы сохранить триггер тревоги, и это значение, но как узнать, когда будильник погаснет? –

+0

Надеюсь, это было ясно из сообщения в блоге? Когда будильник срабатывает, вы переходите к BroadcastReceiver. Если вы хотите обновить будильник, вы можете удалить его, а затем добавить. Если бы это помогло вообще, было бы оценено преимущество. –