欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程设置提醒事件的方法

程序员文章站 2024-02-19 21:55:10
本文实例讲述了android编程设置提醒事件的方法。分享给大家供大家参考,具体如下: 1、启动service intent intent = new inten...

本文实例讲述了android编程设置提醒事件的方法。分享给大家供大家参考,具体如下:

1、启动service

intent intent = new intent(this,autotaskservice.class);
intent.putextra("reminder_event", remindermodel);
startservice(intent);

2、service file

public class autotaskservice extends service {
  private remindermodel mremindermodel = null;
  @override
  public ibinder onbind(intent intent) {
    return null;
  }
  @override
  public void oncreate() {
    super.oncreate();
  }
  @override
  public void ondestroy() {
    super.ondestroy();
  }
  @override
  public void onstart(intent intent, int startid) {
    if(intent == null)
      return;
    if(intent.hasextra("reminder_event")) {
      mremindermodel = (remindermodel) intent.getserializableextra("reminder_event");
    }
    setreminderevent();
    super.onstart(intent, startid);
  }
  /**
   * set reminder event
   */
  private void setreminderevent() {
    if(mremindermodel == null)
      return;
    if(textutils.isempty(mremindermodel.reminderstarttime))
      return;
    if(textutils.isempty(mremindermodel.remindertime))
      return;
    calendar cal = getcalendarfromdate(mremindermodel.reminderstarttime);
    string[] array = mremindermodel.remindertime.split("-");
    for(int i = 0; i < array.length; i++) {
      if(i == 0) {
        cal.set(calendar.hour_of_day, integer.parseint(array[0]));
      } else if (i == 1) {
        cal.set(calendar.minute, integer.parseint(array[1]));
      }
    }
    cal.set(calendar.second, 0);
    intent intent = new intent(autotaskservice.this, alarmreceiver.class);
    if(!textutils.isempty(mremindermodel.reminderpath)) {
      intent.putextra("reminder_pic_path", mremindermodel.reminderpath);
    }
    pendingintent pi = pendingintent.getbroadcast(this, 0, intent, pendingintent.flag_cancel_current);
   // 获取alarmmanager对象
    alarmmanager am = (alarmmanager) getsystemservice(alarm_service);
   // alarmmanager.rtc_wakeup休眠时会运行,如果是alarmmanager.rtc,在休眠时不会运行
    am.set(alarmmanager.rtc_wakeup, cal.gettimeinmillis(), pi);
  }
  /**
   * @param date format is 2012-9-18
   * @return calendar value is after set date's value
   */
  private calendar getcalendarfromdate(final string date) {
    int year = 0;
    int month = 0;
    int day = 0;
    try {
      string[] array = date.split("-");
      int[] arrayint = new int[array.length];
      for (int i = 0; i < array.length; i++) {
        arrayint[i] = integer.parseint(array[i]);
        if(i == 0) {
          year = arrayint[0];
        } else if(i == 1){
          month = arrayint[1];
        } else if(i == 2){
          day = arrayint[2];
        }
      }
    } catch (exception e) {
      e.printstacktrace();
    }
    calendar cal = calendar.getinstance();
    if(year > 0 && month >= 0 && day >= 0) {
      cal.set(year, month - 1, day);
    }
    return cal;
  }
}

3、定时接收器

public class alarmreceiver extends broadcastreceiver {
  @override
  public void onreceive(context context, intent intent) {
    string path = null;
    if(intent.hasextra("reminder_pic_path")) {
      path = intent.getstringextra("reminder_pic_path");
    }
    log.i("======> alarmreceiver", path);
    // 启动通知activity
    intent it = new intent(context, fingerpaint.class);
    it.addflags(intent.flag_activity_new_task);
    if(!textutils.isempty(path)) {
      it.putextra("reminder_pic_path", path);
    }
    context.startactivity(it);
  }
}

希望本文所述对大家android程序设计有所帮助。