Ответ
Да, делал. Основные сложности: работа с AlarmManager и WakeLock для гарантированного срабатывания, обработка Doze Mode, создание персистентного уведомления для Android 8+.
Пример установки будильника:
val alarmManager = context.getSystemService(ALARM_SERVICE) as AlarmManager
val intent = Intent(context, AlarmReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(context, requestCode, intent, FLAG_IMMUTABLE)
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.RTC_WAKEUP,
triggerTime,
pendingIntent
)
Для Android 10+ важно запрашивать SCHEDULE_EXACT_ALARM permission. Также учитывал различия в API уровней и тестировал на разных устройствах.