【发布时间】:2015-05-14 08:44:35
【问题描述】:
每个人都在这里说将setExact 用于 API 级别 19 及更高级别,但找不到如何在其中设置重复时间,以便在指定时间再次重复。
那么请告诉我如何在setExact方法中设置重复时间?
这是我的代码
Calendar calendar2,calendar,cal,cal2;
calendar = new GregorianCalendar();
calendar2 = new GregorianCalendar();
calendar2.setTimeInMillis(System.currentTimeMillis());
calendar.setTimeInMillis(System.currentTimeMillis());
cal = new GregorianCalendar();
cal2 = new GregorianCalendar();
cal.add(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR));
cal.set(Calendar.HOUR_OF_DAY, 10);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, calendar.get(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, calendar.get(Calendar.MILLISECOND));
cal.set(Calendar.DATE, calendar.get(Calendar.DATE));
cal.set(Calendar.MONTH, calendar.get(Calendar.MONTH));
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent it = new Intent(MainActivity.this,Start_service_alarm.class);
it.putExtra(Start_service_alarm.ACTION, Start_service_alarm.ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 987654321, it, 0);
if(android.os.Build.VERSION.SDK_INT<19)
{
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}else
{
alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}
cal2.add(Calendar.DAY_OF_YEAR, calendar2.get(Calendar.DAY_OF_YEAR));
cal2.set(Calendar.HOUR_OF_DAY, 20);
cal2.set(Calendar.MINUTE, 0);
cal2.set(Calendar.SECOND, calendar2.get(Calendar.SECOND));
cal2.set(Calendar.MILLISECOND, calendar2.get(Calendar.MILLISECOND));
cal2.set(Calendar.DATE, calendar2.get(Calendar.DATE));
cal2.set(Calendar.MONTH, calendar2.get(Calendar.MONTH));
AlarmManager alarmManager2 = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent itIntent = new Intent(MainActivity.this,Stop_service_alarm.class);
itIntent.putExtra("ACTION_STOP", Stop_service_alarm.ACTION_STOP);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(MainActivity.this, 123456789, itIntent, 0);
if(android.os.Build.VERSION.SDK_INT<19)
{
alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2);
}else
{
alarmManager2.setExact(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), pendingIntent2);
}
【问题讨论】:
-
处理完再调用这个函数就简单了。为将来设置它。我还没有深入研究 19 API 以上的警报管理器,但是,当我为明天设置警报时 - 我用它来处理某些事情,一旦该过程完成,我再次可以调用 set alarm 方法为明天设置它吗?跨度>
-
@Skynet 我该怎么办?
-
您在接收警报时会调用什么? - 您必须执行某些操作,例如调用方法或启动服务。现在,当您的服务完成执行时,您可以通过调用 Alarm.setAlarm? 为明天再次设置警报?不能吗?
-
@Skynet 我的服务将在上午 10 点到晚上 8 点之间运行 8 点之后我应该如何设置明天的闹钟
-
如何在应用程序开始时设置警报?第一次安装?通过调用方法,对吧?
标签: android alarmmanager repeatingalarm