基于Android的手机备忘录软件设计

合集下载

基于android的电子备忘录设计与实现

基于android的电子备忘录设计与实现

基于a n d r o i d的电子备忘录设计与实现This model paper was revised by LINDA on December 15, 2012.图书分类号:密级:毕业设计(论文)基于android的电子备忘录设计与实现The Design?And Realization Of Electronic?MemoBased On Android学生姓名学院名称信电工程学院学号班级专业名称计算机科学与技术指导教师2015年05月23日徐州工程学院学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。

除文中已经注明引用或参考的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标注。

本人完全意识到本声明的法律结果由本人承担。

论文作者签名:日期:年月日徐州工程学院学位论文版权协议书本人完全了解徐州工程学院关于收集、保存、使用学位论文的规定,即:本校学生在学习期间所完成的学位论文的知识产权归徐州工程学院所拥有。

徐州工程学院有权保留并向国家有关部门或机构送交学位论文的纸本复印件和电子文档拷贝,允许论文被查阅和借阅。

徐州工程学院可以公布学位论文的全部或部分内容,可以将本学位论文的全部或部分内容提交至各类数据库进行发布和检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

论文作者签名:导师签名:日期:年月日日期:年月日摘要对于大多数人来说,随身带个小本子来记录一些即将要处理的事情是很有必要的,从而出现了备忘录。

有了随身备忘录,就可以将自己的生活与工作的事情安排的井井有条,能够在有限的时间内准时高效的完成自己的工作。

当今,智能手机已经走进千家万户,人们对于智能手机的依赖性愈来愈强,渐渐地成为人们获得信息的最主要设备,也是人们获取信息最方便、最快捷的途径之一。

因此,对于大多数智能手机用户来说,把记事本功能集成在手机上使用是极好的选择。

基于Android的快捷记事本的设计与实现

基于Android的快捷记事本的设计与实现

基于Android的快捷记事本的设计与实现随着移动互联网的快速发展,智能手机已经成为了人们生活中不可或缺的一部分。

而Android系统作为全球最受欢迎的移动操作系统之一,其应用的开发与使用也日益普及。

在日常生活中,我们经常需要记录一些临时想法或者重要信息,因此设计一款基于Android系统的快捷记事本应用,可以为用户提供便利的信息记录和管理功能,方便用户随时随地记录重要信息并轻松管理。

一、功能设计1. 文字记录:用户可以通过快捷记事本应用输入文字信息,包括备忘录、待办事项、重要事件等。

2. 图片记录:用户可以通过快捷记事本应用拍照或者选择相册中的图片,并记录相关信息。

比如拍摄一张购物清单上的商品图片,并在备注中记录购买计划。

3. 录音功能:用户可以通过快捷记事本应用进行语音记录,方便在需要时进行回放。

比如在外出旅行时,可以用录音功能记录下美丽的景色或者临时的灵感。

4. 分类管理:用户可以对记录的信息进行分类管理,比如设定不同的标签或者文件夹,将相关的记录归档整理。

5. 提醒功能:用户可以设定提醒时间,当到达设定的时间时,应用会自动发送提醒通知,提醒用户查看相关记录,并及时处理。

6. 导出分享:用户可以将重要的记录信息导出为文本、图片或者语音文件,并通过社交平台或者邮件等方式进行分享。

7. 备份与恢复:用户可以通过快捷记事本应用进行数据备份,方便进行数据的恢复和迁移。

二、界面设计1. 登录界面:用户通过账号和密码进行登录,或者选择使用第三方账号进行快速登录。

2. 首页界面:显示用户最近的记录信息,包括文字、图片、录音等,方便用户快速查看。

3. 记录详情界面:用户可以查看记录的详情信息,对记录进行编辑、删除、标记等操作。

4. 分类管理界面:用户可以在这里对记录的信息进行分类管理,包括创建新的分类、编辑分类信息、删除分类等操作。

5. 设置界面:用户可以在这里进行应用的各项设置,包括提醒设置、备份设置、账号管理等。

基于Android备忘录软件的设计与实现

基于Android备忘录软件的设计与实现

基于Android备忘录软件的设计与实现作者:查怀松吴锦华张文强来源:《电脑知识与技术》2019年第14期摘要:随着移动互联网的发展,手机成为我们生活不可或缺的一部分。

设计一款备忘录软件,打开移动端软件可以完成对事件进行备忘事件记录,软件功能模块主要包括:用户管理模块、备忘提醒模块、备忘录管理模块。

关键词:备忘录;Android;备忘提醒中图分类号:TP311 ; ; ; ;文献标识码:A文章编号:1009-3044(2019)14-0029-03开放科学(资源服务)标识码(OSID):<E:\知网文件\电脑\电脑13-15\14期\3xs201914\Image\image1_2.jpeg>Abstract: With the development of mobile Internet, mobile phones have become an indispensable part of our lives. Design a memo software, open the mobile software can complete the event memo, software modules mainly include: user management module, memo reminder module and memo management module.Key words: memorandum; Android; memo reminder国外產品有to-do-list、备忘录(iPhone)、提醒事项(iPhone)、Any.do,国内有日程管理到点(timedo.me)、提醒事项+(Kwok Wing Lai),因为国外的人生活习惯与国人有所差别,所以制作的软件从逻辑和功能上考虑,国内用户使用不一定习惯,然而现在国内的软件普遍存在小广告并且涉及的模块过多,其中包含了很多用户不想触碰的功能,导致用户体验差,不纯净。

