【问题标题】:set irregular alarms daily using alarmManager每天使用 alarmManager 设置不规则的闹钟
【发布时间】:2013-04-16 14:39:10
【问题描述】:

我想在每天的特定时间设置通知/警报。请注意,这些时间可能每天都不同。例如,我有一个数据库,我每天可以从中获得 5 个不同的条目/时间,例如早上 6 点、下午 1.30 点、下午 4.30 点、晚上 7.30 点、晚上 10 点。我想为这些时间设置闹钟。第二天,这些时间可能会有所不同。它们可能会关闭 2-5 分钟或更长时间。 基本上我不能每天在同一时间设置重复警报。我需要检查我的数据库中的条目,以了解我应该安排它的时间。

有什么好的和有效的方法来做到这一点。我查看了一些设置多个警报的堆栈溢出问题。但是在这里我该怎么做呢?我是否应该只阅读整个星期的数据库条目,即 7 天每天 5 次......并一起设置大约 35 个警报?或者我应该一次只设置一个闹钟。当触发警报时,只需从数据库中读取下一个条目并为该时间安排警报?

【问题讨论】:

    标签: android alarm


    【解决方案1】:

    编写一个服务,每天在特定时间从数据库中获取 5 个值。

    然后在 AlarmManger 中添加多个具有不同唯一 ID 的条目。

    在特定时间添加闹钟:

    Calendar calendar = Calendar.getInstance();
    
    //9 AM 
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, YourClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
    

    设置多个闹钟:

    AlarmManager[] alarmManager=new AlarmManager[24];
    intentArray = new ArrayList<PendingIntent>();
    for(f=0;f<arr2.length;f++){
       Intent intent = new Intent(AlarmR.this, Riciving.class);
       pi=PendingIntent.getBroadcast(AlarmR.this, f,intent, 0);
    
       alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE);
       alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi);
    
       intentArray.add(pi);
    
    }
    

    希望这应该可行。

    【讨论】:

    • 谢谢,我会试试的。如果我想取消和重新安排怎么办?例如。用户可以更改设置,从而每天更改 5 次。
    • 您可以为服务添加设置或编辑设置。要更改或重新安排它,只需编辑它。然后重新开始。它会起作用的。一些应用程序“自动短信”谷歌游戏商店使用相同的概念。尝试这样做。
    • @John 你在 arr2 有什么?实际上我确实需要实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    相关资源
    最近更新 更多