Tag: repeatingalarm

AlarmManager在错误的时间发出警报

我pipe理所有的东西都可以创build一个通知服务,用于通过报警触发通知。 不幸的是,使用AlarmManager设置闹钟是行不通的。 它几分钟后才会启动(不完全是小时,这表示时区问题)。 重复周期为1周,所以我使用了常量INTERVAL_DAY并将其与7相乘。为了确保一个PendingIntent不会replace另一个PendingIntent,我将dayOfWeek作为第二个parameter passing给PendingIntent.getService()。 我通过logging来检查闹钟的正确性: Log.d(TAG, "next alarm " + df.format(cal.getTime())); 是否真的没有办法列出所有的警报设置 – 至less从我自己的应用程序? 我相信这是追踪错误的唯一方法。 我的代码: cal.setTimeInMillis(System.currentTimeMillis()); cal.add(Calendar.DATE, 1); cal.set(Calendar.HOUR_OF_DAY, hour); cal.set(Calendar.MINUTE, minute); Log.d(TAG, "next alarm " + df.format(cal.getTime())); Intent showNotificationIntent = new Intent(context, NotificationService.class); dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); alarmIntent = PendingIntent.getService(context, dayOfWeek, showNotificationIntent, 0); getAlarmManager(context).setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), INTERVAL_WEEK, alarmIntent); 我想提供每天有一个警报,但在不同的时间,这可以由用户设置。 所以我使用了最多7个闹钟,每周应该开启。 即使在阅读了类似问题的许多答案(我不打算创build一个重复的问题)之后,我还没有设法find问题。

如果闹钟时间已经过去,android可以防止即时触发闹钟服务

报警pipe理器的参考说 如果所述的触发时间在过去,则会立即触发警报。 我在申请中遇到了这个问题。 这是我的报警pipe理员代码: Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class); pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingDinnerIntent); 有没有解决这个问题的方法? – – -编辑 – – – 我已经写了一些代码来估计闹钟的设置时间是否在当前时间之前。 以上是具有相应变化的部分: Calendar calendar = Calendar.getInstance(); long currentTime = calendar.getTimeInMillis(); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); long setTime = calendar.getTimeInMillis(); Timestamp setTimestamp = […]