如何在两个自定义日期间设置闹钟。例如从2017年12月19日至20/12/2018。我该怎么做 ?。请帮帮我
答案 0 :(得分:0)
AlarmManager.INTERVAL_DAY
只是一天中毫秒数的长表示。
您可以传递任何您想要的自定义长值。
例如,2天3小时
`AlarmManager.INTERVAL_DAY` * 2 + `AlarmManager.INTERVAL_HOUR` * 3
或者你可以像那样计算
1秒= 1000
1分钟= 60 *秒......等等。
如果您希望将来在特定日期发出警报,可以使用AlarmManager.set()
或AlarmManager.setExact()
等等,并从与日期对应的日期/日历对象中传递毫秒数
new Date(2017, 5, 12).getTime()
或Calendar.getTime().getTime()
答案 1 :(得分:0)
您只需拨打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
返回false。那时新警报将不会重新安排。