Создание аналога будильника.

Ответить
Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Создание аналога будильника.

Сообщение Elek » 07 сен 2013, 00:52

Доброго времени дня :) .

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

Будильников может быть несколько, каждый может настраиваться на разные дни недели и на разное время.
Для этого сделал таблицу, которая хранит id строки, конкретного будильника, его состояние (если включне - 1, выключен 0), по той же самой системе хранится значение каждого дня недели.
Теперь вопросы :) :

1. Для того. чтобы будильник повторялся в определенные дни недели, нужно ставить для каждого дня свой будильник и делать ему повторение раз 7 дней (указать интервал в миллисекундах)?
Что-то по типу:

Код: Выделить всё

AlarmManager manager = (AlarmManager) context
				.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, alarmId,
				disableIntent, PendingIntent.FLAG_UPDATE_CURRENT);
manager.setRepeating(AlarmManager.RTC_WAKEUP, triggerAt, ONE_WEEK_MILLISECS, pi);
2. Пользователь захочет поменять время выполнения будильника или дни выполнения у уже существующего. Как вообще правильно это обработать, стоит добавить еще столбцы в таблицу, которые будут хранить предыдущие изменения и с их помощью отменять PendingIntent ?

3. Может есть возможность получить все PendingIntent , которые относятся к моей аппликации, отменить их и пересоздать, если я вношу какие-то изменения ?

Подскажите, как вообще это все правильно делается, я уже совсем запутался :).
Какой у меня должен быть порядок действий :)?

Заранее благодарен.

Аватара пользователя
mozilalvfg
Сообщения: 85
Зарегистрирован: 10 авг 2013, 18:46

Re: Создание аналога будильника.

Сообщение mozilalvfg » 10 сен 2013, 03:38

Может стоит дни недели загнать в массив, при создании будильника добавлять те дни недели когда должен срабатывать будильник. При наступлении времени будильника проверять день на совпадение и если совпадает то обрабатывать. Думаю надо обязательно учесть Тайм зоны и в идеале привязать до локации устройства (можно в самолёте перелететь в Лондон из Москвы) - логично добавить поле часовой пояс в будильник.
Из средств, расширяющих сознание, я признаю только книги и немного пива!
____________________________________________________________________
IntelliJ IDEA 12. Win 7 x64 sp1
KSWEB: сервер + PHP + MySQL FREE
Изображение

Ответить