警报android中的贪睡功能

时间:2013-07-27 00:39:43

标签: java android alarmmanager

我创建了多个闹钟应用。此警报按时触发一切正常。在保存警报时,我已添加,每周,每日和一次功能,用户将能够相应地设置警报。

开启警报触发器。我打盹并取消。

暂停:我已经从当前时间加上10分钟来打盹 取消:刚完成() - 这样它就可以触发第二天或下周(相应地)

点击“暂停”按钮时,我设置的所有闹钟都会被取消,10分钟后只会触发一次。这有点奇怪吗?不确定问题出在哪里?

这是我在我的Snoozeactivity(从广播接收器调用)中尝试的内容

SnoozeActivity的OnCreate:

我得到小时,分钟,上午/下午,并加入10分钟并设置闹钟。

if (ampm.equalsIgnoreCase("AM"))
  {
    ampm = "0";
        }
 else if (ampm.equalsIgnoreCase("PM"))
  {
    ampm = "1";
    }
        Calendar alarmCalendar = Calendar.getInstance();
        alarmCalendar.set(Calendar.HOUR, Integer.valueOf(hours));
        alarmCalendar.set(Calendar.MINUTE, Integer.valueOf(mins));
        alarmCalendar.set(Calendar.SECOND, 0);
        alarmCalendar.set(Calendar.AM_PM, Integer.valueOf(ampm));

        currenttime = alarmCalendar.getTimeInMillis() + 600000;

        AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);

        Intent intent = new Intent(SnoozeActivity.this, AlarmReciever.class);
        intent.putExtra("keyValue", key);
        PendingIntent pi = PendingIntent.getBroadcast(AlarmSnooze.this, 0, intent, 0);
        am.set(AlarmManager.RTC_WAKEUP, currenttime, pi); 
        finish();

是因为PendingIntent(Flag?)

1 个答案:

答案 0 :(得分:3)

我的猜测是你使用相同的ID进行常规闹钟。在这一行......

  

PendingIntent pi = PendingIntent.getBroadcast(AlarmSnooze.this, 0 ,intent,0);

...以粗体显示的第一个“0”是警报ID。如果您使用“0”作为其他警报ID,则您的暂停代码将覆盖之前的警报。为贪睡闹钟更改“0”为“1”(或任何其他未使用的值),你应该没事!