基于Android的手机备忘录软件设计

基于Android的手机备忘录软件设计

课程设计报告(本科)课程:嵌入式系统学号:姓名:班级:教师:时间:2013年5月3日至6月20日计算机科学与技术系设计名称:基于Android的手机备忘录软件设计设计内容、目的与要求:一.目的:利用所学《嵌入式Linux应用开发》课程所学知识,针对实际问题,基于Android系统平台研发出具有实际应用价值的备忘录。

主要内容:(1)基于Android系统平台研发出备忘录;(2)通过安装备忘录,防止手机用户遗忘某个时间的重要工作,进行记录并在特定时间通过声音,文字或振动提醒用户;(3)主要模块有:备忘录数据存储、数据共享访问、列表浏览、数据维护和定时提醒等模块。

二.基本要求(1)基于Android系统平台研发出备忘录,以防止手机用户遗忘某个时间的重要工作,进行记录并在特定时间通过声音,文字或振动提醒用户。

(2)主要设计出备忘录数据存储、数据共享访问、列表浏览、数据维护和定时提醒等模块。

已学习掌握Android系统平台和Java编程技术,并要求软件界面简洁专业,功能完善,真正为用户提供重要工作备忘功能。

计划与进度安排:5月 3日~5月15日: 完成设计思路并作出草稿;5月16日~6月1日: 完成程序的输入;6月2日~6月10日: 完成对基本功能的修改并运行无误;6月11日~6月21日: 增加对开始的源程序的功能;6月22日~6月26日: 修改并完成,提交验收;设计过程、步骤(可加页):一. 功能结构开始设置是否开启设置时间备忘录内容开启闹钟结束二. 设计说明1. 备忘录数据存储实现为了持久地将用户的备忘录信息保存下来,需要将这些信息存储在SQLite 数据库中。

备忘录需要保存的信息有:编号(ID)、提醒日起(Datel)、提醒时间(Time1)、提醒内容(Content)、是否启用(NO_OFF)、是否声音提醒(Alarm)、创建日期(Created)等。

在操作北往里数据表手机,一些属性在几个类中使用,为此我们将其定义为一个常量类,在该常量类中声明。

基于Android的快捷记事本的设计与实现

基于Android的快捷记事本的设计与实现

基于Android的快捷记事本的设计与实现快捷记事本是一款方便用户随时随地记录信息的应用程序。

基于Android平台的快捷记事本的设计与实现,可以提供给用户一个简单而高效的记事工具。

一、设计思路:快捷记事本需要具备以下功能:1. 用户可以通过界面简单快捷地添加新的笔记。

2. 用户可以对已有笔记进行编辑、删除和查看操作。

3. 笔记可以按照创建时间进行排序,新建的笔记在前。

4. 用户可以通过关键字搜索笔记内容。

5. 用户可以设定提醒时间或者提醒周期。

二、界面设计:1. 主界面:主界面显示用户已创建的所有笔记,按照创建时间排序。

每个笔记显示标题、内容和创建时间。

界面上方有一个“+”按钮,点击即可进入添加笔记界面。

2. 添加笔记界面:添加笔记界面包括标题和内容的输入框,用户输入后点击“保存”按钮即可保存笔记并返回主界面。

3. 编辑笔记界面:编辑笔记界面显示已选中的笔记的标题和内容,用户可以在输入框进行编辑。

点击“保存”按钮即可保存笔记并返回主界面。

4. 查看笔记界面:点击主界面的某个笔记后,即可进入查看笔记界面,显示该笔记的标题和内容。

界面下方有“编辑”和“删除”按钮,用户可以对该笔记进行相应操作。

三、关键技术实现:1. 使用RecyclerView实现主界面的笔记列表展示。

RecyclerView是一种高效的列表控件,可以对列表项进行复用,提高性能。

2. 使用SQLite数据库存储笔记数据。

SQLite是一种轻量级的数据库,适用于移动设备。

每个笔记包含标题、内容和创建时间等字段,可以通过数据库操作实现增删改查功能。

3. 使用SearchView实现搜索功能。

SearchView是Android提供的搜索控件,可以根据用户输入的关键字进行搜索,并展示搜索结果。

4. 使用AlarmManager实现提醒功能。

AlarmManager是Android提供的定时任务管理器,可以设置提醒时间,到达指定时间后触发相应事件。

基于android的电子备忘录设计与实现

基于android的电子备忘录设计与实现

基于a n d r o i d的电子备忘录设计与实现This model paper was revised by LINDA on December 15, 2012.图书分类号:密级:毕业设计(论文)基于android的电子备忘录设计与实现The Design?And Realization Of Electronic?MemoBased On Android学生姓名学院名称信电工程学院学号班级专业名称计算机科学与技术指导教师2015年05月23日徐州工程学院学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。

除文中已经注明引用或参考的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标注。

本人完全意识到本声明的法律结果由本人承担。

