开发者

Repeat Alarm called even time passed

i created alarm demo . In that demo i am repeating an alarm . I have one problem in my demo . My alarm called service even if time passed . I am setting 16:08:00 time and called that alarm so it called my alarm service after passed that time.Please help me to stop this criteria.

 AlarmManager alarmManager = (AlarmManager)ctx.getSystemService(ctx.ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 16);
        calendar.set(Calendar.MINUTE, 8);
        calendar.set(Calendar.SECOND, 0);   
        PendingIntent pi = createPendingIntent(ctx);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000,开发者_Python百科 pi);

CreatePendingIntent Method

private static PendingIntent createPendingIntent(Context context) 
    {
        Intent myIntent = new Intent(context, MyAlarmService.class);
        return PendingIntent.getService(context,0, myIntent, 0); 

    }


When setting an alarm to past time, the alarm immediately pops up. Simply check if the current time is bigger than the alarm time. If so, add 24 hours to the alarm time and set the alarm.:

long timeToAlarm = calendar.getTimeInMillis();
if (calendar.getTimeInMillis() < System.currentTimeMillis())
{
    timeToAlarm += (24*60*60*1000);
}

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeToAlarm, 24*60*60*1000, pi);


alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pi);

if you used the above code the alarm repeats at the 24*60*60*1000 interval time.If you don't want to repeat the alarm then use the bellow code

alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);

the above code will cal the alarm only onetime.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