Страница 1 из 1

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

Добавлено: 07 сен 2013, 00:52
Elek
Доброго времени дня :) .

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

Будильников может быть несколько, каждый может настраиваться на разные дни недели и на разное время.
Для этого сделал таблицу, которая хранит 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 , которые относятся к моей аппликации, отменить их и пересоздать, если я вношу какие-то изменения ?

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

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

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

Добавлено: 10 сен 2013, 03:38
mozilalvfg
Может стоит дни недели загнать в массив, при создании будильника добавлять те дни недели когда должен срабатывать будильник. При наступлении времени будильника проверять день на совпадение и если совпадает то обрабатывать. Думаю надо обязательно учесть Тайм зоны и в идеале привязать до локации устройства (можно в самолёте перелететь в Лондон из Москвы) - логично добавить поле часовой пояс в будильник.