- Программируем будильник или использование AlarmManager в Android
- Несколько слов о классе AlarmManager
- Программируем приложение-будильник для Android
- Как установить будильник на Android
- Настройка стандартного приложения
- Сторонние приложения
- Будильник на Android: где он находится, как установить и настроить
- Как установить будильник
- Другие будильники
- Сменный будильник
- Простой будильник
Программируем будильник или использование AlarmManager в Android
При разработке приложения порой бывает необходимо выполнять какие-то действия в будущем. Например, вы хотите создать будильник или периодически отправлять данные на свой сайт в строго определенное время. Для решения подобных задач в Android используется классAlarmManager, который позволяет выполнять код в требуемый момент времени, даже если ваше приложение не запущено. То-есть AlarmManager — аналог corn в Linux или планировщика задач Windows. Вы говорите, что такой-то кусок кода должен выполниться тогда-то и AlarmManager обеспечивает запуск кода. В англоязычный литературе таймер, который выполняет код в требуемый момент времени обозначается терминомalarm. Давайте в рамках данной статьи называть этот таймербудильником, чтобы отделить это понятие от таймера.
Несколько слов о классе AlarmManager
Фактически класс AlarmManager обеспечивает доступ к сервису планировки задач Android. Для получения объекта этого класса нужно вызвать методContext.getSystemService(Context.ALARM_SERVICE).AlarmManagerрегистрирует в системе интент и когда наступает обозначенное время, AlarmManager запускает этот интент. Если момент вызова приложение закрыто, то оно будет вновь запущено. AlarmManager нужно использовать только в случае, если код должен быть выполнен даже при закрытом приложении, во всех других случаях рекомендуется использовать классHandler.
Класс AlarmManager довольно прост. В нашем распоряжении шесть методов:
- void cancel(PendingIntent operation) — отменяет установленный таймер для переданного в качестве параметра интента.
- void set (int type, long triggerAtMillis, PendingIntent operation) — устанавливает будильник, который сработает один раз.
- void setInexactRepeating (int type, long triggerAtMillis, long intervalMillis, PendingIntent operation) — установка будильника с неточным повторением.
- setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)— установка будильника с точным повторением.
- setTime(long millis) — установка системного времени.
- setTimeZone(String timeZone) — установка временной зоны, выбранной по-умолчанию.
ЗдесьPendingIntent— класс, который представляет интент и связанное с его выполнением действие. Передавая PendingIntent другому приложению Вы тем самым даете ему право запускать кусок кода из своей программы.
В качестве типа будильника (параметрtype) может быть передано одно из значений ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC и RTC_WAKEUP. ELAPSED_REALTIME и ELAPSED_REALTIME_WAKEUP — время задается с момента загрузки устройства, а RTC и RTC_WAKEUP — системное время в UTC. Для ELAPSED_REALTIME и RTC если устройство находится в спящем режиме в момент срабатывания будильника, то связанный с ним интент будет вызван позже, когда пользователь выведет устройство из спящего режима. Для ELAPSED_REALTIME_WAKEUP и RTC_WAKEUP если устройство находится в спящем режиме, оно немедленно пробуждается и вызывается интент.
Программируем приложение-будильник для Android
Давайте в качестве примера разработаем приложение — будильник. При запуске программы пользователю будет показано окно с тремя кнопками. С их помощью пользователь сможет: установить будильник, который срабатывает один раз; будильник, который будет срабатывать периодически; а также удалить ранее установленные будильники.
Создадим новый проект в макет шаблона добавим три кнопки
КнопкаbtStartустанавливает повторяющийся будильник, кнопкаbtCancel— отменяет его. КнопкаbtOneTime— создает не повторяющийся будильник. Прямо в шаблоне мы указали методы, которые будут вызываться при нажатии на кнопки: startRepeatingTimer, cancelRepeatingTimer и onetimeTimer соответственно. Код этих методов будут приведен в классе Activity.
Для работы сAlarmManagerнапишем отдельный класс. В качестве базового класса используем BroadcastReciever. Наш класс будет управлять зарегистрированным с помощью AlarmManager интентом. Мы переопределим методonReceive(), который будет вызываться после получения интента. Внутри метод onReceive() мы должны попытаться получить связанные с интентом параметры. В своей программе мы будем использовать один параметр ONE_TIME, который позволяет определить, относится ли интент к однократно срабатывающему будильнику или нет. После того, как значение ONE_TIME получено, пользователю показывается соответствующее сообщение.
Также в этом классе определим методы setAlarm(), cancelAlarm() и onetimeTimer(). Конечно эти методы можно было определить и в другом месте, мы включили их в данный класс из соображения простоты примера.
- Метод setAlarm() устанавливает повторяющийся будильник с помощью метода setRepeating(). Этому методу требуется четыре параметра: тип будильника, время запуска (устанавливаем текущий момент), интервал в миллисекундах, интент, который будет вызываться при срабатывании будильника.
- Метод cancelAlarm() отменяет зарегистрированный ранее будильник с помощью вызова метода cancel(), которому перезается в качестве параметра интент. При совпадении этого параметра с зарегистрированным ранее интентом, произойдет удаление будильника.
- Метод onetimeTimer() создает будильник, который срабатывает один раз. Делается с помощью метода set(), которому передается три параметра: тип будильника, время запуска, вызываемый интент.
Ниже приводится файл манифеста. Обратите внимание, для корректной работы программе необходимо дать разрешениеWAKE_LOCK, поскольку мы используем блокировку потока в методе onReceive(). Также тут мы регистрируем AlarmManagerBroadcastReceiver, как получатель широковещательных сообщений
Теперь давайте напишем класс, в котором реализуем обработчики кнопок. Здесь мы создадим экземпляр описанного выше класса AlarmManagerBroadcastReciever и будем вызывать методы setAlarm(), cancelAlarm() и setOnetime().
При надатии на кнопки будут установлен будильник. Исходный код проекта можно скачатьздесь.
Источник
Как установить будильник на Android
Современные мобильные телефоны и смартфоны выполняют много функций, для которых раньше нужно было использовать отдельное устройство. Будильник – одна из таких функций. Сейчас большинство людей просыпаются утром под будильник, настроенный на своем мобильном телефоне или смартфоне. В данной статье мы расскажем о том, как установить будильник на Андроиде. Кроме этого мы рассмотрим несколько приложений, которые могут заменить стандартный будильник в операционной системе Android.
Настройка стандартного приложения
По умолчанию, функции будильника в Android выполняет стандартное приложение «Часы». Вы можете найти это приложение в меню с программами и вынести его ярлык на рабочий стол.
После запуска приложения «Часы» необходимо перейти на вкладку « Будильник», для этого нажмите на иконку будильника в левом верхнем углу приложения.
Дальше нужно нажать на кнопку «+», которая будет находиться в нижней части окна программы.
После этого перед вами откроется окно в котором нужно настроить время срабатывания будильника.
После того как нужно время установлено – нажимаем на кнопку «Готово».
Все, вот так устанавливается будильник на Андроиде. После того как будильник создан, можно включить функцию «Повтор», в этом случае будильник будет срабатывать в выбранные дни.
Например, вы можете настроить будильник таким образом, чтобы он срабатывал только с понедельника по пятницу. Также можно включить или отключить вибросигнал или поменять мелодию. Это все доступные функции стандартного будильника на Андроид.
Сторонние приложения
Если вам нужно больше возможностей, то вы можете установить другое приложение-будильник. Сторонние приложения работают также стабильно и надежно, как и стандартный будильник. Поэтому можно не опасаться, что будильник не сработает.
Alarm Clock Xtreme Free – продвинутый будильник для Android. Отличительной чертой данного приложения-будильника является множество настроек. Например, Alarm Clock Xtreme Free позволяет включить защиту от случайного отключения будильника. В этом случае после срабатывания будильника вам придется встряхнуть смартфон, решить математическое упражнение или ввести контрольный текст.
Источник
Будильник на Android: где он находится, как установить и настроить
Стандартный будильник на Андроиде может похвастаться достаточным количеством функций для того, чтобы вы не боялись проспать и смогли вовремя прийти на работу или учебу.
Если вы ищите приложение, которое сделает процесс пробуждения более комфортным, то стоит воспользоваться специальными будильниками, которые умеют отслеживать фазы сна, настраивать расписание для работы в сменном графике. Далее мы расскажем, как установить стандартный будильник и рассмотрим другие приложения с дополнительным функционалом.
Как установить будильник
На любом Android смартфоне или планшете будильник настраивается через виджет часов на главном экране. Инструкция:
Шаг 1. Откройте главный экран и тапните на виджет с часами. Здесь перейдите на вкладку «Будильник».
Шаг 2. Нажмите на кнопку «Добавить» (в виде плюса), чтобы создать новый будильник. Здесь укажите нужное время, настройте другие параметры (мелодия, вибрация, описание).
Шаг 3. На главной странице нажмите на значок «Показать больше» в виде трех точек и выберите «Настройки». Откроется страница, на которой можно изменить общие параметры для будильников (мелодия, повтор, автоотключение, функции боковых кнопок и другое).
Шаг 4. Чтобы отредактировать или отключить уже существующий будильник, откройте список и тапните по нужному сигналу. После этого внесите все необходимые изменения и нажмите «Готово».
Изменения, которые вносятся для каждого конкретного будильника (например, мелодия и повтор) никак не влияют на другие сигналы. Они работают независимо друг от друга.
Другие будильники
Возможностей стандартного будильника достаточно для большинства пользователей. Но если вы ищите приложение с дополнительным функционалом (например, с поддержкой «умного» пробуждения), то далее мы рассмотрим несколько интересных будильников.
Сменный будильник
Сменный будильник — это незаменимый помощник для тех, кто работает не на «пятидневке», а посменно. С помощью приложения можно быстро настроить расписание для разных графиков (утренний, дневной, ночной), вручную указать выходные. Кроме того, будильник поддерживает пользовательские мелодии, позволяет настраивать интервалы повтора и другие параметры.
Источник
Простой будильник
Не работает будильник
Всем привет, может тут найду ответ! купил недавно мобилу oysters pacific e с Андройдом 6,1.
Будильник в точные минуты
Добрый день. Подскажите. как назначить setRepeating в AlarmManager, чтоб действие срабатывало.
Планирование задач будильник и тд
Здравствуйте. Подскажите как в android 9 создать отложенные задания или будильник если все гугл.
Разработка приложения — будильник
Всем привет! У меня такая проблема,что я не могу привязать свой timepicker с графическим барабаном.
дама-кодер. редкое явление!
А по сути. Разберись с алармом! Сервисом и выводом диалога из сервиса.
1) В обычном/первом активити задавай время аларма
2) Аларм запускает сервис
3) сервис выводит активити с «пищалкой» (сложно, но есть в инете инструкции)
. для диплома хватит
(задача ОЧЕНЬ сложная в полном обьеме — будить телефон, пробивать защиту экрана, пищать в фоне, откладывать, несколько будильников, учет пропущеных звонков, не пищать во время разговора)
На телефоне и у меня есть) Но деньги платят за то,чтобы я сама это сделала)
Добавлено через 30 секунд
Спасибо) Вникать и вникать)
юная фрилансер!
скажем так. я только сейчас первый нормальный будильник написал — через 1.5 года после начала изучения андроида. Где-то 7я-9я попытка — уже неделю-полторы тестирую. И проц жрало на 100% и убивало устройство через 2 часа с жутким перегреванием и явным переполнением памяти. И просто переставала работать без явных причин через 2-3 удачных срабатывания.
chizz, вот взяли бы, и своей тимой из соседней темы, и сделали бы девушке подарок:)
Ну если девушка уговорит.. 🙂
Я не просила делать за меня эту работу,а всего лишь просила совета. Это ведь не запрещено?
Добавлено через 57 секунд
Спасибо! Гляну
Я так поняла,для моей задачи и будильник-то не особо нужен. Наверное,и таймер сойдет, который можно выставлять
Alena_sevik, советую почитать:
После этого вы сможете сделать простой будильник. но он вряд ли будет будить телефон в спящем режиме.
Добавлено через 1 минуту
Alena_sevik, попробуйте сделать по примеру, который я вам дал. После этого вы поймете, что еще не хватает
Не все так просто.
1) Аларм — это ВСТРОЕННЫЙ системный таймер. Можно указать когда сработает и через сколько повторить (или не повторять). Система сама заботится о правильном срабатывани. Но. слышал про устройства или левые «прошивки» в которых это глючило. Для простого будильника на приличном устройстве этого хватит!
2) научись проигрывать музыку из файла. Желательно циклично (я 2-3 дня на понимание нюансов убил)
3) Аларм устанавливай из активити управляя временем с сохранением настроек «как часто»
4) Аларм вызывает бродкаст, а бродкаст открывает активити (возможно через сервис) — надо потестить! Через сервис срабатывало (нагуглил). Без сервиса не тестил.
5) Убедись после перезагрузки (ресивером) что будильник не сдох
6) не всегда срабатывает ресивер перезагрузки — иногда полезно ловить другие ресиверы (я ловлю смену уровня батарейки) для перепроверки
7) есть неубиваемый сервис. технология описана на хабре. моя текущая версия на нем построена. На всех этих технологиях. долго добивался «баланса» между неубиваемостью и нагрузкой на проц. В нем можно выставлять любое время проверки на «пора?» — хоть несколько раз в секунду. сейчас проходит тестирование. вроде не сдыхает на этот раз и после перезагрузки востанавливается. (делиться наработками не буду, но можешь попробовать повторить)
Боюсь что если дело в приеме лекаств. стоит сделать «на совесть».
. хотя. аларма должно хватить! проблема клиента если у него глючит прошивка или слишком китайский телефон.
Источник