gpt4 book ai didi

java - 从 DatePicker 和 TimePicker 设置 AlarmManager

转载 作者:行者123 更新时间:2023-11-29 07:14:47 24 4
gpt4 key购买 nike

我很难从 DatePicker 和 TimePicker 创建闹钟...

这是我尝试的代码:

Calendar cal=Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth());
cal.set(Calendar.MONTH, datePicker.getMonth());
cal.set(Calendar.YEAR, datePicker.getYear());
cal.set(Calendar.HOUR, timePicker.getCurrentHour());
cal.set(Calendar.MINUTE, timePicker.getCurrentMinute());
long millis=cal.getTimeInMillis();

Intent intent=new Intent(CalendarView.this,AvisoReceiver.class);
PendingIntent mAlarmSender=PendingIntent.getBroadcast(CalendarView.this,23454546, intent,0);
AlarmManager alm=(AlarmManager)getSystemService(ALARM_SERVICE);
alm.set(AlarmManager.RTC_WAKEUP, millis,mAlarmSender);

但是当我从 TimePicker 和 DatePicker 设置闹钟时,我的接收器没有被调用。

如果我在接收器被调用后 3 秒设置闹钟,我会收到通知。

最佳答案

重写

所以在凌晨 2 点编程时,我并不总是处于游戏的顶端。以下是要添加到您的代码中以获得您期望的行为 (24/7) 的两个修改:

cal.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
cal.set(Calendar.SECOND, 0);

使用 HOUR_OF_DAY 读取 24 小时制,使用 SECOND 将秒设置为 :00。 HOUR 只读取 12 小时时间,这就是为什么它在凌晨 2 点而不是晚上 7 点工作以及为什么它关闭 43000 秒(12 小时)。如果不设置 SECOND Calendar 对象,它将以秒为单位显示当前分钟数,从而造成意外延迟。

附带说明一下,您还可以一次设置所有日历值:

cal.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0);

无论哪种方式,您需要调用的是:

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), mAlarmSender);      

(不,像我的第一个建议一样需要更花哨的数学。)希望这有帮助!

关于java - 从 DatePicker 和 TimePicker 设置 AlarmManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com