java - 闹钟android中的贪睡功能

标签 java android alarmmanager

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

报警触发。我有小睡和取消。

再睡:我从当前时间开始再睡 10 分钟 cancel: Just finish() - 这样它就可以在第二天或下周触发(相应地)

当点击贪睡按钮时,我设置的所有闹钟都会被取消,只有一个会在 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?)

最佳答案

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

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

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

关于java - 闹钟android中的贪睡功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893098/

相关文章:

android - IntentService 不会开始使用 AlarmManager

java - Window Batch 文件集成到 Java GUI 中

java - Eclipse 构建过程

java - 我可以将参数从布局 XML 传递到 MainActivity 中的方法吗?

动态功能模块中的 androidTest espresso 测试用例无法构建/运行 - 任务 ':dfm:mergeLibDexDebugAndroidTest' 执行失败

android - 在报警管理器中删除报警

android - 如何检查 AlarmManager setRepeating 触发的 Pending intent 是否已经运行?

java - 在 Java 计算器的按钮按下时获得声音的最佳方法?

java - 我可以从同一个 jar 文件执行两个不同的类吗?

java - 包装字符串键以区分外部键和内部键