论文作者签名:日期:年月日徐州工程学院学位论文版权协议书本人完全了解徐州工程学院关于收集、保存、使用学位论文的规定,即:本校学生在学习期间所完成的学位论文的知识产权归徐州工程学院所拥有。

徐州工程学院有权保留并向国家有关部门或机构送交学位论文的纸本复印件和电子文档拷贝,允许论文被查阅和借阅。

徐州工程学院可以公布学位论文的全部或部分内容,可以将本学位论文的全部或部分内容提交至各类数据库进行发布和检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

论文作者签名:导师签名:日期:年月日日期:年月日摘要对于大多数人来说,随身带个小本子来记录一些即将要处理的事情是很有必要的,从而出现了备忘录。

有了随身备忘录,就可以将自己的生活与工作的事情安排的井井有条,能够在有限的时间内准时高效的完成自己的工作。

当今,智能手机已经走进千家万户,人们对于智能手机的依赖性愈来愈强,渐渐地成为人们获得信息的最主要设备,也是人们获取信息最方便、最快捷的途径之一。

因此,对于大多数智能手机用户来说,把记事本功能集成在手机上使用是极好的选择。

Android开发(智能备忘录系统)

Android开发(智能备忘录系统)

智能终端开发课程设计说明书课题名称:姓名:学号:专业:班级:指导教师:2014年12月25日目录第一章概述----------------------------------------------------------------------------第二章需求分析------------------------------------------------------------------------------系统主要内容--------------------------------------------------------------------------基本要求--------------------------------------------------------------设计需要结合使用的技术---------------------------------------------模块的功能性概述---------------------------------------------第三章概要设计--------------------------------------------------------------------- 系统的功能结构------------------------------------------------------------------系统的模块结构------------------------------------------------------------------------各模块的活动图------------------------------------------------------------------------第四章详细设计----------------------------------------------------------------------布局文件------------------------------------------------------备忘录数据存储的实现--------------------------------------------------------------------备忘录的列表展示--------------------------------------------------------------------------备忘录的维护-------------------------------------------------------------备忘录的定时提醒-------------------------------------------------------------第五章调试分析------------------------------------------------------------------------------第六章设计总结--------------------------------------------------------------------------------第七章参考文献----------------------------------------------------------------------------第八章附录----------------------------------------------------------------------------第一章概述对于很多人来说,随时带个小本子记录一些事情是很有必要的事情,从而出现了备忘录。

基于Android平台备忘录软件设计的开发与实现

基于Android平台备忘录软件设计的开发与实现

目录摘要 (3)前言 (4)1 绪论 (5)1.1可以从本文中获得的信息 (5)1.2本文主要工作 (6)1.3论文组织结构 (6)2Android的架构分析 (6)2.1Android的功能特征 (6)2.2 Android架构分析 (8)2.2.1应用程序框架 (8)2.2.2类库 (9)2.2.3 Android运行时组件 (10)2.3 Android应用的构成和工作机制 (10)3Android应用程序结构剖析 (11)3.1 Android的API (11)3.2 Android应用程序结构解析 (12)3.2.1活动 (12)3.2.2意图接收器 (13)3.2.3服务 (13)3.2.4内容提供者 (14)3.3 Intent的详细解 (14)3.3.1 Intent的抽象描述 (14)3.3.2 Android如何解析Intent (15)3.4 Android活动的生命周期 (16)3.4.1活动的生命状态 (16)3.4.2活动的运作流程 (18)4备忘录软件设计 (19)4.1 系统设计需求 (19)4.1.1需求分析 (19)4.1.2下载开发资源 (19)4.1.3更新Ec1ipse并下载ADT (20)4.1.4使用Ec1ipse开发Android应用 (21)4.2备忘录软件程序中各类组件 (22)4.2.1 Package Explorer中的组件 (22)4.2.2应用程序的资源 (23)4.2.3布局文件main.xml (23)4.2.4 AndroidManifest.xml (23)4.3备忘录软件设计实现 (24)4.3.1数据存储实现 (24)4.3.2备忘录列表展示 (25)4.3.3备忘录维护 (26)4.3.4定时提醒 (28)5结语 (29)5.1总结 (29)5.2展望 (30)致谢 (31)参考文献 (32)基于Android平台的备忘录软件设计学生:石正兴指导教师:陈慈发(三峡大学计算机与信息学院)摘要:随着智能手机逐渐走进普通人的生活,它正在成为人们获取信息的主要设备,这在学生一族中体现最为明显,而且智能手机是他们获取信息最方便、最快捷的途径。

基于Android的多功能备忘录的设计与实现

