2013-11-07 3 views
2

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

В настоящее время я делаю следующий:

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY, hour); 
calendar.set(Calendar.MINUTE, minute); 

Intent intent = creating an Intent here 
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); 

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

, насколько я понимаю, следующий код будет срабатывать сигнал тревоги на время я уточнен и делать это каждый день, из-за AlarmManager.INTERVAL_DAY.

Я думал делать дальше, чтобы выполнить свою задачу:

for(int i = 1; i < 6; i++) { 
    calendar.add(Calendar.DAY_OF_WEEK, i); 
    } 

Но я не уверен, о правильности этой логики. Можете ли вы 1. поправьте меня, если я что-то пропустил 2. предложить некоторые правильное решение или только ваши мысли, чтобы выполнить свою задачу

Update:

Ну, я подумал о следующем: что если я

calendar.set(Calendar.DAY_OF_WEEK, 1); 

, а затем

am.setRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 5, pendingIntent); 

, поэтому в результате я установлю начальный день на понедельник и повторю его 5 раз, поэтому с понедельника по пятницу, независимо от того, какая текущая дата, когда пользователь устанавливает будильник, это правильно или я пропускаю что-л. Btw, как я могу обновить setRepeating, чтобы он повторял каждую неделю, а не только одну?

Update1:

Я предполагаю, что я понял свою ошибку, используя код выше, я буду делать какие-то странные вещи, поэтому INIT день понедельник, однако интервал повтора один раз в 5 дней, не каждый день с понедельника по пятницу.

+0

Вы можете проверить, является ли день 'SATURDAY' или' SUNDAY' после добавления времени в 'calendar', а затем принять решение не устанавливать будильник. Однако вы не можете использовать 'setRepeating()', поскольку он не может проверить день. –

+0

Привет, спасибо. Ну, я не понимаю, как я могу установить начальный день в понедельник и повторять тревогу каждый день, кроме выходных, независимо от того, какой текущий день, когда пользователь устанавливает будильник. – tratto

+0

Извините, я только что видел ваше редактирование (Update1), и кажется, что это намного проще, чем моя идея. Я думал использовать '.set()' с 'Calendar', установленным в будние дни вручную, но это очень хлопотно.Кстати, я рекомендую вам опубликовать ваше мнение в качестве ответа на этот пост. Это нормально (и рекомендуется!) Для айзера, чтобы ответить на его собственный вопрос здесь :) –

ответ

1

кажется, что единственным решением является установка

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

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

... 
    if(intent.getBooleanExtra(INTENT_NOTIFY, false) && !isWeekend()) 
    showNotification(); 
... 

    private boolean isWeekend() { 
    Calendar calendar = Calendar.getInstance(); 
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); 
    return (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY); 
    } 

Btw, скажи мне, пожалуйста, я поставил будильник в режиме повтора, в первый раз он сделал огнь, то я открываю настройки эмулятора и вручную переместить дату завтра и время назад, но не уведомление о тревоге не у него есть эмулятор или у меня есть некоторые ошибки в коде?

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