在我的应用程序中,我想在特定的时间段内使用报警服务。我从用户那里获取开始时间和结束时间值并将其保存在数据库中,现在我想在启动时启动报警服务并且报警应该在用户指定的结束时间离开。我是这个主题的新手,无法理解如何实现这个...任何帮助将不胜感激。谢谢你..
答案 0 :(得分:2)
这是您实现警报管理器的方式。但是你还需要阅读android中的Calendar对象。
String alarm = Context.ALARM_SERVICE;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 8);//Just an example setting the alarm for the 8th hour of a day.
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);
AlarmManager am = (AlarmManager)getActivity().getSystemService(alarm);
//This is the intent that is launched when the alarm goes off.
Intent intent = new Intent("WAKE_UP");
PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);
//If the user wants the alarm to repeat then use AlarmManager.setRepeating if they just want it one time use AlarmManager.set().
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, sender);
}
此外,您需要注册一个BroadCast接收器,除非警报设置它时的意图。 您创建BroadCast接收器并在清单中注册它以接收警报的意图。 http://www.vogella.de/articles/AndroidServices/article.html
这是一个很好的教程,可以帮助您更好地理解
答案 1 :(得分:0)
关键是要使用具有待定意图的AlarmManager
。
mAlarmSender = PendingIntent.getService(AlarmService.this,
0, new Intent(AlarmService.this, AlarmService_Service.class), 0);
然后从当前上下文创建AlarmManager:
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
安排先前创建的待定意图。
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, 30*1000, mAlarmSender);
按计划调用AlarmService_Service
服务,或者您可以设置其他意图,例如打开特定活动。
以下是如何安排闹钟的完整示例:AlarmService.java