android - 如何在kotlin中设置多个警报?
问题描述
所以我是编码新手,我正在为穆斯林祈祷时间制作一个应用程序,我希望在这些时间重复设置警报,我尝试了很多事情,但它不起作用!
我有一个祈祷课,如果有人想要,我会放上去的
如果您能帮助我为 1 次祈祷设置闹钟,我会更加感激,这样我就可以完成剩下的工作。
主要活动
val latitude = 30.354802
val longitude = 42.2461069
val timezonoffset = 3.0
val timeZoneId = "Middle East/Alowiqila"
val prayTimes = PrayTimes()
prayTimes.timeFormat = prayTimes.time12//
prayTimes.calcMethod = prayTimes.makkah// Muslim World League (MWL)
prayTimes.asrJuristic = prayTimes.hanafi// Shafii (standard)
prayTimes.adjustHighLats = prayTimes.angleBased
val offsets = intArrayOf(0, 0, 0, 0, 0, 0, 0) // {Fajr,Sunrise,Dhuhr,Asr,Sunset,Maghrib,Isha}
prayTimes.tune(offsets)
val cal = Calendar.getInstance(TimeZone.getTimeZone(timeZoneId))
cal.time = Date()
val times = prayTimes.getPrayerTimes(cal, latitude, longitude, timezonoffset)
println("prayer times for Alowiqila")
System.out.println("Fajr : " + times.get(0))
System.out.println("Sunrise : " + times.get(1))
System.out.println("Duhr : " + times.get(2))
System.out.println("Asr : " + times.get(3))
System.out.println("Sunset : " + times.get(4))
System.out.println("Magrib : " + times.get(5))
System.out.println("Isha : " + times.get(6))
// I want the Alarm to be set to the code above it
fun startAlarm(isNotification:Boolean, isRepeat:Boolean) {
val manager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val myIntent= Intent(this@MainActivity, AlarmReceiver::class.java)
val pendingIntent:PendingIntent
// SET TIME HERE
val calendar = Calendar.getInstance()
calendar.set(Calendar.HOUR_OF_DAY, 15)
calendar.set(Calendar.MINUTE, 20)
pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0)
if (!isRepeat)
manager.set(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 3000, pendingIntent)
else
manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, AlarmManager.INTERVAL_DAY, pendingIntent)
}
报警接收器.kt
这是我在女巫中的警报接收器我已经添加了通知
class AlarmReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val builder = NotificationCompat.Builder(context)
val myIntent = Intent(context, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context,
0,
myIntent,
FLAG_ONE_SHOT
)
builder.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setContentTitle("موعد الاذان")
.setContentIntent(pendingIntent)
.setDefaults(Notification.DEFAULT_LIGHTS or Notification.DEFAULT_SOUND)
.setContentInfo("Info")
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(1, builder.build())
}
解决方案
您必须将不同的 requestCode 放在待处理的意图中,每个警报管理器需要不同的 requestCode。在你的 mainActivity
pendingIntent = PendingIntent.getBroadcast(this, (0..2147483647).random(), myIntent, 0)
推荐阅读
- html - CSS,使用 nth-of-type() 选择器获取元素的第 2 次和第 3 次迭代
- java - 在 dateTimeFormat 之后年份更改为 0000
- amazon-ecs - 将自定义 conf 文件传递给 ECS 任务定义
- c# - LogMeIn GoToWebinar SDK 响应 403 Access denied
- reactjs - 无法解析 Firebase 配置文件 React
- ios - 如何在屏幕上快速显示数据
- java - 打开 zip 文件时出错或缺少 JAR 清单:build/tmp/expandedArchives/org.jacoco.agent
- c# - 在嵌套控件 (WinForm) 上运行时访问值
- javascript - 文档未在 javascript 上定义
- javascript - Onclick 图像切换图像 src