我正在尝试使用以下代码设置特定日期和时间的闹钟:
private lateinit var alarmManager: AlarmManager
alarmManager = activity?.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val intent = Intent(context, AlarmReceiver::class.java)
intent.putExtra("alarm", newAlarm)
pendingIntent = PendingIntent.getBroadcast(
context,
2342,
intent,
PendingIntent.FLAG_IMMUTABLE
)
val myAlarmDate = Calendar.getInstance()
myAlarmDate.timeInMillis = System.currentTimeMillis()
// myAlarmDate[alarm?.year ?: 0, alarm?.month ?: 0, alarm?.hour ?: 0, alarm?.minute ?: 0, 0] =
0
myAlarmDate[2023, 9, 22, 10, 0] =0
val alarmManager = requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmManager[AlarmManager.RTC_WAKEUP,myAlarmDate.timeInMillis]=pendingIntent
但它不工作/触发任何警报
您需要使用一种可用的计划方法来设置闹钟。单独实例化不会激活它。例如:
...
val alarmManager = requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManager
// set the alarm
alarmManager.set(AlarmManager.RTC_WAKEUP, myAlarmDate.timeInMillis, pendingIntent);
...
根据您的使用案例,您可以使用
AlarmManager
中的几种可用方法之一来设置闹钟。
可以有一次性(例如
set()
)或重复警报(例如setRepeating()
)。当谈到传送精度时,可以有精确的(例如setExact()
)或不精确的警报(例如set()
)。
要找出哪一个最适合您的需求,我建议您进一步阅读 AlarmManager
的
文档。