设置AlarmManager的自定义间隔

时间:2017-12-19 18:58:30

标签: android alarmmanager

如何在两个自定义日期间设置闹钟。例如从2017年12月19日至20/12/2018。我该怎么做 ?。请帮帮我

2 个答案:

答案 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。那时新警报将不会重新安排。