Hi,

On Tue, Sep 27, 2011 at 1:16 AM, Mark Murphy <[email protected]>wrote:

> On Mon, Sep 26, 2011 at 7:02 PM, John Goche <[email protected]>
> wrote:
> >> 1. Suppose I set the alarm for the first time for it to expire at a
> future
> >> time.
> >>     In this case it goes off immediately instead of after the del
>
> You have a bug in your code, where you are supplying the wrong time.
>

If I change the line of code

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() ,
pendingIntent);

to the following:

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() * 1000 * 60,
pendingIntent);

or even to the following

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() * 1000 * 60
* 60, pendingIntent);

and recompile and run then the broadcast receiver still fires off
immediately. There must be another answer...

> Anyone know what is wrong with the OP's code?

Presumably, hour and min are zero.
>
> Also, setTimeInMillis() is redundant, as Calendar.getInstance() is
> already initialized to the current time.
>
> > No error messages in CatLog for this one.
> > Just an immediate firing of the broadcast receiver.
>
> Which means that you are setting the alarm time to the current time.
>

So then why the above?


>
> Here is some sample code showing setting a recurring alarm to occur
> every day at the same time, culled from a SharedPreference:
>
> public static void setAlarm(Context ctxt) {
>    AlarmManager
> mgr=(AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
>    Calendar cal=Calendar.getInstance();
>    SharedPreferences
> prefs=PreferenceManager.getDefaultSharedPreferences(ctxt);
>    String time=prefs.getString("alarm_time", "12:00");
>
>    cal.set(Calendar.HOUR_OF_DAY, TimePreference.getHour(time));
>    cal.set(Calendar.MINUTE, TimePreference.getMinute(time));
>    cal.set(Calendar.SECOND, 0);
>    cal.set(Calendar.MILLISECOND, 0);
>
>    if (cal.getTimeInMillis()<System.currentTimeMillis()) {
>      cal.add(Calendar.DAY_OF_YEAR, 1);
>    }
>
>    mgr.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
>                      AlarmManager.INTERVAL_DAY,
>                      getPendingIntent(ctxt));
>  }
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to