基于Android的多功能备忘录的设计与实现
本课题研究的多功能备忘录的设计开发是为了最大程度上方便人们记录生活中的重要事情。该备忘录除了具备记事本最基本的增删改查功能外,还拥有个性化的闹铃实时提醒功能,能对每一条记录分别设置不同的闹钟提醒。录音记事功能、拍照记事功能以及录像记事功能,使用户能随时随刻记录下重要信息。
关键词:安卓,备忘录,多媒体,闹钟
本文内容包括了对Android平台的系统架构和组件模型的分析,对Android中的重要API和应用构成的解析,以及对Intent和生命周期的机制的介绍。在此基础上,基于Android平台设计和开发多功能备忘录软件。本课题基于android的系统通过API配合进行应用程序层次的开发,在SDK的开发环境中,使用eclipse等作为IDE开发环境,采用面向对象方法,选择java语言作为编程语言,数据库选用SQLite数据库。本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户的基本需求。
本科生毕业设计(论文)
题目:基于Android的多功能备忘录
的设计与实现
姓名:XX
学号:XX
学院:数计与计算机科学(软件)学院
专业:软件工程
年级:2010级
指导教师:(签名)
2014年5月23日
福州大学本科生毕业设计(论文)诚信承诺书
毕业设计(论文)题目
中文:基于android的多功能备忘录的设计与实现
外文:The design and implementation of multi-functional memo based on android
学生姓名
XX
年级
2010级
学号
XX
所在学院
学生承诺
我承诺在毕业设计(论文)活动中遵守学校有关规定,恪守学术规范,在本人的毕业设计(论文)中未剽窃、抄袭他人的学术观点、思想和成果,未篡改实验数据。如有违规行为发生,我愿承担一切责任,接受学校的处理。

备忘录安卓课程设计

备忘录安卓课程设计

备忘录安卓课程设计一、课程目标知识目标:1. 让学生理解备忘录安卓应用的基本概念和原理,掌握其功能架构和界面设计。

2. 使学生掌握安卓开发环境搭建,了解编程语言(如Java、Kotlin)的基本语法和常用类库。

3. 帮助学生掌握数据存储(如SQLite数据库、SharedPreferences)和事件处理等关键技术。

技能目标:1. 培养学生具备独立分析和设计备忘录安卓应用的能力,能够根据需求完成界面布局和功能实现。

2. 提高学生解决问题的能力,使其能够运用所学知识解决实际开发过程中遇到的问题。

3. 培养学生具备团队协作和沟通能力,能够在项目开发过程中进行有效分工与合作。

情感态度价值观目标:1. 激发学生对安卓应用开发的兴趣,培养其主动学习和探究的精神。

2. 培养学生具备良好的编程习惯,强调代码规范和优化,提高代码质量。

3. 引导学生关注移动应用对社会生活的影响,培养其创新意识和责任感。

课程性质:本课程为实践性较强的课程,结合实际项目开发,培养学生动手能力和解决问题的能力。

学生特点:学生具备一定的计算机基础和编程能力,对安卓应用开发有一定了解,但实际开发经验不足。

教学要求:教师需注重理论与实践相结合,引导学生主动参与课堂讨论和实践操作,提高学生的实际开发能力。

同时,关注学生的个体差异,提供个性化的指导与帮助。

通过课程学习,使学生能够达到上述设定的课程目标,为后续深入学习安卓开发打下坚实基础。

二、教学内容1. 备忘录应用概述:介绍备忘录应用的发展背景、功能特点及市场现状,结合课本第一章内容,帮助学生建立整体认识。

2. 安卓开发环境搭建:讲解并演示如何在Windows、Mac和Linux环境下搭建安卓开发环境,涵盖Android Studio安装、模拟器配置等内容,参考课本第二章。

3. 界面设计与布局:讲解安卓界面设计原则,介绍常用的布局控件(如LinearLayout、RelativeLayout等),并结合课本第三章,让学生动手实践界面布局设计。

Android开发(智能备忘录系统).

Android开发(智能备忘录系统).

****大学智能终端开发课程设计说明书课题名称:姓名:学号:专业:班级:指导教师:2014年12月25日目录第一章概述----------------------------------------------------------------------------第二章需求分析------------------------------------------------------------------------------ 2.1 系统主要内容-------------------------------------------------------------------------- 2.2 基本要求--------------------------------------------------------------2.3设计需要结合使用的技术---------------------------------------------2.4模块的功能性概述---------------------------------------------第三章概要设计---------------------------------------------------------------------3.1 系统的功能结构------------------------------------------------------------------3.2 系统的模块结构------------------------------------------------------------------------ 3.3 各模块的活动图------------------------------------------------------------------------第四章详细设计----------------------------------------------------------------------4.1 布局文件------------------------------------------------------ 4.2备忘录数据存储的实现-------------------------------------------------------------------- 4.3备忘录的列表展示-------------------------------------------------------------------------- 4.4备忘录的维护-------------------------------------------------------------4.5备忘录的定时提醒-------------------------------------------------------------第五章调试分析------------------------------------------------------------------------------ 第六章设计总结-------------------------------------------------------------------------------- 第七章参考文献----------------------------------------------------------------------------第八章附录----------------------------------------------------------------------------第一章概述对于很多人来说,随时带个小本子记录一些事情是很有必要的事情,从而出现了备忘录。

Android开发智能备忘录系统

Android开发智能备忘录系统

