package com.google.mcommerce.sample.android.chapter05.alarm; import java.util.Calendar; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; public class SendRepeatingAlarmTester extends SendAlarmOnceTester { private static String tag = "SendRepeatingAlarmTester"; SendRepeatingAlarmTester(Context ctx, IReportBack target) { super(ctx, target); } /* * An alarm can invoke a broadcast request starting at a specified time and * at regular intervals. * * Uses the same intent as above but a distinct request id to avoid * conflicts with the single shot alarm above. * * Uses getDistinctPendingIntent() utility. */ public void sendRepeatingAlarm() { Calendar cal = Utils.getTimeAfterInSecs(30); // Calendar testcal = Utils.getTodayAt(11); String s = Utils.getDateTimeString(cal); this.mReportTo.reportBack(tag, "Schdeduling Repeating alarm in 5 sec interval starting at: " + s); // Get an intent to invoke // TestReceiver class Intent intent = new Intent(this.mContext, TestReceiver.class); intent.putExtra("message", "Repeating Alarm"); PendingIntent pi = this.getDistinctPendingIntent(intent, 2); // Schedule the alarm! AlarmManager am = (AlarmManager) this.mContext .getSystemService(Context.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5 * 1000, // 5 secs pi); } protected PendingIntent getDistinctPendingIntent(Intent intent, int requestId) { PendingIntent pi = PendingIntent.getBroadcast(mContext, // context requestId, // request id intent, // intent to be delivered 0); // pending intent flags // PendingIntent.FLAG_ONE_SHOT); return pi; } }