package com.pinecone.technology.mcommerce.learning.android.chapter04.alarm; import java.util.Calendar; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import com.pinecone.technology.mcommerce.learning.android.chapter04.broadcastReceiver.TestReceiver; public class SendAlarmOnceTester extends BaseTester { private static String tag = "SendAlarmOnceTester"; SendAlarmOnceTester(Context ctx, IReportBack target) { super(ctx, target); } /* * An alarm can invoke a broadcast request at a specified time. The name of * the broadcast receiver is explicitly specified in the intent. */ public void sendAlarmOnce() { // Get the instance in time that is // 30 secs from now. Calendar cal = Utils.getTimeAfterInSecs(30); // If you want to point to 11:00 hours today. // Calendar cal = Utils.getTodayAt(11); // Print to the debug view that we are // scheduling at a specific time String s = Utils.getDateTimeString(cal); mReportTo.reportBack(tag, "Schdeduling alarm at: " + s); // Get an intent to invoke // TestReceiver class Intent intent = new Intent(mContext, TestReceiver.class); intent.putExtra("message", "Single Shot Alarm"); PendingIntent pi = PendingIntent.getBroadcast(mContext, // context 1, // request id, used for disambiguating this intent intent, // intent to be delivered PendingIntent.FLAG_ONE_SHOT); // pending intent flags // Schedule the alarm! AlarmManager am = (AlarmManager) mContext .getSystemService(Context.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi); } }