【问题标题】:I cant set the calendar for alarm我无法设置闹钟日历
【发布时间】:2012-04-24 05:41:55
【问题描述】:

我正在尝试为我的课程设置闹钟。我需要在他们开始前一小时拉响警报。所以我只想

  • 获取一年中的一周
  • 查看周数(循环 ...51,52)
    • 查看类(循环...n)
      • 为此课程设置星期几
      • 在上课前一小时设置一天中的时间
      • 将分钟设置为 00
      • 使用此日历实例设置闹钟
    • 循环结束(类)
    • 将周设置为从当前周开始的一周

 

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
for (int i = cal.get(Calendar.WEEK_OF_YEAR); i <= 52; i++) {
    for (Dersler d : dersProgrami) {
        alarm = new DersAlarmi(String.valueOf(d.getBaslangicS()) + "00", d.getDersAdi(), d.getDerslik());
        cal.set(Calendar.DAY_OF_WEEK, d.getDayOfClass()+1);
        cal.set(Calendar.MINUTE, 00);
        cal.set(Calendar.HOUR_OF_DAY, d.getStartHour());
        cal.add(Calendar.HOUR_OF_DAY, -1);
        Log.i("ALARM KURULDU",
            String.valueOf(i) + String.valueOf(cal.get(Calendar.DAY_OF_MONTH))+"."+String.valueOf(cal.get(Calendar.MONTH))+"."+String.valueOf(cal.get(Calendar.YEAR))+" "+String.valueOf(cal.get(Calendar.HOUR_OF_DAY))+":"+String.valueOf(cal.get(Calendar.MINUTE))+" Ders:" + d.getDersAdi()
                + " Hafta:"
                + cal.get(Calendar.WEEK_OF_YEAR) + " Gün:"
                + cal.get(Calendar.DAY_OF_WEEK) + " Saat:"
                + cal.get(Calendar.HOUR_OF_DAY));
            alarmManager.set(AlarmManager.RTC_WAKEUP,
                cal.getTimeInMillis(), pendingIntent);
        dersAlarmlari.add(alarm);
    }
    cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR)+1);
}

当前日期时间为:23.04.2012 23:37

Logcat 是:

04-23 23:23:10.835: I/ALARM KURULDU(16380): 17 25.3.2012 14:0 Ders:DATA MINING Hafta:17 Gün:4 Saat:14

04-23 23:23:10.835: I/ALARM KURULDU(16380): 17 23.3.2012 8:0 Ders:Database Management and SQL Hafta:17 Gün:2 Saat:8

04-23 23:23:10.855: I/ALARM KURULDU(16380): 17 25.3.2012 12:0 Ders:ENTREPRENEURSHIP Hafta:17 Gün:4 Saat:12

04-23 23:23:10.865: I/ALARM KURULDU(16380): 1723.3.2012 11:0 Ders:GRADUATION PROJECT Hafta:17 Gün:2 Saat:11

04-23 23:23:10.865: I/ALARM KURULDU(16380): 18 25.3.2012 14:0 Ders:DATA MINING Hafta:17 Gün:4 Saat:14

04-23 23:23:10.885: I/ALARM KURULDU(16380): 18 23.3.2012 8:0 Ders:Database Management and SQL Hafta:17 Gün:2 Saat:8

04-23 23:23:10.885: I/ALARM KURULDU(16380): 18 25.3.2012 12:0 Ders:ENTREPRENEURSHIP Hafta:17 Gün:4 Saat:12

04-23 23:23:10.895: I/ALARM KURULDU(16380): 18 23.3.2012 11:0 Ders:GRADUATION PROJECT Hafta:17 Gün:2 Saat:11

04-23 23:23:10.905: I/ALARM KURULDU(16380): 19 25.3.2012 14:0 Ders:DATA MINING Hafta:17 Gün:4 Saat:14

...

那么为什么它在 logcat 中显示为 23.03.2012 或 25.03.2012 而不是今天的日期 23.04.2012?我一直在为此浪费时间,谁能告诉我设置闹钟的正确方法吗?

【问题讨论】:

    标签: android calendar set alarmmanager alarm


    【解决方案1】:

    您正在使用它来打印月份:cal.get(Calendar.MONTH))

    但是,返回的月份看起来是零索引的。

    根据日历手册页,JANUARY 的值为 0,APRIL 的值为 3。因此,如果您想像通常打印的那样打印月份(April = 4),那么只需添加一到印刷前一个月。

    【讨论】:

    • String.valueOf((cal.get(Calendar.DAY_OF_MONTH)+1)) 没有影响任何东西仍然打印 3 :S 无论如何,你今天能说什么?看来我也不能在本周添加 1...
    • 为什么要添加到 DAY_OF_MONTH?我指的是 MONTH,而不是 DAY_OF_MONTH
    • 我的错误,好的,感谢这个月,但仍然有问题,月中的一天,而且我似乎无法用 cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR) 迭代几周+1)
    • 嗯,我不明白 WEEK_OF_YEAR 行有什么问题,看起来它应该对我有用。如果您尝试 cal.add(Calendar.WEEK_OF_YEAR, 1) 代替,您能看到会发生什么吗?文档说“添加”会强制立即重新计算而不是延迟计算,可能存在错误或其他问题。
    • cal.add(Calendar.WEEK_OF_YEAR, 1);做了迭代。现在应该设置警报,现在是 24.04,下一个警报似乎将在 25.04 触发,但 23.04 有警报。 Android操作系统不应该立即踢过去的那些警报吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多