繁体   English   中英

在警报管理器 Android 中设置时间 - 警报立即触发

[英]set the time in Alarm manager Android - alarm fired instantly

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

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

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);

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

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

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

当您想在未来创建一个 1:30 到 go 的警报时,请使用calendar.add(..,..)方法。

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

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 代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM