安卓 |重复闹钟

发布于 2025-01-12 08:54:28 字数 2303 浏览 4 评论 0原文

我有一个闹钟应用程序。我使用 AlarmManager 类做到了。但我只设置了一个闹钟,并且我需要一个每天和一周中的几天重复的闹钟。

我想要: 1. 一个每日闹钟 2. 一个在一周中特定日期工作的闹钟。

这是我来自单个闹钟的代码(该代码工作良好):

                        Calendar calendar = Calendar.getInstance();
                        calendar.set(Calendar.MINUTE, timePicker.getMinute());
                        calendar.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
                        long startUpTime = calendar.getTimeInMillis();

                        if (System.currentTimeInMillis() > startUpTime) {
                            startUpTime = startUpTime + AlarmManager.INTERVAL_DAY;
                            AlarmManager.AlarmClockInfo alarmClockInfo =
                                    new AlarmManager.AlarmClockInfo(startUpTime, getClockInfo());
                            alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
                        } else {
                            AlarmManager.AlarmClockInfo alarmClockInfo =
                                    new AlarmManager.AlarmClockInfo(alarm.timeInMillis, getClockInfo());
                            alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
                        }

我来自每日闹钟的代码(该代码不能完全工作,当我将闹钟设置为 6:40 时,它会在 7:00 工作):

                        Calendar calendar = Calendar.getInstance();
                        calendar.set(Calendar.MINUTE, timePicker.getMinute());
                        calendar.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
                        long startUpTime = calendar.getTimeInMillis();

                         if (System.currentTimeInMillis() > startUpTime) {
                            startUpTime = startUpTime + AlarmManager.INTERVAL_DAY;
                            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                                    startUpTime,
                                    AlarmManager.INTERVAL_DAY,
                                    pendingIntent);
                        } else {
                            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                                    startUpTime,
                                    AlarmManager.INTERVAL_DAY,
                                    pendingIntent);
                        }

I have an alarm clock app. I made it using the AlarmManager class. But I made only a single alarm, and I need an alarm that will be repeated every day and on the days of the week.

I want : 1. An every day alarm clock
2. An alarm clock that works on selected days of week.

It is my code from a single alarm (The code works good):

                        Calendar calendar = Calendar.getInstance();
                        calendar.set(Calendar.MINUTE, timePicker.getMinute());
                        calendar.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
                        long startUpTime = calendar.getTimeInMillis();

                        if (System.currentTimeInMillis() > startUpTime) {
                            startUpTime = startUpTime + AlarmManager.INTERVAL_DAY;
                            AlarmManager.AlarmClockInfo alarmClockInfo =
                                    new AlarmManager.AlarmClockInfo(startUpTime, getClockInfo());
                            alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
                        } else {
                            AlarmManager.AlarmClockInfo alarmClockInfo =
                                    new AlarmManager.AlarmClockInfo(alarm.timeInMillis, getClockInfo());
                            alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
                        }

My code from every day alarm (The code does not work exactly, when I set alarm at 6:40 it works at 7:00):

                        Calendar calendar = Calendar.getInstance();
                        calendar.set(Calendar.MINUTE, timePicker.getMinute());
                        calendar.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
                        long startUpTime = calendar.getTimeInMillis();

                         if (System.currentTimeInMillis() > startUpTime) {
                            startUpTime = startUpTime + AlarmManager.INTERVAL_DAY;
                            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                                    startUpTime,
                                    AlarmManager.INTERVAL_DAY,
                                    pendingIntent);
                        } else {
                            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                                    startUpTime,
                                    AlarmManager.INTERVAL_DAY,
                                    pendingIntent);
                        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聆听风音 2025-01-19 08:54:28

看看这里可能会对您有所帮助,它在我的应用程序中完美运行。我已经用 kotlin 完成了你的工作,t=有一些语法差异,但逻辑是相同的。

private fun setAlarm1() {
        var calender: Calendar
      calender = Calendar.getInstance()
                    calender.set(Calendar.HOUR_OF_DAY, PUT_YOUR_ALARM HOUR)
                    calender.set(Calendar.MINUTE, PUT_YOUR_ALARM MINUTE)
                    calender.set(Calendar.SECOND, 0)
                alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
                val thuReq: Long = Calendar.getInstance().timeInMillis + 1
                var reqReqCode = thuReq.toInt()
                if (calender.timeInMillis < System.currentTimeMillis()) {
                    calender.add(Calendar.DAY_OF_YEAR, 1)
                }
                val alarmTimeMilsec = calender.timeInMillis
                val intent = Intent(this, AlarmReceiver::class.java)
                intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
                val pendingIntent = PendingIntent.getBroadcast(this, reqReqCode, intent, 0)
        
                alarmManager.setRepeating(
                    AlarmManager.RTC_WAKEUP,
                    calender.timeInMillis,
                   24 * 60 * 60 * 1000,// or AlarmManager.INTERVAL_DAY
                    pendingIntent
                )

如需更多帮助,请访问此链接 https://github.com/Niajnm/Android-RandomUser-Alarm-T​​rigger/blob/master/app/src/main/java/com/example/randomuser/AlarmClock/AlarmCreateActivity.kt
我做了一个应用程序多功能医学闹钟。它可能会帮助你

have a look here may can help you it works perfect in my app . I have done with kotlin you there t=are some syntax difference but logics are same.

private fun setAlarm1() {
        var calender: Calendar
      calender = Calendar.getInstance()
                    calender.set(Calendar.HOUR_OF_DAY, PUT_YOUR_ALARM HOUR)
                    calender.set(Calendar.MINUTE, PUT_YOUR_ALARM MINUTE)
                    calender.set(Calendar.SECOND, 0)
                alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
                val thuReq: Long = Calendar.getInstance().timeInMillis + 1
                var reqReqCode = thuReq.toInt()
                if (calender.timeInMillis < System.currentTimeMillis()) {
                    calender.add(Calendar.DAY_OF_YEAR, 1)
                }
                val alarmTimeMilsec = calender.timeInMillis
                val intent = Intent(this, AlarmReceiver::class.java)
                intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
                val pendingIntent = PendingIntent.getBroadcast(this, reqReqCode, intent, 0)
        
                alarmManager.setRepeating(
                    AlarmManager.RTC_WAKEUP,
                    calender.timeInMillis,
                   24 * 60 * 60 * 1000,// or AlarmManager.INTERVAL_DAY
                    pendingIntent
                )

for more help go to this link https://github.com/Niajnm/Android-RandomUser-Alarm-Trigger/blob/master/app/src/main/java/com/example/randomuser/AlarmClock/AlarmCreateActivity.kt
I made a app multi functional medicine alarm clock. it may help you

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文