Android编程设置提醒事件的方法
本文实例讲述了Android编程设置提醒事件的方法。分享给大家供大家参考,具体如下:
1、启动service
Intentintent=newIntent(this,AutoTaskService.class);
intent.putExtra("reminder_event",reminderModel);
startService(intent);
2、servicefile
publicclassAutoTaskServiceextendsService{
privateReminderModelmReminderModel=null;
@Override
publicIBinderonBind(Intentintent){
returnnull;
}
@Override
publicvoidonCreate(){
super.onCreate();
}
@Override
publicvoidonDestroy(){
super.onDestroy();
}
@Override
publicvoidonStart(Intentintent,intstartId){
if(intent==null)
return;
if(intent.hasExtra("reminder_event")){
mReminderModel=(ReminderModel)intent.getSerializableExtra("reminder_event");
}
setReminderEvent();
super.onStart(intent,startId);
}
/**
*setreminderevent
*/
privatevoidsetReminderEvent(){
if(mReminderModel==null)
return;
if(TextUtils.isEmpty(mReminderModel.reminderStartTime))
return;
if(TextUtils.isEmpty(mReminderModel.reminderTime))
return;
Calendarcal=getCalendarFromDate(mReminderModel.reminderStartTime);
String[]array=mReminderModel.reminderTime.split("-");
for(inti=0;i<array.length;i++){
if(i==0){
cal.set(Calendar.HOUR_OF_DAY,Integer.parseInt(array[0]));
}elseif(i==1){
cal.set(Calendar.MINUTE,Integer.parseInt(array[1]));
}
}
cal.set(Calendar.SECOND,0);
Intentintent=newIntent(AutoTaskService.this,AlarmReceiver.class);
if(!TextUtils.isEmpty(mReminderModel.reminderPath)){
intent.putExtra("reminder_pic_path",mReminderModel.reminderPath);
}
PendingIntentpi=PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
//获取AlarmManager对象
AlarmManageram=(AlarmManager)getSystemService(ALARM_SERVICE);
//AlarmManager.RTC_WAKEUP休眠时会运行,如果是AlarmManager.RTC,在休眠时不会运行
am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pi);
}
/**
*@paramdateformatis2012-9-18
*@returnCalendarvalueisaftersetdate'svalue
*/
privateCalendargetCalendarFromDate(finalStringdate){
intyear=0;
intmonth=0;
intday=0;
try{
String[]array=date.split("-");
int[]arrayInt=newint[array.length];
for(inti=0;i<array.length;i++){
arrayInt[i]=Integer.parseInt(array[i]);
if(i==0){
year=arrayInt[0];
}elseif(i==1){
month=arrayInt[1];
}elseif(i==2){
day=arrayInt[2];
}
}
}catch(Exceptione){
e.printStackTrace();
}
Calendarcal=Calendar.getInstance();
if(year>0&&month>=0&&day>=0){
cal.set(year,month-1,day);
}
returncal;
}
}
3、定时接收器
publicclassAlarmReceiverextendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcontext,Intentintent){
Stringpath=null;
if(intent.hasExtra("reminder_pic_path")){
path=intent.getStringExtra("reminder_pic_path");
}
Log.i("======>AlarmReceiver",path);
//启动通知activity
Intentit=newIntent(context,FingerPaint.class);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if(!TextUtils.isEmpty(path)){
it.putExtra("reminder_pic_path",path);
}
context.startActivity(it);
}
}
希望本文所述对大家Android程序设计有所帮助。