我使用android application
在set up Notification(Alarm)
到AlarmManager
中使用了以下代码。
public void setAlarm() {
Intent intent = new Intent(MainActivity.this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
(40000), pendingIntent);
}
或者我应该使用以下代码
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, 3);
calendar.set(Calendar.YEAR, 2015);
calendar.set(Calendar.DAY_OF_MONTH, 21);
calendar.set(Calendar.HOUR_OF_DAY,11);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM,Calendar.AM);
Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
我想在此特定时间设置(通知)闹钟:2015年3月21日上午11:15
任何人都可以帮我设置吗?
答案 0 :(得分:3)
首先,您需要使用Calendar
将日期设置为:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 3);
cal.set(Calendar.YEAR, 2015);
cal.set(Calendar.DAY_OF_MONTH, 15);
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 15);
然后在setAlarm()
方法中,您只需设置一次警报。你不需要重复它:
public void setAlarm() {
Intent intent = new Intent(MainActivity.this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent);
}
答案 1 :(得分:1)
一个。 http://nnish.com/2014/12/16/scheduled-notifications-in-android-using-alarm-manager/
B中。 http://androidideasblog.blogspot.co.uk/2011/07/alarmmanager-and-notificationmanager.html
℃。 https://github.com/benbahrenburg/benCoding.AlarmManager D. http://www.banane.com/2014/05/07/simple-example-of-scheduled-self-clearing-android-notifications/
我希望它会对你有所帮助。
答案 2 :(得分:1)
每秒运行一个线程,并将指定的时间与当前时间进行比较,如果匹配则设置通知。
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm aa");
String dateTimeinSrting = "21-Mar-2015 11:15 am";
try {
Date dateTime = formatter.parse(dateTimeInString);
} catch (ParseException e) {
e.printStackTrace();
}
float dateTimeInMillis = dateTime.getTime();
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
Calendar calendar;
if(Float.compare(dateTimeInMillis, calendar.getTimeInMillis())){
//Set the notification here
}
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);