gpt4 book ai didi

android - 使用 Android 跟踪多个警报

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:24 26 4
gpt4 key购买 nike

我需要设置一些每周重复的闹钟,以便在用户上课时自动让手机振动(这是一个学术应用),然后在类(class)结束时重置音量。

我已经创建了警报,但如果用户禁用此功能,我必须有办法停用所有警报。我也知道我必须通过将相同的参数传递给 AlarmManager.cancel() 方法并 Intent 这样做,但这里的问题是:

用户可以取消类(class)和注册类(class)(但不能直接在应用程序中),这会更新并反射(reflect)在数据库上,数据库只保留当前类(class)。因此,如果我为一个不再存在的类设置了警报,如果我无法复制 PendingIntent,我该如何取消它?

我在这里看到的一个解决方案是创建一个数据库表来跟踪当前的警报,然后我可以完全控制它们,另一种方法是在类列表更新时取消并重置所有警报,但这样做需要相当多的时间,第三个但不太友好的选择是简单地等待用户启动手机,并且在重置警报时只需设置我需要的警报(如果我在这个启动行为上有误,请更正) .有没有我应该尝试的第四个选项,或者如果足够好,可以尝试其中一个选项吗?

最佳答案

首先你不需要设置多个闹钟。只需设置 NEXT 闹钟,然后当该闹钟触发时,设置新的下一个闹钟。如果手机重新启动,这也便于在闹钟丢失时重新设置闹钟,因为您只需考虑一个闹钟。

我用这个小例程来设置我的闹钟。 Set 参数的值确定是设置还是取消警报。

public static void SetMyAlarm(Context c, long AlarmTime, Boolean Set) {
Intent intent = new Intent(c, AlarmReceiver.class); // The broadcast receiver that will handle my alarm

int UniqueID =8192; // id for this specific alarm, use a different id for each separate alarm

PendingIntent sender = PendingIntent.getBroadcast(c, UniqueID, intent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
if (Set) {
am.set(AlarmManager.RTC_WAKEUP, AlarmTime, sender);
} else {
am.cancel(sender);
}
}

关于android - 使用 Android 跟踪多个警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com