• 团队冲刺第二阶段08


    今天对闹钟的提醒功能等进行了完善,继续解决之前的问题:

    public class SnoozeActivity extends AppCompatActivity implements OnReminderPickedListener {
    
      private Note note;
      private Note[] notes;
    
      public static void setNextRecurrentReminder(Note note) {
        if (!TextUtils.isEmpty(note.getRecurrenceRule())) {
          long nextReminder = RecurrenceHelper.nextReminderFromRecurrenceRule(Long.parseLong(note.getAlarm()), note
              .getRecurrenceRule());
          if (nextReminder > 0) {
            updateNoteReminder(nextReminder, note, true);
          }
        } else {
          new SaveNoteTask(false).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, note);
        }
      }
    
      private static void updateNoteReminder(long reminder, Note note) {
        updateNoteReminder(reminder, note, false);
      }
    
      private static void updateNoteReminder(long reminder, Note noteToUpdate, boolean updateNote) {
        if (updateNote) {
          noteToUpdate.setAlarm(reminder);
          new SaveNoteTask(false).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, noteToUpdate);
        } else {
          ReminderHelper.addReminder(OmniNotes.getAppContext(), noteToUpdate, reminder);
          ReminderHelper.showReminderMessage(noteToUpdate.getAlarm());
        }
      }
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        if (getIntent().getParcelableExtra(INTENT_NOTE) != null) {
          note = getIntent().getParcelableExtra(INTENT_NOTE);
          manageNotification(getSharedPreferences(PREFS_NAME, MODE_MULTI_PROCESS));
        } else {
          Object[] notesObjs = (Object[]) getIntent().getExtras().get(INTENT_NOTE);
          notes = Arrays.copyOf(notesObjs, notesObjs.length, Note[].class);
          postpone(getSharedPreferences(PREFS_NAME, MODE_MULTI_PROCESS), DateUtils.getNextMinute(), null);
        }
      }
    
      private void manageNotification(SharedPreferences prefs) {
        if (ACTION_DISMISS.equals(getIntent().getAction())) {
          setNextRecurrentReminder(note);
          finish();
        } else if (ACTION_SNOOZE.equals(getIntent().getAction())) {
          String snoozeDelay = prefs.getString("settings_notification_snooze_delay", PREF_SNOOZE_DEFAULT);
          long newReminder = Calendar.getInstance().getTimeInMillis() + Integer.parseInt(snoozeDelay) * 60 * 1000;
          updateNoteReminder(newReminder, note);
          finish();
        } else if (ACTION_POSTPONE.equals(getIntent().getAction())) {
          postpone(prefs, Long.parseLong(note.getAlarm()), note.getRecurrenceRule());
        } else {
          Intent intent = new Intent(this, MainActivity.class);
          intent.putExtra(INTENT_KEY, note.get_id());
          intent.setAction(ACTION_NOTIFICATION_CLICK);
          startActivity(intent);
          finish();
        }
        removeNotification(note);
      }
    
      private void postpone(SharedPreferences prefs, Long alarm, String recurrenceRule) {
        ReminderPickers reminderPicker = new ReminderPickers(this, this);
        reminderPicker.pick(alarm, recurrenceRule);
      }
    
      private void removeNotification(Note note) {
        NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        manager.cancel(String.valueOf(note.get_id()), 0);
      }
    
      @Override
      public void onReminderPicked(long reminder) {
        if (note != null) {
          note.setAlarm(reminder);
        } else {
          for (Note currentNote : notes) {
            currentNote.setAlarm(reminder);
          }
        }
      }
    
      @Override
      public void onRecurrenceReminderPicked(String recurrenceRule) {
        if (note != null) {
          note.setRecurrenceRule(recurrenceRule);
          setNextRecurrentReminder(note);
        } else {
          for (Note processedNotes : notes) {
            processedNotes.setRecurrenceRule(recurrenceRule);
            setNextRecurrentReminder(processedNotes);
          }
          setResult(RESULT_OK, getIntent());
        }
        finish();
      }
    
    }
    

      

  • 相关阅读:
    [整理]Win下好用的Markdown工具
    tcpip http socket
    [整理].net中的延迟初始化器
    [整理]ASP.NET WEB API 2学习
    [整理]ASP.NET MVC 5
    [转载]AngularJS 指令 用法
    [整理]HTML5 WebSocket
    [整理]CSS3 滤镜
    [整理]WebAPP开发的框架
    [整理]AngularJS移动端开发遇到的问题
  • 原文地址:https://www.cnblogs.com/cfypd/p/13088009.html
Copyright © 2020-2023  润新知