Создание тревоги с помощью AlarmManager на определенный период времени

Есть ли способ использовать AlarmManager для активации будильника на определенный период времени? У меня есть значения времени начала и окончания, хранящиеся в базе данных. Я хочу включить будильник в начальное время, чтобы устройство замолчало, а будильник должен закончиться в конечное время, когда громкость устройства снова станет нормальной.

Один из способов установить будильник в начале, а затем установить другой будильник в конечное время. Но проблема в том, что период времени может перекрываться, что потребует реализации дополнительной логики, если я выберу 2 разных будильника (один в начале, другой в конце). Есть ли в Android какая-нибудь процедура, чтобы справиться с этой ситуацией? Или реализация логики — единственный способ решить эту проблему?


person Khobaib    schedule 16.08.2012    source источник


Ответы (1)


Почему бы просто в вашем Intent для PendingIntent не передать дополнительный длинный тип "endTime" для времени, когда вы хотите отключить будильник. (я предполагаю, что это повторяется), затем в вашем широковещательном приемнике получите это дополнительное, сравните с System.currentTimeMillis(), и если оно меньше текущего времени, отмените будильник и выйдите?

person Jug6ernaut    schedule 16.08.2012
comment
Не могли бы вы объяснить, как это может решить проблему перекрытия временных интервалов, с которой я сейчас сталкиваюсь? - person Khobaib; 17.08.2012
comment
Я думаю, я не понимаю эту проблему, не могли бы вы объяснить это немного больше? - person Jug6ernaut; 18.08.2012
comment
@jugernaut - пользователь вводит некоторые временные интервалы (время начала и время окончания), в эти интервалы телефон будет находиться в беззвучном режиме. Проблема в том, что пользователь вводит 2 интервала, где интервалы перекрывают друг друга, например, с 10:00 до 12:00 и с 11:00 до 14:00. В этом случае проблема возникает, поскольку AlarmManager реализует первый сигнал тревоги в 10:00, а затем в 11:00 снова пытается реализовать беззвучный режим. Но телефон уже молчит. в 12 часов телефон будет нормальным к первому интервалу, но в то же время второй интервал хочет, чтобы телефон молчал до 14:00. Итак, нам нужно реализовать некоторую логику. - person Khobaib; 18.08.2012
comment
Я просто хотел знать, есть ли способ реализовать эту функцию? Я собираюсь добавить новую подсказку, в которой пользователи информируются о перекрытии и просят изменить новую/перезаписать существующую. Возможно, это лучший вариант на данный момент. - person Khobaib; 18.08.2012