Запланировать сигнал тревоги с помощью AlarmManager не работаетAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Запланировать сигнал тревоги с помощью AlarmManager не работает

Сообщение Anonymous »



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

сейчас существует много примеров, поэтому не следует слишком сложно это должно быть :-(

Теперь это еще не самый красивый код в плане использования ресурса.

Чтобы поставить будильник

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»