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);
}
希望对您有所帮助。
我希望它每天重复安排 运行 每 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);
}
希望对您有所帮助。