From ea6e0171c88a22913d94b1030a20cafaf6e21891 Mon Sep 17 00:00:00 2001 From: eazzy <1044745821@qq.com> Date: Sun, 24 Dec 2023 21:19:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=88=86=E6=94=AF=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../micode/notes/ui/AlarmAlertActivity.java | 138 +++++++++--------- .../net/micode/notes/ui/NoteEditText.java | 29 ++-- .../net/micode/notes/ui/NoteItemData.java | 84 ++++++++--- 3 files changed, 145 insertions(+), 106 deletions(-) diff --git a/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java b/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java index 96f28bf..e6a9d73 100644 --- a/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java +++ b/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java @@ -46,21 +46,23 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - requestWindowFeature(Window.FEATURE_NO_TITLE);//设置界面显示——无标题 + // 设置界面显示——无标题 + requestWindowFeature(Window.FEATURE_NO_TITLE); final Window win = getWindow(); - - win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);//设置窗体属性——在锁屏时显示 + // 设置窗体属性——在锁屏时显示 + win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); if (!isScreenOn()) { - win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON//保持点亮、点亮屏幕、允许点亮时解锁 + // 设置窗体属性——保持点亮、点亮屏幕、允许点亮时解锁 + win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR); } - Intent intent = getIntent();//获取传递的 Intent + // 获取传递的 Intent + Intent intent = getIntent(); try { // 从 Intent 中获取数据并处理——获取标签 ID @@ -78,33 +80,24 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD mPlayer = new MediaPlayer(); if (DataUtils.visibleInNoteDatabase(getContentResolver(), mNoteId, Notes.TYPE_NOTE)) { - showActionDialog();// 显示对话框 - playAlarmSound();// 播放闹钟提示音 + // 显示对话框 + showActionDialog(); + // 播放闹钟提示音 + playAlarmSound(); } else { - finish();// 结束当前 Activity + // 结束当前 Activity + finish(); } } - /** - * @method isScreenOn - * @description - * 判断屏幕是否锁屏,调用系统函数判断,最后返回值是布尔类型 - * @date: 12/23/2023 11:21 PM - * @author: YangYizhe - * @param - * @return - */ + private boolean isScreenOn() { + //判断屏幕是否锁屏,调用系统函数判断,最后返回值是布尔类型 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); return pm.isScreenOn(); } - /** - * @method playAlarmSound - * @description - * 播放闹钟提示音 - * @date: 12/23/2023 11:21 PM - * @author: YangYizhe - */ + private void playAlarmSound() { + //闹钟提示音激发 Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); //调用系统的铃声管理URI,得到闹钟提示音 int silentModeStreams = Settings.System.getInt(getContentResolver(), @@ -117,12 +110,19 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD } try { mPlayer.setDataSource(this, url); + //方法:setDataSource(Context context, Uri uri) + //解释:无返回值,设置多媒体数据来源【根据 Uri】 mPlayer.prepare(); - mPlayer.setLooping(true);//设置是否循环播放 - mPlayer.start();//开始播放 + //准备同步 + mPlayer.setLooping(true); + //设置是否循环播放 + mPlayer.start(); + //开始播放 } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); + //e.printStackTrace()函数功能是抛出异常, 还将显示出更深的调用信息 + //System.out.println(e),这个方法打印出异常,并且输出在哪里出现的异常 } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -134,67 +134,61 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD e.printStackTrace(); } } - /** - * @method showActionDialog - * @description - * AlertDialog的构造方法全部是Protected的 - * 所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。 - * 要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法 - * 如这里的dialog就是新建了一个AlertDialog - * @date: 12/23/2023 11:28 PM - * @author: YangYizhe - */ + private void showActionDialog() { AlertDialog.Builder dialog = new AlertDialog.Builder(this); - dialog.setTitle(R.string.app_name);//为对话框设置标题 - dialog.setMessage(mSnippet);//为对话框设置内容 - dialog.setPositiveButton(R.string.notealert_ok, this);//给对话框添加"Yes"按钮 + /* AlertDialog的构造方法全部是Protected的 + * 所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。 + * 要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法 + * 如这里的dialog就是新建了一个AlertDialog + */ + dialog.setTitle(R.string.app_name); + //为对话框设置标题 + dialog.setMessage(mSnippet); + //为对话框设置内容 + dialog.setPositiveButton(R.string.notealert_ok, this); + //给对话框添加"Yes"按钮 if (isScreenOn()) { - dialog.setNegativeButton(R.string.notealert_enter, this);//对话框添加"No"按钮 - } + dialog.setNegativeButton(R.string.notealert_enter, this); + }//对话框添加"No"按钮 dialog.show().setOnDismissListener(this); } - /** - * @method onClick - * @description 处理点击事件 - * @date: 12/23/2023 11:27 PM - * @author: YangYizhe - * @param dialog - * @param which - */ + public void onClick(DialogInterface dialog, int which) { - switch (which) {//用which来选择click后下一步的操作 - case DialogInterface.BUTTON_NEGATIVE://这是取消操作 - Intent intent = new Intent(this, NoteEditActivity.class);//实现两个类间的数据传输 - intent.setAction(Intent.ACTION_VIEW);//设置动作属性 - intent.putExtra(Intent.EXTRA_UID, mNoteId);//实现key-value对 EXTRA_UID为key;mNoteId为键 - startActivity(intent);//开始动作 + switch (which) { + //用which来选择click后下一步的操作 + case DialogInterface.BUTTON_NEGATIVE: + //这是取消操作 + Intent intent = new Intent(this, NoteEditActivity.class); + //实现两个类间的数据传输 + intent.setAction(Intent.ACTION_VIEW); + //设置动作属性 + intent.putExtra(Intent.EXTRA_UID, mNoteId); + //实现key-value对 + //EXTRA_UID为key;mNoteId为键 + startActivity(intent); + //开始动作 break; default: + //这是确定操作 break; } } - /** - * @method onDismiss - * @description 忽略 - * @date: 12/23/2023 11:25 PM - * @author: YangYizhe - * @param dialog - */ + public void onDismiss(DialogInterface dialog) { - stopAlarmSound();//停止闹钟声音 + //忽略 + stopAlarmSound(); + //停止闹钟声音 finish(); + //完成该动作 } - /** - * @method stopAlarmSound - * @description 停止闹钟的声音 - * @date: 12/23/2023 11:26 PM - * @author: YangYizhe - */ + private void stopAlarmSound() { if (mPlayer != null) { - mPlayer.stop();//停止播放 - mPlayer.release();//释放MediaPlayer对象 + mPlayer.stop(); + //停止播放 + mPlayer.release(); + //释放MediaPlayer对象 mPlayer = null; } } diff --git a/src/main/java/net/micode/notes/ui/NoteEditText.java b/src/main/java/net/micode/notes/ui/NoteEditText.java index c935358..d29d3d2 100644 --- a/src/main/java/net/micode/notes/ui/NoteEditText.java +++ b/src/main/java/net/micode/notes/ui/NoteEditText.java @@ -46,19 +46,12 @@ import java.util.Map; * @Version: 1.0 */ public class NoteEditText extends EditText { - //常量标识 private static final String TAG = "NoteEditText"; - //声明整型变量,文本索引 private int mIndex; - //声明整型变量 private int mSelectionStartBeforeDelete; - - //声明字符串常量,标志电话、网址、邮件 private static final String SCHEME_TEL = "tel:" ; private static final String SCHEME_HTTP = "http:" ; private static final String SCHEME_EMAIL = "mailto:" ; - - //设置映射,将文本内容(电话、网址、邮件)做链接处理 private static final Map sSchemaActionResMap = new HashMap(); static { sSchemaActionResMap.put(SCHEME_TEL, R.string.note_link_tel); @@ -103,7 +96,9 @@ public class NoteEditText extends EditText { mIndex = 0; } - //设置索引号 + /** + * 设置索引号 + */ public void setIndex(int index) { mIndex = index; } @@ -129,15 +124,15 @@ public class NoteEditText extends EditText { // TODO Auto-generated constructor stub } + @Override /** * @method onTouchEvent * @description 处理触摸事件,根据触摸点的位置设置光标的位置 - * @date: 12/21/2023 12:41 AM + * @date: 12/24/2023 6:07 PM * @author: YangYizhe - * @param - * @return + * @param [event] + * @return boolean */ - @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: @@ -240,15 +235,15 @@ public class NoteEditText extends EditText { super.onFocusChanged(focused, direction, previouslyFocusedRect); } + @Override /** * @method onCreateContextMenu - * @description - * @date: 12/21/2023 12:39 AM + * @description 创建上下文菜单 + * @date: 12/24/2023 6:08 PM * @author: YangYizhe - * @param - * @return + * @param [menu] + * @return void */ - @Override protected void onCreateContextMenu(ContextMenu menu) { if (getText() instanceof Spanned) { int selStart = getSelectionStart(); diff --git a/src/main/java/net/micode/notes/ui/NoteItemData.java b/src/main/java/net/micode/notes/ui/NoteItemData.java index 0f5a878..832cbe9 100644 --- a/src/main/java/net/micode/notes/ui/NoteItemData.java +++ b/src/main/java/net/micode/notes/ui/NoteItemData.java @@ -25,7 +25,14 @@ import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.tool.DataUtils; - +/** + * @Package: net.micode.notes.ui + * @ClassName: NoteItemData + * @Description: 这个类用于封装笔记列表项的数据,包括笔记的各种属性和状态。 + * @Author: YangYizhe + * @CreateDate: 12/24/2023 6:00 PM + * @Version: 1.0 + */ public class NoteItemData { static final String [] PROJECTION = new String [] { NoteColumns.ID, @@ -75,7 +82,16 @@ public class NoteItemData { private boolean mIsOnlyOneItem; private boolean mIsOneNoteFollowingFolder; private boolean mIsMultiNotesFollowingFolder; - + /** + * @method NoteItemData + * @description + * 创建一个笔记项数据对象 + * 通过传入的游标和上下文对象初始化笔记项数据 + * @date: 12/24/2023 6:00 PM + * @author: YangYizhe + * @param context 上下文对象 + * @param cursor 游标对象,用于获取数据库中的笔记数据 + */ public NoteItemData(Context context, Cursor cursor) { mId = cursor.getLong(ID_COLUMN); mAlertDate = cursor.getLong(ALERTED_DATE_COLUMN); @@ -108,7 +124,13 @@ public class NoteItemData { } checkPostion(cursor); } - + /** + * @method checkPostion + * @description 检查当前笔记项在游标中的位置,并设置相应的标志位 + * @date: 12/24/2023 6:00 PM + * @author: YangYizhe + * @param cursor 游标对象 + */ private void checkPostion(Cursor cursor) { mIsLastItem = cursor.isLast() ? true : false; mIsFirstItem = cursor.isFirst() ? true : false; @@ -133,59 +155,87 @@ public class NoteItemData { } } } - + /** + * 判断是否只有一个笔记项跟随在文件夹后面 + */ public boolean isOneFollowingFolder() { return mIsOneNoteFollowingFolder; } - + /** + * 判断是否有多个笔记项跟随在文件夹后面 + */ public boolean isMultiFollowingFolder() { return mIsMultiNotesFollowingFolder; } - + /** + * 判断当前笔记项是否为最后一项 + */ public boolean isLast() { return mIsLastItem; } - + /** + * 获取通话记录对应的联系人姓名 + */ public String getCallName() { return mName; } - + /** + * 判断当前笔记项是否为第一项 + */ public boolean isFirst() { return mIsFirstItem; } - + /** + * 判断当前笔记项是否为唯一一项 + */ public boolean isSingle() { return mIsOnlyOneItem; } - + /** + * 获取笔记项的ID + */ public long getId() { return mId; } - + /** + * 获取笔记项的提醒日期 + */ public long getAlertDate() { return mAlertDate; } - + /** + * 获取笔记项的创建日期 + */ public long getCreatedDate() { return mCreatedDate; } - + /** + * 判断笔记项是否包含附件 + */ public boolean hasAttachment() { return mHasAttachment; } - + /** + * 获取笔记项的修改日期 + */ public long getModifiedDate() { return mModifiedDate; } - + /** + * 获取笔记项的背景颜色ID + */ public int getBgColorId() { return mBgColorId; } - + /** + * 获取笔记项的父文件夹ID + */ public long getParentId() { return mParentId; } - + /** + * 获取笔记项的子笔记数量 + */ public int getNotesCount() { return mNotesCount; }