【问题标题】:Creating alarm with AlarmManager for a specific period of time使用 AlarmManager 创建特定时间段的警报
【发布时间】:2012-08-17 05:02:28
【问题描述】:

有什么方法可以使用 AlarmManager 在特定时间段内激活警报吗?我在数据库中存储了开始时间和结束时间值。我想在开始时启动警报,使设备静音,并且警报应在设备音量再次正常时结束。

一种方法是在开始时间设置闹钟,然后在结束时间设置另一个闹钟。但问题是时间段可能重叠,如果我使用 2 个不同的警报(一个在开始时间,另一个在结束时间),则需要实施额外的逻辑。 Android中是否有任何程序来应对这种情况?或者实现逻辑是解决这个问题的唯一方法?

【问题讨论】:

    标签: android broadcastreceiver alarmmanager alarm android-alarms


    【解决方案1】:

    为什么不在你的Intent 中为PendingIntent 传递一个额外的“endTime”长类型来表示你想要结束警报的时间。 (我假设它是重复的)然后在您的广播接收器中获得额外的,与System.currentTimeMillis() 相比,如果它小于当前时间,则取消警报并退出?

    【讨论】:

    • 您能否解释一下它如何解决我目前面临的重叠时隙问题?
    • 我想我不明白这个问题,你能解释一下吗?
    • @jugernaut - 用户输入一些时间间隔(开始时间和结束时间),手机将在该时间间隔处于静音模式。问题是 - 假设 用户输入 2 个间隔,其中间隔相互重叠,即 10AM-12PM 和 11AM-2PM。在这种情况下,当 AlarmManager 在上午 10 点实施第一个警报,然后在上午 11 点再次尝试实施静默模式时,就会出现问题。但是电话已经是静默了。在下午 12 点,电话将在第一个间隔正常,但同时,第二个间隔希望电话在下午 2 点之前保持静音。所以我们需要实现一些逻辑。
    • 我只是想知道,有没有办法实现这个功能?我将添加一个新提示,用户会被告知重叠并要求更改新提示/覆盖现有提示。也许这是目前最好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多