Как настроить Recurring AlarmManager для ежедневного выполнения кода

В настоящее время я пытаюсь написать диспетчер аварийных сигналов, который будет срабатывать будильник в течение определенного периода времени, ежедневно. Сначала я проверяю, установлен ли у пользователя будильник для этого дня:

      if ((User.getReminderTime(Home.this) > 0)
    && (dt.getDate() != today.getDate() || dt.getDay() != today
      .getDay())) {
   AppointmentManager.setFutureAppointmentCheck(this
     .getApplicationContext());
   User.setLongSetting(this, "futureappts", today.getTime());
  }

Затем я устанавливаю фактический будильник на срабатывание между 12 и 12:10 следующего дня:

     public static void setFutureAppointmentCheck(Context con) {
  AlarmManager am = (AlarmManager) con
    .getSystemService(Context.ALARM_SERVICE);

  Date futureDate = new Date(new Date().getTime() + 86400000);
  Random generator = new Random();

  futureDate.setHours(0);
  futureDate.setMinutes(generator.nextInt(10));
  futureDate.setSeconds(0);

  Intent intent = new Intent(con, FutureAppointmentReciever.class);

  PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent,
    PendingIntent.FLAG_ONE_SHOT);

  am.set(AlarmManager.RTC_WAKEUP, futureDate.getTime(), sender);

 }

Теперь я настраиваю тестовая среда, чтобы это срабатывало каждые две минуты, и, похоже, он работает нормально, однако, когда я развертываюсь на реальном устройстве, приемник, похоже, не принимает сигналы тревоги. Я подумал, что проблема в спящем устройстве, поэтому я добавил менеджер питания. Но это по-прежнему не работает:

      PowerManager pm = (PowerManager) context
    .getSystemService(Context.POWER_SERVICE);
  PowerManager.WakeLock wl = pm.newWakeLock(
    PowerManager.PARTIAL_WAKE_LOCK, "keepAlive");
  wl.acquire();
  setFutureAppointments(context.getApplicationContext());
  AppointmentManager.setFutureAppointmentCheck(context
    .getApplicationContext());
  User.setLongSetting(context.getApplicationContext(), "futureappts",
    new Date().getTime());
  wl.release();

Кто-нибудь видит, что я делаю явно неправильно, или я делаю это неправильно? спасибо за любую помощь.

17
задан ninjasense 26 February 2011 в 06:36
поделиться