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

时间:2017-11-02 15:17:48

标签: java android alert alarm

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

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

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

  1. 我在工作时间里输入一个变量
  2. 我检查当前时间,如果在点1发送通知之前是5分钟
  3. 但是,程序必须每次或每分钟至少检查一次。我真的不知道怎么做..

    任何人都可以帮我一个想法吗?

    伊万诺

    • 根据规则和我的新更新进行编辑 -
    对不起我的延迟,但我不得不研究你发给我的东西因为我是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);
    

    我得到的是APP每次重新加载60秒,调用MainActivity类并将用户先前输入的值重新加载到DB中。因此,如果没有看到,就无法输入新值!!

    我喜欢的是:应用程序“永远”保留在后台并且只有在意识到用户可以在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分钟打开应用程序时发送通知。如果我在任何其他时间打开应用程序,它将不会发送通知。无论我打开应用程序的时间,我都希望发送此通知。

    我该如何解决?

1 个答案:

答案 0 :(得分:0)

您正在寻找的是一个警报管理器。这是您的应用程序外部可用于通知用户的服务。使用待定意图调用此服务。

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