智能终端开发课程设计说明书课题名称:姓名:学号:专业:班级:指导教师:2021年 12月 25日目录第一章概述----------------------------------------------------------------------------第二章需求解析------------------------------------------------------------------------------系统主要内容--------------------------------------------------------------------------根本要求--------------------------------------------------------------设计需要结合使用的技术---------------------------------------------模块的功能性归纳 ---------------------------------------------第三章大纲设计---------------------------------------------------------------------系统的功能结构------------------------------------------------------------------系统的模块结构------------------------------------------------------------------------各模块的活动图------------------------------------------------------------------------第四章详细设计----------------------------------------------------------------------布局文件 ------------------------------------------------------备忘录数据储藏的实现--------------------------------------------------------------------备忘录的列表展示--------------------------------------------------------------------------备忘录的维护-------------------------------------------------------------备忘录的定时提醒-------------------------------------------------------------第五章调试分析------------------------------------------------------------------------------第六章设计总结--------------------------------------------------------------------------------第七章参考文献----------------------------------------------------------------------------第八章附录----------------------------------------------------------------------------第一章归纳对于好多人来说,随时带个小本子记录一些事情是很有必要的事情,从而出现了备忘录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告(本科)课程:嵌入式系统学号:姓名:班级:教师:时间:2013年5月3日至6月20日计算机科学与技术系6.程序运行结果与分析(可以加页):1.列表展示主要功能把备忘录界面展示给用户,用户可以添加和删除备忘录信息,很大程度上方便了用户的操作。

运行结果2.备忘录维护用户可以很好的将需要或者不需要的备忘录信息进行增添或者删除运行结果:3.备忘录定时提醒这个功能可以很有效的提醒用户关闭备忘录,以免造成不必要的资源浪费。

