From 4bc48fc89cc6366ed2b76708de39e96b21c72035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjwj=E2=80=9D?= <“1010652965@qq.com”> Date: Sun, 7 Jan 2024 20:39:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E6=B3=A8=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...泛读、标注和维护报告文档.docx | Bin 182643 -> 185460 bytes .../micode/notes/ui/AlarmInitReceiver.java | 16 +++- .../net/micode/notes/ui/AlarmReceiver.java | 6 ++ .../net/micode/notes/ui/DateTimePicker.java | 78 ++++++++++-------- 4 files changed, 62 insertions(+), 38 deletions(-) diff --git a/doc/开源软件泛读、标注和维护报告文档.docx b/doc/开源软件泛读、标注和维护报告文档.docx index 4b2636613d448361c94105dbe81ca2cc988a9939..ecd729ae65d2535bdddae3052580562ee787eb43 100644 GIT binary patch delta 25939 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 AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, new String[] { String.valueOf(currentDate) }, + //类型转换,将long类型的currentDate转变为String类 null); if (c != null) { if (c.moveToFirst()) { + /* + 下面是根据数据库里的闹钟时间创建一个闹钟机制 + */ do { - long alertDate = c.getLong(COLUMN_ALERTED_DATE); + long alertDate = c.getLong(COLUMN_ALERTED_DATE); //获取提醒日期 Intent sender = new Intent(context, AlarmReceiver.class); + //通过定义一个Intent方法,与AlarmReceiver类建立连接 sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID))); + //进行数据地址的设置,设置为Notes.CONTENT_NOTE_URI + 之前获取的便签Id号 PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0); AlarmManager alermManager = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); diff --git a/src/main/java/net/micode/notes/ui/AlarmReceiver.java b/src/main/java/net/micode/notes/ui/AlarmReceiver.java index 54e503b..57e6705 100644 --- a/src/main/java/net/micode/notes/ui/AlarmReceiver.java +++ b/src/main/java/net/micode/notes/ui/AlarmReceiver.java @@ -21,7 +21,13 @@ import android.content.Context; import android.content.Intent; public class AlarmReceiver extends BroadcastReceiver { + //声明了一个名为AlarmReceiver的公共类,该类继承自BroadcastReceiver + //BroadcastReceiver是Android系统提供的一个用于接收广播的组件 @Override + /* + 下面这个方法是当接收器接收到匹配的广播时会被调用,该方法有两个参数 + 当前应用的上下文(context)和触发广播的意图(intent) + */ public void onReceive(Context context, Intent intent) { intent.setClass(context, AlarmAlertActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/src/main/java/net/micode/notes/ui/DateTimePicker.java b/src/main/java/net/micode/notes/ui/DateTimePicker.java index 496b0cd..8d74062 100644 --- a/src/main/java/net/micode/notes/ui/DateTimePicker.java +++ b/src/main/java/net/micode/notes/ui/DateTimePicker.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package net.micode.notes.ui; import java.text.DateFormatSymbols; @@ -29,7 +13,8 @@ import android.widget.FrameLayout; import android.widget.NumberPicker; public class DateTimePicker extends FrameLayout { - + //FrameLayout是布局模板之一 + //所有的子元素全部在屏幕的右上方 private static final boolean DEFAULT_ENABLE_STATE = true; private static final int HOURS_IN_HALF_DAY = 12; @@ -45,13 +30,15 @@ public class DateTimePicker extends FrameLayout { private static final int MINUT_SPINNER_MAX_VAL = 59; private static final int AMPM_SPINNER_MIN_VAL = 0; private static final int AMPM_SPINNER_MAX_VAL = 1; - + //初始化控件 private final NumberPicker mDateSpinner; private final NumberPicker mHourSpinner; private final NumberPicker mMinuteSpinner; private final NumberPicker mAmPmSpinner; + //NumberPicker是数字选择器 + //这里定义的四个变量全部是在设置闹钟时需要选择的变量(如日期、时、分、上午或者下午) private Calendar mDate; - + //定义了Calendar类型的变量mDate,用于操作时间 private String[] mDateDisplayValues = new String[DAYS_IN_ALL_WEEK]; private boolean mIsAm; @@ -71,41 +58,49 @@ public class DateTimePicker extends FrameLayout { updateDateControl(); onDateTimeChanged(); } - }; + };//OnValueChangeListener,这是时间改变监听器,这里主要是对日期的监听 + //将现在日期的值传递给mDate;updateDateControl是同步操作 private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { + //这里是对 小时(Hour) 的监听 @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { boolean isDateChanged = false; Calendar cal = Calendar.getInstance(); + //声明一个Calendar的变量cal,便于后续的操作 if (!mIs24HourView) { if (!mIsAm && oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); isDateChanged = true; + //这里是对于12小时制时,晚上11点和12点交替时对日期的更改 } else if (mIsAm && oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, -1); isDateChanged = true; } + //这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 if (oldVal == HOURS_IN_HALF_DAY - 1 && newVal == HOURS_IN_HALF_DAY || oldVal == HOURS_IN_HALF_DAY && newVal == HOURS_IN_HALF_DAY - 1) { mIsAm = !mIsAm; updateAmPmControl(); - } + }//这里是对于12小时制时,中午11点和12点交替时对AM和PM的更改 } else { if (oldVal == HOURS_IN_ALL_DAY - 1 && newVal == 0) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); isDateChanged = true; + //这里是对于24小时制时,晚上11点和12点交替时对日期的更改 } else if (oldVal == 0 && newVal == HOURS_IN_ALL_DAY - 1) { cal.setTimeInMillis(mDate.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, -1); isDateChanged = true; } - } + } //这里是对于12小时制时,凌晨11点和12点交替时对日期的更改 int newHour = mHourSpinner.getValue() % HOURS_IN_HALF_DAY + (mIsAm ? 0 : HOURS_IN_HALF_DAY); + //通过数字选择器对newHour的赋值 mDate.set(Calendar.HOUR_OF_DAY, newHour); + //通过set函数将新的Hour值传给mDate onDateTimeChanged(); if (isDateChanged) { setCurrentYear(cal.get(Calendar.YEAR)); @@ -117,15 +112,19 @@ public class DateTimePicker extends FrameLayout { private NumberPicker.OnValueChangeListener mOnMinuteChangedListener = new NumberPicker.OnValueChangeListener() { @Override + //这里是对 分钟(Minute)改变的监听 public void onValueChange(NumberPicker picker, int oldVal, int newVal) { int minValue = mMinuteSpinner.getMinValue(); int maxValue = mMinuteSpinner.getMaxValue(); int offset = 0; + //设置offset,作为小时改变的一个记录数据 if (oldVal == maxValue && newVal == minValue) { offset += 1; } else if (oldVal == minValue && newVal == maxValue) { offset -= 1; } + //如果原值为59,新值为0,则offset加1 + //如果原值为0,新值为59,则offset减1 if (offset != 0) { mDate.add(Calendar.HOUR_OF_DAY, offset); mHourSpinner.setValue(getCurrentHour()); @@ -145,6 +144,7 @@ public class DateTimePicker extends FrameLayout { }; private NumberPicker.OnValueChangeListener mOnAmPmChangedListener = new NumberPicker.OnValueChangeListener() { + //对AM和PM的监听 @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { mIsAm = !mIsAm; @@ -160,24 +160,27 @@ public class DateTimePicker extends FrameLayout { public interface OnDateTimeChangedListener { void onDateTimeChanged(DateTimePicker view, int year, int month, - int dayOfMonth, int hourOfDay, int minute); + int dayOfMonth, int hourOfDay, int minute); } public DateTimePicker(Context context) { this(context, System.currentTimeMillis()); - } + }//通过对数据库的访问,获取当前的系统时间 public DateTimePicker(Context context, long date) { this(context, date, DateFormat.is24HourFormat(context)); - } + }//上面函数的得到的是一个天文数字(1970至今的秒数),需要DateFormat将其变得有意义 public DateTimePicker(Context context, long date, boolean is24HourView) { super(context); + //获取系统时间 mDate = Calendar.getInstance(); mInitialising = true; mIsAm = getCurrentHourOfDay() >= HOURS_IN_HALF_DAY; inflate(context, R.layout.datetime_picker, this); - + //如果当前Activity里用到别的layout,比如对话框layout + //还要设置这个layout上的其他组件的内容,就必须用inflate()方法先将对话框的layout找出来 + //然后再用findViewById()找到它上面的其它组件 mDateSpinner = (NumberPicker) findViewById(R.id.date); mDateSpinner.setMinValue(DATE_SPINNER_MIN_VAL); mDateSpinner.setMaxValue(DATE_SPINNER_MAX_VAL); @@ -185,7 +188,7 @@ public class DateTimePicker extends FrameLayout { mHourSpinner = (NumberPicker) findViewById(R.id.hour); mHourSpinner.setOnValueChangedListener(mOnHourChangedListener); - mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); + mMinuteSpinner = (NumberPicker) findViewById(R.id.minute); mMinuteSpinner.setMinValue(MINUT_SPINNER_MIN_VAL); mMinuteSpinner.setMaxValue(MINUT_SPINNER_MAX_VAL); mMinuteSpinner.setOnLongPressUpdateInterval(100); @@ -226,7 +229,9 @@ public class DateTimePicker extends FrameLayout { mAmPmSpinner.setEnabled(enabled); mIsEnabled = enabled; } - + //存在疑问!!!!!!!!!!!!!setEnabled的作用 + //下面的代码通过原程序的注释已经比较清晰,另外可以通过函数名来判断 + //下面的各函数主要是对上面代码引用到的各函数功能的实现 @Override public boolean isEnabled() { return mIsEnabled; @@ -239,7 +244,7 @@ public class DateTimePicker extends FrameLayout { */ public long getCurrentDateInTimeMillis() { return mDate.getTimeInMillis(); - } + }//实现函数——得到当前的秒数 /** * Set the current date @@ -251,7 +256,7 @@ public class DateTimePicker extends FrameLayout { cal.setTimeInMillis(date); setCurrentDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); - } + }//实现函数功能——设置当前的时间,参数是date /** * Set the current date @@ -263,19 +268,20 @@ public class DateTimePicker extends FrameLayout { * @param minute The current minute */ public void setCurrentDate(int year, int month, - int dayOfMonth, int hourOfDay, int minute) { + int dayOfMonth, int hourOfDay, int minute) { setCurrentYear(year); setCurrentMonth(month); setCurrentDay(dayOfMonth); setCurrentHour(hourOfDay); setCurrentMinute(minute); - } + }//实现函数功能——设置当前的时间,参数是各详细的变量 /** * Get current year * * @return The current year */ + //下面是得到year、month、day等值 public int getCurrentYear() { return mDate.get(Calendar.YEAR); } @@ -446,7 +452,7 @@ public class DateTimePicker extends FrameLayout { mDateSpinner.setDisplayedValues(mDateDisplayValues); mDateSpinner.setValue(DAYS_IN_ALL_WEEK / 2); mDateSpinner.invalidate(); - } + }// 对于星期几的算法 private void updateAmPmControl() { if (mIs24HourView) { @@ -455,7 +461,7 @@ public class DateTimePicker extends FrameLayout { int index = mIsAm ? Calendar.AM : Calendar.PM; mAmPmSpinner.setValue(index); mAmPmSpinner.setVisibility(View.VISIBLE); - } + }// 对于上下午操作的算法 } private void updateHourControl() { @@ -465,7 +471,7 @@ public class DateTimePicker extends FrameLayout { } else { mHourSpinner.setMinValue(HOUR_SPINNER_MIN_VAL_12_HOUR_VIEW); mHourSpinner.setMaxValue(HOUR_SPINNER_MAX_VAL_12_HOUR_VIEW); - } + }// 对与小时的算法 } /** @@ -482,4 +488,4 @@ public class DateTimePicker extends FrameLayout { getCurrentMonth(), getCurrentDay(), getCurrentHourOfDay(), getCurrentMinute()); } } -} +} \ No newline at end of file