如何在android中设置警报

时间:2015-05-12 09:07:43

标签: android

我是android的新手。

我正在开发一个祷告应用程序。功能是用户将设定一个时间,并在特定时间进行整个月的祈祷。

所以我这样做:

for (int counterAlarm = 0; counterAlarm < spanDays; ++counterAlarm) {


            alarmPendingIntent = CreatePendingIntent(context,
                    String.valueOf(100 + counterAlarm));
            SetAlarmForDay(context, calendarMorningReminder,
                    alarmPendingIntent);
            calendarMorningReminder.add(Calendar.DAY_OF_MONTH, 1);
            sbRequestCodes.append(String.valueOf(100 + counterAlarm));
            sbRequestCodes.append(";");
        }

上面的for循环添加了所有日期的警报,假设用户在当月的第一天早上6点清理时间,然后注册30个警报。

private static PendingIntent CreatePendingIntent(Context context,
            String requestCode) {
        Intent intent = new Intent(context, ApplicationBroadcastReceiver.class);
        intent.setAction(Constants.INTENT_ACTION_ALARM_RAISED);

        return PendingIntent.getBroadcast(context,
                Integer.parseInt(requestCode), intent,
                PendingIntent.FLAG_UPDATE_CURRENT);
    }

    @SuppressLint("NewApi")
    private static void SetAlarmForDay(Context context, Calendar calendar,
            PendingIntent pIntent) {

        AlarmManager alarmManager = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            alarmManager.setExact(AlarmManager.RTC_WAKEUP,
                    calendar.getTimeInMillis(), pIntent);
        } else {

            alarmManager.set(AlarmManager.RTC_WAKEUP,
                    calendar.getTimeInMillis(), pIntent);
        }
    }

所以我有两个问题:

  1. 注册所有30个警报,这种方法在android中已经足够了。或者有更好的方法来解决这个问题?

  2. 我们的应用程序是从android gingerbread向后兼容的,所以我们使用setExact()方法比kitkat和set()方法更适用于所有其他较低版本。这种方法够神吗?

  3. 请帮忙。

0 个答案:

没有答案