Настройка Android alarm Manager на определенные дни

#android

#Android

Вопрос:

Я создаю приложение, которое использует alarm Manager. Пользователь устанавливает день и время, и есть 7 флажков, по одному на каждый день недели, и те, которые они помечают, будут срабатывать в эти дни. Как я знаю, вы можете указать дату и время в диспетчере сигналов тревоги, есть ли какой-либо способ, которым я могу указать день и время в диспетчере сигналов тревоги, и они будут отключаться в этот день каждую неделю?

Ответ №1:

AlarmManager.setRepeating принимает в качестве параметра:

введите одно из значений ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP}, RTC или RTC_WAKEUP.

Здесь вам понадобится RTC или RTC_WAKEUP

Время срабатывания будильника должно сначала сработать, используя соответствующие часы (в зависимости от типа будильника).

Здесь вы указываете дату / время первого сигнала тревоги (я полагаю, это должно быть время UTC, поэтому будьте осторожны)

 Calendar calendar = new GregorianCalendar(2011, Calendar.APRIL, 19, 23, 12);
long firstTime = calendar.getTimeInMillis();
  

интервал Между последующими повторами сигнала тревоги.

Чтобы повторять каждую неделю, вы будете указывать в качестве интервала количество миллисекунд за целую неделю:

 long interval = 1000 * 60 * 60 * 24 * 7;
  

или

 long interval = 7 * AlarmManager.INTERVAL_DAY;
  

Комментарии:

1. Отметьте ответ как принятый (используя галочку слева), если этот ответ был полезен для вас и решил вашу проблему.

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