天天看点

android 监听闹钟状态,android – 有没有办法检查是否已经设置了闹钟?

首先,有关如何访问以前创建的警报的一点教程:

您可以通过创建每个具有唯一的ID来区分闹钟,例如:

Intent intent = new Intent(this, AlarmReceiverActivity.class);

PendingIntent pi = PendingIntent.getActivity(this,UNIQUE_ID_GOES_HERE, intent, 0);

AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);

am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis ,pi);

当您想要访问此警报时,您必须创建具有相同唯一身份的相同的PendingIntent。例如,以下内容只会访问您使用PendingIntent id 1234创建的警报。然后将取消之前的警报并重置。

Intent intent = new Intent(this, AlarmReceiverActivity.class);

PendingIntent pi = PendingIntent.getBroadcast(this, 1234, intent, 0);

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);

am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis ,pi);

这个想法很简单跟踪ID,然后使用它们访问各自的报警。如果您创建多个具有相同ID的警报,则最近的警报将取消以前的警报。

遇到您的主要问题,而不是检查每次启动应用程序时您的闹钟是否处于活动状态,只需在Activity的onCreate()方法中重新设置。与上述相同的待定内容。这样可以节省您检查报警是否先前设置的麻烦。由于您的目标是保持警报的生存,所以每次启动应用程序时,都不会超过以前设置的警报。只需确保使用相同的ID创建您的PendingIntent。

不要忘记检查您的闹钟的时间是否已经通过,以避免尝试设置过去时间的闹钟,这将立即触发。

让我们考虑另一种情况:当您关闭设备时,所有的闹钟将被取消。这不会让你再次重新启动它们。要做到这一点,你将不得不使用BroadcastReceiver。

This answer将帮助您如何做到这一点。只需在上述BroadcastReceiver的onReceive()方法中重新创建您的闹钟。