运行结果:附录:源程序代码1. AlarmActivity.javapackage com.amaker.ch17.app;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.content.Context;import .Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/*** @author 冯春礼* 提醒用户*/public class AlarmActivity extends Activity {public static final int ID = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.alarm);// 获得Button、TextView实例Button btn = (Button) findViewById(R.id.cancelButton01);TextView tv = (TextView)findViewById(R.id.msgTextView01);// 获得NotificationManager实例String service = Context.NOTIFICATION_SERVICE;final NotificationManager nm = (NotificationManager)getSystemService(service);// 实例化NotificationNotification n = new Notification();// 设置显示提示信息,该信息也会在状态栏显示String msg = getIntent().getStringExtra("msg");// 显示时间n.tickerText = msg;tv.setText(msg);// 设置声音提示n.sound = Uri.parse("file:///sdcard/fallbackring.ogg");// 发出通知nm.notify(ID, n);// 取消通知btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {nm.cancel(ID);finish();}});}}2. TaskDetailActivity.javapackage com.amaker.ch17.app;import java.util.Calendar;import android.app.AlarmManager;import android.app.AlertDialog;import android.app.DatePickerDialog;import android.app.Dialog;import android.app.ListActivity;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.ContentUris;import android.content.ContentValues;import android.content.DialogInterface;import android.content.Intent;import .Uri;import android.os.Bundle;import youtInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.CheckedTextView;import android.widget.DatePicker;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.TimePicker;import android.widget.AdapterView.OnItemClickListener;import com.amaker.ch17.app.TaskList.Tasks;/**** @author 冯春礼* 备忘录详细信息类,该信息*/public class TaskDetailActivity extends ListActivity { // 备忘录信息列表private ListView listView = null;// 提醒日期private int mYear;private int mMonth;private int mDay;// 提醒时间private int mHour;private int mMinute;// 日期显示TextViewprivate TextView dateName, dateDesc;// 时间显示TextViewprivate TextView timeName, timeDesc;// 提醒内容TextViewprivate TextView contentName, contentDesc;// 是否开启提醒private int on_off = 0;// 是否声音警告private int alarm = 0;// 显示日期、时间对话框常量static final int DATE_DIALOG_ID = 0;static final int TIME_DIALOG_ID = 1;// 保存内容、日期、时间字符串private String content, date1, time1;// 备忘录IDprivate int id1;// 多选框private CheckedTextView ctv1, ctv2;// 访问布局实例private LayoutInflater li;// 初始化方法private void init(Intent intent) {Bundle b = intent.getBundleExtra("b");if (b != null) {id1 = b.getInt("id");content = b.getString("content");date1 = b.getString("date1");time1 = b.getString("time1");on_off = b.getInt("on_off");alarm = b.getInt("alarm");if (date1 != null && date1.length() > 0) {String[] strs = date1.split("/");mYear = Integer.parseInt(strs[0]);mMonth = Integer.parseInt(strs[1]);mDay = Integer.parseInt(strs[2]);}if (time1 != null && time1.length() > 0) {String[] strs = time1.split(":");mHour = Integer.parseInt(strs[0]);mMinute = Integer.parseInt(strs[1]);}}}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 获得ListViewlistView = getListView();// 实例化LayoutInflaterli = getLayoutInflater();// 设置ListView AdapterlistView.setAdapter(new ViewAdapter());// 可多选listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);// 获得Calendar实例final Calendar c = Calendar.getInstance();// 获得当前日期、时间mYear = c.get(Calendar.YEAR);mMonth = c.get(Calendar.MONTH);mDay = c.get(Calendar.DAY_OF_MONTH);mHour = c.get(Calendar.HOUR_OF_DAY);mMinute = c.get(Calendar.MINUTE);// 响应列表单击事件listView.setOnItemClickListener(new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView<?> av, View v, int position, long id) {switch (position) {// 设置是否开启提醒case 0:ctv1 = (CheckedTextView) v;if (ctv1.isChecked()) {on_off = 0;} else {on_off = 1;}break;// 设置提醒日期case 1:showDialog(DATE_DIALOG_ID);break;// 设置提醒时间case 2:showDialog(TIME_DIALOG_ID);break;// 设置提醒内容case 3:showDialog1("请输入内容:");break;// 设置是否开启语音提醒case 4:ctv2 = (CheckedTextView) v;if (ctv2.isChecked()) {alarm = 0;setAlarm(false);} else {alarm = 1;setAlarm(true);}break;default:break;}}}@Overrideprotected void onResume() {super.onResume();// 初始化列表init(getIntent());}// ListView Adatper,该类实现了列表的每一项通过自定义视图实现class ViewAdapter extends BaseAdapter {// 列表显示内容String[] strs = { "是否开启", "日期", "时间", "内容", "开启闹钟" };// 获得列表列数@Overridepublic int getCount() {return strs.length;}// 返回列表项@Overridepublic Object getItem(int position) {return position;}// 返回列表ID@Overridepublic long getItemId(int position) {return position;}// 获得当前列表项视图@Overridepublic View getView(int position, View convertView, ViewGroup parent) { View v = li.inflate(yout.item_row, null);switch (position) {// 是否开启该条备忘录case 0:ctv1 = (CheckedTextView) li.inflate(yout.simple_list_item_multiple_choice,null);ctv1.setText(strs[position]);if (on_off == 0) {ctv1.setChecked(false);} else {ctv1.setChecked(true);}return ctv1;// 提醒日期case 1:dateName = (TextView) v.findViewById();dateDesc = (TextView) v.findViewById(R.id.desc);dateName.setText(strs[position]);dateDesc.setText(mYear + "/" + mMonth + "/" + mDay);return v;// 提醒时间case 2:timeName = (TextView) v.findViewById();timeDesc = (TextView) v.findViewById(R.id.desc);timeName.setText(strs[position]);timeDesc.setText(mHour + ":" + mMinute);return v;// 提醒内容case 3:contentName = (TextView) v.findViewById();contentDesc = (TextView) v.findViewById(R.id.desc);contentName.setText(strs[position]);contentDesc.setText(content);return v;// 是否声音提示case 4:ctv2 = (CheckedTextView) li.inflate(yout.simple_list_item_multiple_choice,null);ctv2.setText(strs[position]);if (alarm == 0) {ctv2.setChecked(false);} else {ctv2.setChecked(true);}return ctv2;default:break;}return null;}}// 显示对话框@Overrideprotected Dialog onCreateDialog(int id) {switch (id) {// 显示日期对话框case DATE_DIALOG_ID:return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,mDay);// 显示时间对话框case TIME_DIALOG_ID:return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute,false);}return null;}// 设置通知提示private void setAlarm(boolean flag) {final String BC_ACTION = "com.amaker.ch17.TaskReceiver";// 获得AlarmManager实例final AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);// 实例化IntentIntent intent = new Intent();// 设置Intent action属性intent.setAction(BC_ACTION);intent.putExtra("msg", content);// 实例化PendingIntentfinal PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);// 获得系统时间final long time1 = System.currentTimeMillis();Calendar c = Calendar.getInstance();c.set(mYear, mMonth, mDay, mHour, mMinute);long time2 = c.getTimeInMillis();if (flag&&(time2-time1)>0&&on_off==1){am.set(AlarmManager.RTC_WAKEUP, time2, pi);}else{am.cancel(pi);}}/** 设置提示日期对话框private void showDialog1(String msg) {View v = li.inflate(yout.item_content, null);final EditText contentET = (EditText) v.findViewById(R.id.content);contentET.setText(content);new AlertDialog.Builder(this).setView(v).setMessage(msg).setCancelable( false).setPositiveButton("确定",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int id) {content = contentET.getText().toString();contentDesc.setText(content);}}).show();}// 时间选择对话框private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mHour = hourOfDay;mMinute = minute;timeDesc.setText(mHour + ":" + mMinute);}};// 日期选择对话框private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {mYear = year;mMonth = monthOfYear;mDay = dayOfMonth;dateDesc.setText(mYear + "/" + mMonth + "/" + mDay);}};// 保存或修改备忘录信息protected void onPause() {super.onPause();saveOrUpdate();};// 保存或修改备忘录信息private void saveOrUpdate() {ContentV alues values = new ContentV alues();values.clear();values.put(Tasks.CONTENT, contentDesc.getText().toString());values.put(Tasks.DA TE1, dateDesc.getText().toString());values.put(Tasks.TIME1, timeDesc.getText().toString());values.put(Tasks.ON_OFF, ctv1.isChecked() ? 1 : 0);values.put(Tasks.ALARM, ctv2.isChecked() ? 1 : 0);// 修改if (id1 != 0) {Uri uri = ContentUris.withAppendedId(Tasks.CONTENT_URI, id1);getContentResolver().update(uri, values, null, null);// 保存} else {Uri uri = TaskList.Tasks.CONTENT_URI;getContentResolver().insert(uri, values);}}}3. TaskList.javapackage com.amaker.ch17.app;import .Uri;import android.provider.BaseColumns;/*** @author 冯春礼* 备忘录常量类*/public final class TaskList {// 授权常量public static final String AUTHORITY = "com.amaker.provider.TaskList";private TaskList() {}// 内部类public static final class Tasks implements BaseColumns {private Tasks() {}// 访问Uripublic static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/taskLists");public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.amaker.tasklist";public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.amaker.tasklist";// 默认排序常量public static final String DEFAULT_SORT_ORDER = "created DESC";// 表字段常量public static final String CONTENT = "content";public static final String CREATED= "created";public static final String DA TE1 = "date1";public static final String TIME1 = "time1";public static final String ON_OFF = "on_off";public static final String ALARM = "alarm";}}4.TaskListActivity.javapackage com.amaker.ch17.app;import android.app.ListActivity;import android.content.ContentUris;import android.content.Intent;import android.database.Cursor;import .Uri;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.AdapterView.OnItemClickListener;import com.amaker.ch17.app.TaskList.Tasks;/**** @author 冯春礼* 备忘录列表类,提供数据展示*/public class TaskListActivity extends ListActivity {// 菜单项常量private static final int NEW = 1;private static final int DEL = 2;// 查询列数组private static final String[] PROJECTION = new String[] {Tasks._ID, // 0Tasks.CONTENT, // 1Tasks.CREATED, // 2Tasks.ALARM, // 3Tasks.DA TE1, // 4Tasks.TIME1, // 5Tasks.ON_OFF // 6};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 获得Intentfinal Intent intent = getIntent();// 设置Uriif (intent.getData() == null) {intent.setData(Tasks.CONTENT_URI);}// 获得ListViewListView listView = getListView();// 查询所有备忘录信息Cursor cursor = managedQuery(getIntent().getData(), PROJECTION, null, null, Tasks.DEFAULT_SORT_ORDER);// 创建AdapterSimpleCursorAdapter adapter = new SimpleCursorAdapter(this,yout.simple_list_item_2, cursor,new String[] {Tasks._ID, Tasks.CONTENT },new int[] { android.R.id.text1,android.R.id.text2 });// 将备忘录信息显示到ListViewsetListAdapter(adapter);// 为ListView添加单击事件监听器listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> av, View v, int position,long id) {// 通过ID查询备忘录信息Uri uri = ContentUris.withAppendedId(Tasks.CONTENT_URI, id);Cursor cursor = managedQuery(uri, PROJECTION, null,null, Tasks.DEFAULT_SORT_ORDER);if(cursor.moveToNext()){int id1 = cursor.getInt(0);String content = cursor.getString(1);String created = cursor.getString(2);int alarm = cursor.getInt(3);String date1 = cursor.getString(4);String time1 = cursor.getString(5);int on_off = cursor.getInt(6);Bundle b = new Bundle();b.putInt("id", id1);b.putString("content", content);b.putString("created", created);b.putInt("alarm", alarm);b.putString("date1", date1);b.putString("time1", time1);b.putInt("on_off", on_off);// 将备忘录信息添加到Intentintent.putExtra("b", b);// 启动备忘录详细信息Activityintent.setClass(TaskListActivity.this, TaskDetailActivity.class);startActivity(intent);}}});}// 创建选项菜单public boolean onCreateOptionsMenu(Menu menu) {menu.add(0, NEW, 0, "新建");menu.add(0, DEL, 0, "删除");return true;}// 现象菜单项单击方法public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {case NEW:// 启动备忘录详细信息ActivityIntent intent = new Intent();intent.setClass(this, TaskDetailActivity.class);startActivity(intent);return true;case DEL:return true;}return false;}}5. TaskListProvider.javapackage com.amaker.ch17.app;import java.util.HashMap;import android.content.ContentProvider;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.content.UriMatcher;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteQueryBuilder;import .Uri;import android.text.TextUtils;import com.amaker.ch17.app.TaskList.Tasks;/*** @author 冯春礼* 提供数据维护方法*/public class TaskListProvider extends ContentProvider { // 数据库名称常量private static final String DATABASE_NAME = "task_list.db";// 数据库版本常量private static final int DATABASE_VERSION = 1;// 表名称常量private static final String TASK_LIST_TABLE_NAME = "taskLists";// 查询列集合private static HashMap<String, String> sTaskListProjectionMap;// 查询、更新条件private static final int TASKS = 1;private static final int TASK_ID = 2;// Uri工具类private static final UriMatcher sUriMatcher;// 数据库工具类实例private DatabaseHelper mOpenHelper;// 内部工具类,创建或打开数据库,创建或删除表private static class DatabaseHelper extends SQLiteOpenHelper {DatabaseHelper(Context context) {super(context, DA TABASE_NAME, null, DATABASE_VERSION);}// 创建表@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE " + TASK_LIST_TABLE_NAME + " ("+ Tasks._ID + " INTEGER PRIMARY KEY,"+ Tasks.DATE1 + " TEXT,"+ Tasks.TIME1 + " TEXT,"+ Tasks.CONTENT + " TEXT,"+ Tasks.ON_OFF + " INTEGER,"+ Tasks.ALARM + " INTEGER,"+ Tasks.CREATED + " TEXT"+ ");");}// 删除表@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS taskLists");onCreate(db);}}// 创建或打开数据库@Overridepublic boolean onCreate() {mOpenHelper = new DatabaseHelper(getContext());return true;}// 查询@Overridepublic Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {SQLiteQueryBuilder qb = new SQLiteQueryBuilder();switch (sUriMatcher.match(uri)) {// 查询所有case TASKS:qb.setTables(TASK_LIST_TABLE_NAME);qb.setProjectionMap(sTaskListProjectionMap);break;// 根据ID查询case TASK_ID:qb.setTables(TASK_LIST_TABLE_NAME);qb.setProjectionMap(sTaskListProjectionMap);qb.appendWhere(Tasks._ID + "=" + uri.getPathSegments().get(1));break;default:throw new IllegalArgumentException("Uri错误!" + uri);}// 使用默认排序String orderBy;if (TextUtils.isEmpty(sortOrder)) {orderBy = TaskList.Tasks.DEFAULT_SORT_ORDER;} else {orderBy = sortOrder;}// 获得数据库实例SQLiteDatabase db = mOpenHelper.getReadableDatabase();// 返回游标集合Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, orderBy);c.setNotificationUri(getContext().getContentResolver(), uri);return c;}// 获得类型@Overridepublic String getType(Uri uri) {switch (sUriMatcher.match(uri)) {case TASKS:return Tasks.CONTENT_TYPE;case TASK_ID:return Tasks.CONTENT_ITEM_TYPE;default:throw new IllegalArgumentException("错误的URI:" + uri);}}// 保存数据@Overridepublic Uri insert(Uri uri, ContentValues initialValues) {if (sUriMatcher.match(uri) != TASKS) {throw new IllegalArgumentException("错误的URI:" + uri);}ContentV alues values;if (initialValues != null) {values = new ContentV alues(initialValues);} else {values = new ContentV alues();}// 获得数据库实例SQLiteDatabase db = mOpenHelper.getWritableDatabase();// 保存数据返回行IDlong rowId = db.insert(TASK_LIST_TABLE_NAME, Tasks.CONTENT, values);if (rowId > 0) {Uri taskUri = ContentUris.withAppendedId(TaskList.Tasks.CONTENT_URI, rowId);getContext().getContentResolver().notifyChange(taskUri, null);return taskUri;}throw new SQLException("插入数据失败" + uri);}// 删除数据@Overridepublic int delete(Uri uri, String where, String[] whereArgs) {// 获得数据库实例SQLiteDatabase db = mOpenHelper.getWritableDatabase();int count;switch (sUriMatcher.match(uri)) {// 根据指定条件删除case TASKS:count = db.delete(TASK_LIST_TABLE_NAME, where, whereArgs);break;// 根据指定条件和ID删除case TASK_ID:String noteId = uri.getPathSegments().get(1);count = db.delete(TASK_LIST_TABLE_NAME, Tasks._ID + "=" + noteId+ (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : ""), whereArgs);break;default:throw new IllegalArgumentException("错误的URI " + uri);}getContext().getContentResolver().notifyChange(uri, null);return count;}// 更新数据@Overridepublic int update(Uri uri, ContentV alues values, String where, String[] whereArgs) { // 获得数据库实例SQLiteDatabase db = mOpenHelper.getWritableDatabase();int count;switch (sUriMatcher.match(uri)) {// 根据指定条件更新case TASKS:count = db.update(TASK_LIST_TABLE_NAME, values, where, whereArgs);break;// 根据指定条件和ID更新case TASK_ID:String noteId = uri.getPathSegments().get(1);count = db.update(TASK_LIST_TABLE_NAME, values, Tasks._ID + "=" + noteId + (!TextUtils.isEmpty(where) ? " AND (" + where + ')' : ""), whereArgs);break;default:throw new IllegalArgumentException("错误的URI " + uri);}getContext().getContentResolver().notifyChange(uri, null);return count;}static {// Uri匹配工具类sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);sUriMatcher.addURI(TaskList.AUTHORITY, "taskLists", TASKS);sUriMatcher.addURI(TaskList.AUTHORITY, "taskLists/#", TASK_ID);// 实例化查询列集合sTaskListProjectionMap = new HashMap<String, String>();// 添加查询列sTaskListProjectionMap.put(Tasks._ID, Tasks._ID);sTaskListProjectionMap.put(Tasks.CONTENT, Tasks.CONTENT);sTaskListProjectionMap.put(Tasks.CREATED, Tasks.CREATED);sTaskListProjectionMap.put(Tasks.ALARM, Tasks.ALARM);sTaskListProjectionMap.put(Tasks.DA TE1, Tasks.DATE1);sTaskListProjectionMap.put(Tasks.TIME1, Tasks.TIME1);sTaskListProjectionMap.put(Tasks.ON_OFF, Tasks.ON_OFF);}}6.TaskReceiver.javapackage com.amaker.ch17.app;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;/*** @author 冯春礼* 定时提醒广播*/public class TaskReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setClass(context, AlarmActivity.class);context.startActivity(intent);}}。

相关文档
最新文档