闹钟安卓系统中的Snooze功能



我创建了多个报警应用程序。这个警报器准时触发,一切正常。在保存警报时,我添加了每周、每天和一次的功能,用户可以相应地设置警报。

打开报警触发器。我打了个盹就取消了。

打盹:我从当前时间起增加了10分钟的打盹时间cancel:只需完成()-这样它就可以触发第二天或下周(相应地)

当点击Snooze按钮时,我设置的所有警报都会被取消,10分钟后只有一个警报被触发。这是什么奇怪的事?不确定问题出在哪里?

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

创建SnoozeActivity:

我得到了小时、分钟、上午/下午,并增加了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?)

我的猜测是,您的常规警报使用相同的ID。在这行。。。

PendingIntent pi=PendingIntent.getBroadcast(报警监听.this,0,intent,0);

粗体的第一个"0"是报警ID。如果您将"0"用于其他报警ID,则您的睡眠代码将覆盖以前的报警。将打盹警报的"0"更改为"1"(或任何其他未使用的值),您应该没事!

最新更新