Course Content
-
Разработка приложения Фитнес-календарь
- Описание проекта
- Разработка графического интерфейса для отображения списка запланированных тренировок
- Создание уведомления Notification
- Создание PendingIntent
- Разработка интерфейса для создания напоминания о тренировке
- Создание локальной БД для хранения информации о тренировках
- Создание BroadcastReceiver
- Создание каналов уведомлений
- Доработка методов для отображения уведомлений
- Описание Alarm Manager
- Реализация механизма напоминания через AlarmManager
- Cоздание PendingIntent и добавление его к AlarmManager.
- Выводы
Создание BroadcastReceiver
Чтобы иметь возможность отобразить уведомление когда AlarmManager оповестит систему о том, что сработало условие (например подошло время напоминания и дата) нам необходимо зарегистрировать BroadcastReceiver. BroadcastReceiver примет отложенный intent, в котором будет храниться информация об идентификаторе объекта ReminderData и по нему мы сможем позже отобразить всю нужную информацию пользователю в уведомлении.
Для регистрации BroadcastReceiver добавьте в AndroidManifest.xml
<receiver android:name=".notification.AlarmReceiver" />
И создайте класс в папке notification с названием AlarmReceiver
class AlarmReceiver : BroadcastReceiver() { private val TAG = AlarmReceiver::class.java.simpleName override fun onReceive(context: Context?, intent: Intent?) { Log.d(TAG, "onReceive() called with: context = [$context], intent = [$intent]") if (context != null && intent != null) { if (intent.extras != null) { val reminderData = ReminderLocalRepostiory(context).getReminderById(intent.extras!!.getLong(KEY_ID)) if (reminderData != null) { NotificationHelper.createNotificationForWorkout(context, reminderData) } } } } }
Когда сработает AlarmManager – BroadcastReceiver получит intent и дальше мы уже можем использовать его как хотим. В данном случае получим параметр id и по нему запросим данные из репозитория с базой данных. А после этого отобразим уведомление с помощью метода createNotificationForWorkout() который создадим в следующем уроке.