AlarmManager 计划从上午 9 点到下午 4 点每 10 分钟 运行

AlarmManager schedule to run every 10 minute from 9AM to 4PM

我希望它每天重复安排 运行 每 10 分钟一次。 下面是执行为其设置的待处理意图的代码。

问题是这个 运行 一天中每 10 分钟一次,而不是仅在特定时间 window 到 运行,即 上午 9 点到下午 4 点.

关于 AlarmManager 在特定时间重复触发的任何帮助表示赞赏 window。

下面是我当前的代码:

        int MILLISECOND_PER_MINUTE = 60 * 1000;
        int frequencyInMinutes = 10;// 10 mins interval
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), (frequencyInMinutes * MILLISECOND_PER_MINUTE), pendingIntent);

那你可以放一个具体的时间段条件然后放你的代码

int MILLISECOND_PER_MINUTE = 60 * 1000;
        int frequencyInMinutes = 10;// 10 mins interval
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), (frequencyInMinutes * MILLISECOND_PER_MINUTE), pendingIntent);

在里面。 获取特定的当前时间并通过输入条件

来检查它

能不能按设定的时间试一下,根据需要进行检查。早上 9 点开始闹钟,然后在 4 点取消。 检查你的接收器现在几点了,如果有 4 则取消闹钟。

openTimePickerDialog(false);


private void openTimePickerDialog(boolean is24r){
Calendar calendar = Calendar.getInstance();
timePickerDialog = new TimePickerDialog(
AndroidTimeActivity.this, 
onTimeSetListener, 
calendar.get(Calendar.HOUR_OF_DAY), 
calendar.get(Calendar.MINUTE), 
is24r);
timePickerDialog.setTitle("Set Alarm Time");  

timePickerDialog.show();

}

OnTimeSetListener onTimeSetListener
= new OnTimeSetListener(){

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();

calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);

if(calSet.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
calSet.add(Calendar.DATE, 1);
}

setAlarm(calSet);
}};

 private void setAlarm(Calendar targetCal){

 textAlarmPrompt.setText(
 "\n\n***\n"
 + "Alarm is set@ " + targetCal.getTime() + "\n"
 + "***\n");

Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(),   RQS_1, intent, 0);
 AlarmManager alarmManager =    (AlarmManager)getSystemService(Context.ALARM_SERVICE);
 alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

}

希望对您有所帮助。