3

これは私がこれまでに持っているコードです

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
setRepeatingAlarm();

public void setRepeatingAlarm() {

    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 10);

    Intent intent = new Intent(this, TimeAlarm.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), (15 * 1000), pendingIntent);
  }

}

これが私が達成しようとしているすべてです。アラームは、毎分 30 秒経過するまでオンになりません。一度クリアすると、次の分から 30 秒経過するまで再びオンになりません。そのため、アプリを開いて 25 秒経過すると、5 秒後にステータス バーの通知がアクティブになります。しかし、40 秒経過している場合は、さらに 50 秒 (次の分まで) 待つ必要があります。カレンダー機能を使用してこれを達成する方法がわかりませんか?

4

2 に答える 2

3

あなたの要件を理解したら、次のようなことを試すことができます...

Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.SECOND) >= 30)
    cal.add(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 30);

// Do the Intent and PendingIntent stuff

am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 60 * 1000, pendingIntent);
于 2012-06-05T22:12:30.920 に答える
0

のドキュメントを確認すると、次の基準で時間を使用するAlarmManagerと書かれています。RTC_WAKEUPSystem.currentTimeMillis()

RTC_WAKEUP System.currentTimeMillis() のアラーム時間 (UTC の壁時計時間)。オフになったときにデバイスをウェイクアップします。

したがってtriggerAtTime、たとえばすぐに開始するには、パラメーターを変更するだけです。

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 15 * 1000, pendingIntent);

その後、アラームは 15 秒ごとに繰り返し鳴ります。

于 2012-06-05T22:12:44.523 に答える