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程序设计有所帮助。