如何在android中重复闹钟到总时间?

时间:2011-11-17 12:47:32

标签: android alarmmanager android-pendingintent repeat

我想在每个间隔时间内拨打(GPS设置)服务,最多可达到总时间。

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
                Intent intent1 = new Intent(C2DMReceiver.this, GPSSetting.class);
                PendingIntent pendingIntent = PendingIntent.getService(
                        C2DMReceiver.this, 0, intent1, 0);
                am.setRepeating(AlarmManager.RTC, 1, 5,
                        pendingIntent);

这里总时间1和间隔是5分钟,然后GPSService应该调用12次

总时间1小时和间隔时间5以毫秒为单位 我希望拨打GPS设置(服务等级)最多1小时...每个间隔

服务1小时后服务应自动停止; 问候, 吉里什

1 个答案:

答案 0 :(得分:1)

你可以这样做,我不知道这是否正确但是尝试

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent1 = new Intent(C2DMReceiver.this, GPSSetting.class);
PendingIntent pendingIntent = PendingIntent.getService(C2DMReceiver.this, 0, intent1, FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC, current_time, 5000,pendingIntent);

现在您可以使用当前时间设置闹钟,这将更新闹钟并每5分钟通知一次,您可以致电您的服务。

您需要保留此警报意图实例和current_time。将此时间与1小时后的时间进行比较,假设您已将设置为闹钟的current_time传递给此值GPSSetting服务并检查时间。

Calendar alarm_time = Calendar.getInstance();
alarm_time.setTime(you_alarm_time);

now add 1 hour in this and compare with the current time

alarm_time.add(Calender.HOUR,1); // this will add the 1 hour 

Calendar cur_time = Calendar.getInstance();

if(cur_time.after(alarm_time)){
   // cur_time is after alarm_time then cancel the alarm
}else{
   // do whatever you want
}

每次调用此服务时,它都会在您的方法中定义新对象,这样您只需在设置闹钟时间时保持闹钟时间,或者您也可以将预警时间预先加1小时,这样就不会每次只需将该时间与当前时间进行比较,就需要增加1小时。