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

Теперь это еще не самый красивый код в плане использования ресурса.
Чтобы поставить будильник
Код: Выделить всё
fun setAlarm(offsetDay: Int, hour: Int, min: Int) {
Log.i("XXX", "setAlarm start method")
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
Toast.makeText(mContext, "need min android O", Toast.LENGTH_LONG).show()
} else {
val alarmManager = mContext.getSystemService(AlarmManager::class.java)
val alarmIntent = Intent(mContext, CustomAlarmReceiver::class.java).let {
PendingIntent.getBroadcast(mContext, 222, it, PendingIntent.FLAG_IMMUTABLE) }
Log.i("XXX", "manager and intent set")
// todo: on the real phone version remove the timezone for the now-part it will then take the default timezone
val now = LocalDateTime.now(TimeZone.getTimeZone("Europe/Amsterdam").toZoneId())
val tempTarget = LocalDateTime.of(
now.toLocalDate(),
LocalTime.of(hour, min)
)
val target = tempTarget.plusDays(offsetDay.toLong())
val duration = Duration.between(now, target)
Log.i("XXX", "duration calculated: ${duration.toMillis()}")
if (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
alarmManager.canScheduleExactAlarms()
} else {
true
}
) {
alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + duration.toMillis(),
alarmIntent
)
Log.i("XXX" "setExact completed")
Toast.makeText(mContext,"alarm set", Toast.LENGTH_LONG).show()
}
}
}
также трудно определить, установлен ли сигнал тревоги, поскольку примеры создания намерения с помощью FLAG_NO_CREATE не работает в Android 12, и я не смог найти другого способа проверить это.
использование команды «adb Shell dumpsys Alarm» дает так много данных, что найти что-либо практически невозможно, но после долгий долгий поиск, я почти уверен, что моего будильника нет в списке.
поэтому на данный момент 2 вопроса:
- что не так с моим кодом для установки будильника?
- как проверить, установлен ли «будильник» в Android выше 12 ?
Обновление1
Обновлен код (добавлен Log.i) на основе вопроса о dominicoder
На изображении ниже вообще нет сообщений в журнале, за исключением того, что я пишу сам. Журнал также показывает, что рассчитанная мной продолжительность является положительным числом. Способ работы скопирован из справки Android.
Эта ссылка: планирование сигналов тревоги (пример: «Разбудите устройство, чтобы подать одноразовый (неповторяющийся) сигнал тревоги через одну минуту») Единственная разница в том, что я использовал «точное» (пробовал то же самое, что и в примере, но тот же результат).

Подробнее здесь: https://stackoverflow.com/questions/785 ... ot-working