public static void setAlerm(Context context, Alerm alerm) { int dateMode = alerm.getMode(); String startTime = alerm.getStartTime(); String dateValue = alerm.getDateValue(); long next = computeNextAlarm(dateMode, dateValue, startTime); Log.i("next", "------next=" + next); Log.d("ldx", "nextTime: " + formatDate(next) + " , action: " + alerm.notifyId); Intent intent = new Intent(context, EAlarmReceiver.class); intent.setAction(alerm.notifyId); intent.putExtra(Const.KEY_DATA, alerm); PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); if (next == 0) { am.set(AlarmManager.RTC_WAKEUP, alerm.start_time, pi); } else { am.setRepeating(AlarmManager.RTC_WAKEUP, alerm.start_time, next, pi); } System.out.println(alerm.start_time + "----------------" + next); System.out.println(alerm.start_time - next + "======"); }
public static void initAlerm(Context context) { SharedPreferences sp = context.getSharedPreferences(Const.ALARM_SP, Context.MODE_PRIVATE); for (Map.Entry<String, String> entry : ALARM_ACTIONS.entrySet()) { String ac = entry.getValue(); String al = sp.getString(ac, null); if (null != al && 0 != al.trim().length()) { Alerm alerm = Alerm.parserJson(al); if (null != alerm) { cancelAlerm(context, alerm.notifyId); addAlerm(context, alerm); } } } }
public static void addAlerm(Context context, Alerm alerm) { String action = alerm.notifyId; ALARM_ACTIONS.put(action, action); if (!ALARM_ACTIONS.contains(action)) { return; } cancelAlerm(context, action); setAlerm(context, alerm); SharedPreferences sp = context.getSharedPreferences(Const.ALARM_SP, Context.MODE_PRIVATE); Editor edit = sp.edit(); edit.putString(action, alerm.toJson()); edit.commit(); }