【问题标题】:set the time in Alarm manager Android - alarm fired instantly在 Android 警报管理器中设置时间 - 警报立即触发
【发布时间】:2012-04-07 17:55:41
【问题描述】:

在这里,我尝试使用 AlarmManger 类设置警报。它对我来说很好,但是当我在时间选择器的几小时或几分钟后设置闹钟时间时,它会在我保存该闹钟时立即启动。闹钟。我需要闹钟响起,直到我设定好时间。 下面是我的代码正在运行,但是当我保存时立即启动警报。

我只用时间选择器设置时间。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,mHour,mMinute);
PendingIntent sender = PendingIntent.getBroadcast(AddAlarm.this, REQUEST_CODE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

如果我采取以下代码警报不起作用..

 Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, mHour);
calendar.set(Calendar.MINUTE, mMinute);
PendingIntent sender = PendingIntent.getBroadcast(AddAlarm.this, REQUEST_CODE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

如果我改变它以正常工作,请帮助我。在此先感谢...

【问题讨论】:

    标签: android calendar alarmmanager


    【解决方案1】:

    第二个代码通常适用于过时的警报。

    请记住: 如果您设置 HOUR 和 MINUTE,您将它们设置为当天,例如 HOUR = 1 和 MINUTE = 30 表示您将闹钟设置为上午 01:30。 如果它结束了,您可能会立即收到警报。

    如果您想在未来 1:30 时创建闹钟,请使用 calendar.add(..,..) 方法。

    【讨论】:

      【解决方案2】:

      我不确定你想用这条线做什么:

      calendar.set(Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH,mHour,mMinute);
      

      但我很确定它不会做你想要的。这会将日历设置为您在公元 1 年 3 月 5 日选择的小时和分钟。当您将其转换为毫秒时,您会得到 0,因为它早于可以以毫秒表示的最早日期。

      您在这一行中还有一个与日历 API 相关的不同问题:

      calendar.set(Calendar.HOUR, mHour);
      

      在这里,您的问题是 Calendar.HOUR 字段指的是 12 小时制的小时,而您的 mHour 大概使用 24 小时制(否则您还需要一个 AM/PM 字段来保存完整的一天的价值倍)。你想要 Calendar.HOUR_OF_DAY 代替。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多