如何在活动前5分钟设置闹钟?

问题描述 投票:0回答:2

我正在创建一个像虚拟考勤卡一样工作的应用程序:用户输入他上班的时间、他出去吃午饭的时间以及他再次上班的时间。然后他按下一个按钮,他就可以看到什么时候可以出去。当然,这对于像我这样工作时间灵活的人来说很有用。

应用程序可以运行。现在我想添加一个新功能。假设我可以在下午 5 点离开办公室,我希望我的 APP 在 16:55 向我发送一条通知,一个警报。提醒我我可以出去的东西。怎么办呢?

在我看来,我有以下步骤:

  1. 我输入了一个变量,表示我可以下班的时间
  2. 我检查当前时间,是否距离点 1 发送通知还有五分钟

但是,程序必须每次或至少每分钟执行一次此检查。而且我真的不知道该怎么办..

有人可以帮我出个主意吗?

伊万诺

  • 根据规则和我的新更新进行编辑 -

抱歉我的延迟,但我必须研究你发给我的内容,因为我是 Java 的超级菜鸟......而且我真的很难尝试学习新东西......无论如何,让我们进入正题。我尝试使用 AlarmManager 但它没有做我想要的事情。

我在 MainActivity 类的顶部添加了以下代码:

AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, OnAlarmReceive.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),1*60*1000, pendingIntent);

我得到的是,应用程序每 60 秒重新加载一次,调用 MainActivity 类并重新加载用户之前输入到数据库中的值。因此,没有办法在没有看到的情况下输入新值!!

我喜欢的是:应用程序“永远”留在后台,只有当意识到用户可以在 5 分钟内离开办公室时才会自行唤醒。

我已经编写了代码部分,其中程序检查当前时间并询问自己“用户离开办公室之前是否还缺少 5 分钟?”如果答案是肯定的,则会出现一条短信并播放声音。这是代码的一部分:

NotificationCompat.Builder n  = new NotificationCompat.Builder(this)
                .setContentTitle("Arrivato nuovo messaggio!!")
                .setContentText("Autore: Nicola Rossi")
                .setSmallIcon(android.R.drawable.ic_dialog_info)
                .setContentIntent(pendingIntent)
                .setAutoCancel(true)
                .setSound(sound);

所以,该程序可以运行......但有一个小故障,只有当我在轮班结束前 5 分钟打开应用程序时,它才会发送通知。如果我在其他时间打开该应用程序,它不会发送通知。我希望无论我何时打开应用程序,都会发送此通知。

我该如何修复它?

java android alert alarm
2个回答
0
投票

您正在寻找的称为警报管理器。这是您的应用程序之外的一项服务,您可以使用它来通知用户。使用待处理的意图调用此服务。

https://developer.android.com/reference/android/app/AlarmManager.html


0
投票

首先,您需要检查您的分钟变量是否 > 4。如果只是检查当前本地小时是否与您的小时变量匹配,并且您的本地分钟 = varMinute-5。接下来,如果您的 varMinute 变量小于 5,您需要一系列 if 语句,您可以手动将小时更改为 (hour-1),如果您的分钟 var 为 4,则将 min var 更改为 59,如果分钟 var 为 3,则将其更改为 58,依此类推依此类推,直至 0 和 55。

您还需要一个发送变量,用于检查您是否已经在该分钟发送了警报,并在每次本地秒 = 0 时重置它

© www.soinside.com 2019 - 2024. All rights reserved.