为 AlarmManager 设置自定义间隔
Set custom interval for AlarmManager
如何在两个自定义日期之间设置闹钟。例如,从 19/12/2017 - 20/12/2018。我该怎么做 ?。请帮助我
AlarmManager.INTERVAL_DAY
只是一天中毫秒数的长表示。
您可以传递任何您想要的自定义 long 值。
例如,2 天 3 小时就是
`AlarmManager.INTERVAL_DAY` * 2 + `AlarmManager.INTERVAL_HOUR` * 3
或者你也可以这样计算
1 秒 = 1000
1 分钟 = 60 * 秒 ...等等
如果你想在未来的特定日期触发警报,你可以使用 AlarmManager.set()
或 AlarmManager.setExact()
..etc 并从 date/calendar 对象传递毫秒对应你的日期。
new Date(2017, 5, 12).getTime()
或 Calendar.getTime().getTime()
您可以简单地调用 setExact
,然后在每个 PendingIntent
中,首先检查时间是否在您的阈值之前,如果是,则再次 setExact
。
public void scheduleAlarm() {
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent("myIntent");
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.setExact(TYPE, ALARM_INTERVAL, alarmIntent);
}
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myIntent")) {
//do something
if (timeHasNotPassedYet(Calendar.getInstance())) {
scheduleAlarm();
}
}
}
}
警报将被安排到 timeHasNotPassedYet
returns false。届时新闹钟将不会重新安排。
如何在两个自定义日期之间设置闹钟。例如,从 19/12/2017 - 20/12/2018。我该怎么做 ?。请帮助我
AlarmManager.INTERVAL_DAY
只是一天中毫秒数的长表示。
您可以传递任何您想要的自定义 long 值。
例如,2 天 3 小时就是
`AlarmManager.INTERVAL_DAY` * 2 + `AlarmManager.INTERVAL_HOUR` * 3
或者你也可以这样计算
1 秒 = 1000
1 分钟 = 60 * 秒 ...等等
如果你想在未来的特定日期触发警报,你可以使用 AlarmManager.set()
或 AlarmManager.setExact()
..etc 并从 date/calendar 对象传递毫秒对应你的日期。
new Date(2017, 5, 12).getTime()
或 Calendar.getTime().getTime()
您可以简单地调用 setExact
,然后在每个 PendingIntent
中,首先检查时间是否在您的阈值之前,如果是,则再次 setExact
。
public void scheduleAlarm() {
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent("myIntent");
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.setExact(TYPE, ALARM_INTERVAL, alarmIntent);
}
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myIntent")) {
//do something
if (timeHasNotPassedYet(Calendar.getInstance())) {
scheduleAlarm();
}
}
}
}
警报将被安排到 timeHasNotPassedYet
returns false。届时新闹钟将不会重新安排。