Android开发智能备忘录系统.docx
- 文档编号:28530011
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:48
- 大小:439.95KB
Android开发智能备忘录系统.docx
《Android开发智能备忘录系统.docx》由会员分享,可在线阅读,更多相关《Android开发智能备忘录系统.docx(48页珍藏版)》请在冰豆网上搜索。
Android开发智能备忘录系统
Android开发(智能备忘录系统)
****大学
智能终端开发课程设计说明书
课题名称:
姓名:
学号:
专业:
班级:
指导教师:
2014年12月25日
第一章概述
对于很多人来说,随时带个小本子记录一些事情是很有必要的事情,从而出现了备忘录。
有了备忘录,可以将自己的工作和生活安排的更有条理,在有限的时间内完成最重要、最紧急的事情。
随着智能手机逐渐走进普通人的生活,它正在成为人们获取信息的主要设备,而且智能手机是他们获取信息最方便、最快捷的途径。
因此,对于所有拥有的手机的用户来说,可以随时随地便捷的通过手机备忘录来实现重要事情的记录与提醒,省去了随身携带纸笔的麻烦。
现如今搭载Android系统平台的手机已占有超过70%的市场份额,所以,在Android系统下的备忘录软件中,用户可以非常方便的查询事件备忘,为工作、出游、生活杂碎事提供整理记录功能。
开发一款能在Android系统上使用,且性能卓越的备忘录是非常有必要且前途光明。
第二章需求分析
2.1、系统主要内容:
(1)、基于Android系统平台研发出备忘录;
(2)、通过安装备忘录,防止手机用户遗忘某个时间的重要工作,进行记录并在特定时间通过声音,文字或振动提醒用户;
(3)、主要模块有:
备忘录数据存储、列表浏览、数据维护和定时提醒等模块。
2.2、基本要求:
(1)、基于Android系统平台研发出备忘录,以防止手机用户遗忘某个时间的重要工作,进行记录并在特定时间通过声音,文字或振动提醒用户。
(2)、主要设计出备忘录数据存储、列表浏览、数据维护和定时提醒等模块。
已学习掌握Android系统平台和Java编程技术,并要求软件界面简洁专业,功能完善,真正为用户提供重要工作备忘功能。
2.3、设计需要结合使用的技术:
(1)、Eclipse平台:
Eclipse是一个运行插件的平台。
可以下载安装EclipseClassic的最新版本。
(2)、AndroidDeveloperTools:
按照安装说明安装AndroidDeveloperTools(Eclipse插件)。
2.4、模块的功能性概述:
(1)、备忘录数据存储实现:
备忘录的最重要功能就是记录和保存用户容易遗忘的日期和事件,为了持久地将用户的备忘录信息保存下来,需要将这些信息存储在数据库中。
备忘录需要保存的信息有:
编号(ID)、提醒日期(Date1)、提醒时间(Time1)、提醒内容(Content)、是否启用(ON_OFF)、是否声音提醒(ALARM)、创建时间(CREATED)等.
(2)、备忘录列表展示:
用户可能需要创建很多条备忘录信息,并且需要维护这些备忘录信息,例如删除、修改等功能。
备忘录的列表展示能使用户界面更加简洁清晰,并带给用户使用方便
(3)、备忘录维护:
备忘录维护是该应用程序的核心部分,提供了添加、修改、删除备忘录信息的功能,提供备忘录动态更新的功能。
(4)、备忘录定时提醒:
备忘录的第一需求是能够有效提醒用户置办已记录的事件,从而达到真正避免遗忘的效果,为了更好的提醒用户在特定时间做某项工作,要设置语音和震动等功能。
第三章概要设计
3.1、系统的功能结构:
开始
设置是否开启
设置日期时间
备忘录内容
结束
开启闹钟
3.2、系统的模块结构:
3.3、各模块的活动图:
3.3.1、添加备忘录
添加日期、时间、闹铃:
添加内容:
3.3.2、查看备忘录
3.3.3修改备忘录
修改日期、时间、闹铃:
修改内容:
3.3.4删除备忘录
第四章详细设计
4.1、布局文件main.xml
fill_parent:
使视图元素占满可用的空间。
也可以认为这就是“拉伸”。
4.2、备忘录数据存储的实现
为了使备忘录数据表具有通用的数据共享访问机制,需要通过ContentProvider来实现。
这里定义一个TaskListProvider类,该类继承ContentProvider,实现了onCreat、query、getType、insert、delete、update等方法,来支持数据的增、删、查、改等操作。
在该类内部还定义了一个DatabaseHelper内部类继承SQLiteHelper,该类提供了常见或打开数据库、创建或删除表的功能。
4.3、备忘录的列表展示:
这里通过一个ListActivity来展示备忘录列表,通过选项菜单提供维护数据接口。
4.4、备忘录的维护:
当用户单击主界面的一个列表时会在上述列表展示中提到的setOnItemClickListener方法中响应,此方法体中定义一个Intent对象,
使用setClass方法实现界面跳转到此TaskDetailActivity所对应的界面
4.5、备忘录的定时提醒:
此功能通过定义Activity发出广播,BroadcastReceiver接收广播,并通过Notification提醒用户。
4.5.1定义提醒广播接收器
当用户选择了备忘录信息中的“开启闹钟”选项时,便通过广播的方式启动一个定时闹钟,之后定义一个广播接收器接收广播。
4.5.2广播接收器实现如下
4.5.3显示提醒Activity:
第五章调试分析
程序运行:
列表展示:
备忘录维护:
备忘录定时提醒:
总体来说,调试过程中基本没有出现系统性错误,软件健壮性良好,测试数据随机采用,基本实现软件要实现的需求。
第六章设计总结
经过一个多月的学习和研究,本次课程设计终于圆满完成,虽然耗费了许多精力和时间,设计过程中也出现了许多问题,但通过网上资料的查询、图书馆图书的借阅以及同学们的帮助,最终也逐一得到了解决。
通过本次课程设计,我了解到实践经验对于学生的重要性。
备忘录软件的开发使我对书本上的知识点和理论有了更深一层的了解,使我学会了如何利用所学的知识,把理论结合于实践中,进一步掌握了开发基于Android平台的软件的流程。
本次课程设计主要研究了Android平台的架构以及在Android平台上开发备忘录软件,此应用除了具备简单备忘功能外,还具备简单数据处理功能以及闹钟提醒相对高级点的功能。
本次课程设计在Android平台以及在该平台上开发手机备忘录软件上做了大量的工作,但仍有许多地方值得进一步探讨研究,如:
界面设计如何更加美观简洁,软件的移植性、兼容性如何等。
Android开发是一个开放的平台,需要不断进行内容添加和补充,这也就要求我们学生不断学习新知识,从而使软件功能不断扩展。
同时,本次课程设计让我对《智能终端开发》这门课程有了更深层次的了解,也让我发现了自我存在的不足,今后,在Android开发的学习之路上,我必须更加重视实践与理论的结合,在系统的扩展性方面花费更多的精力去学习。
第七章参考文献
【1】《零点起飞学Android开发》徐诚著,清华大学出版社
[2]《Android基础教程》(美)伯内特著,张波等译/2009年11月/人民邮电出版社
[3]《Android应用程序开发》,王向辉,张国印,沈洁编著/2010年3月/清华大学出版社
[4]《Java宝典》,孙浏毅等编著/2009年8月/电子工业大学出版社
[5]《XML程序设计使用教程》,张亚飞,汤桂风编著/2010年8月/北京师范大学出版社
[6]《Java编程思想》(美)BruceEckel著,陈昊鹏译/2011年4月/机械工业出版社
[7]《Android程序设计基础》郝玉龙/2011年1月/清华大学出版社
第八章附录
(1)AlarmActivity.java文件
packagecom.amaker.ch17.app;
importandroid.app.*;
importandroid.content.Context;
import.Uri;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
publicclassAlarmActivityextendsActivity{
publicstaticfinalintID=1;
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm);
//获得Button、TextView实例
Buttonbtn=(Button)findViewById(R.id.cancelButton01);
TextViewtv=(TextView)findViewById(R.id.msgTextView01);//获得NotificationManager实例
Stringservice=Context.NOTIFICATION_SERVICE;
finalNotificationManagernm=
(NotificationManager)getSystemService(service);
//实例化Notification
Notificationn=newNotification();
//设置显示提示信息,该信息也会在状态栏显示
Stringmsg=getIntent().getStringExtra("msg");
n.tickerText=msg;//显示时间
tv.setText(msg);
//设置声音提示
n.sound=Uri.parse("file:
///sdcard/fallbackring.ogg");
nm.notify(ID,n);//发出通知
//取消通知
btn.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
nm.cancel(ID);
finish();
}
});
}
}
(2)TaskDetailActivity.java文件
packagecom.amaker.ch17.app;
importjava.util.Calendar;
importandroid.app.*;
importandroid.content.*;
import.Uri;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.*;
importcom.amaker.ch17.app.TaskList.Tasks;
publicclassTaskDetailActivityextendsListActivity{
//备忘录信息列表
privateListViewlistView=null;
privateintmYear;//提醒日期
privateintmMonth;
privateintmDay;
privateintmHour;//提醒时间
privateintmMinute;
//日期显示TextView
privateTextViewdateName,dateDesc;
//时间显示TextView
privateTextViewtimeName,timeDesc;
//提醒内容TextView
privateTextViewcontentName,contentDesc;
privateinton_off=0;//是否开启提醒
privateintalarm=0;//是否声音警告
//显示日期、时间对话框常量
staticfinalintDATE_DIALOG_ID=0;
staticfinalintTIME_DIALOG_ID=1;
//保存内容、日期、时间字符串
privateStringcontent,date1,time1;
privateintid1;//备忘录ID
privateCheckedTextViewctv1,ctv2;//多选框
privateLayoutInflaterli;//访问布局实例
//初始化方法
privatevoidinit(Intentintent){
Bundleb=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]);
}
}
}
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//获得ListView
listView=getListView();
//实例化LayoutInflater
li=getLayoutInflater();
//设置ListViewAdapter
listView.setAdapter(newViewAdapter());
//可多选
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
//获得Calendar实例
finalCalendarc=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(newOnItemClickListener(){
publicvoidonItemClick(AdapterView
>av,Viewv,int
position,longid){
switch(position){
//设置是否开启提醒
case0:
ctv1=(CheckedTextView)v;
if(ctv1.isChecked()){
on_off=0;
}else{
on_off=1;
}
break;
//设置提醒日期
case1:
showDialog(DATE_DIALOG_ID);
break;
//设置提醒时间
case2:
showDialog(TIME_DIALOG_ID);
break;
//设置提醒内容
case3:
showDialog1("请输入内容:
");
break;
//设置是否开启语音提醒
case4:
ctv2=(CheckedTextView)v;
if(ctv2.isChecked()){
alarm=0;
setAlarm(false);
}else{
alarm=1;
setAlarm(true);
}
break;
default:
break;
}
}
});
}
protectedvoidonResume(){
super.onResume();
//初始化列表
init(getIntent());
}
//ListViewAdatper,该类实现了列表的每一项通过自定义视图实现
classViewAdapterextendsBaseAdapter{
//列表显示内容
String[]strs={"是否开启","日期","时间","内容","开启闹钟"};
//获得列表列数
publicintgetCount(){
returnstrs.length;
}
//返回列表项
publicObjectgetItem(intposition){returnposition;}
//返回列表ID
publiclonggetItemId(intposition){
returnposition;
}
//获得当前列表项视图
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
Viewv=li.inflate(R.layout.item_row,null);
switch(position){
//是否开启该条备忘录
case0:
ctv1=(CheckedTextView)li.inflate(
android.R.layout.simple_list_item_multiple_choice,null);ctv1.setText(strs[position]);
if(on_off==0){
ctv1.setChecked(false);
}else{
ctv1.setChecked(true);
}
returnctv1;
//提醒日期
case1:
dateName=(TextView)v.findViewById(R.id.name);
dateDesc=(TextView)v.findViewById(R.id.desc);dateName.setText(strs[position]);
dateDesc.setText(mYear+"/"+mMonth+"/"+mDay);
returnv;
//提醒时间
case2:
timeName=(TextView)v.findViewById(R.id.name);
timeDesc=(TextView)v.findViewById(R.id.desc);
timeName.setText(strs[position]);
timeDesc.setText(mHour+":
"+mMinute);
returnv;
//提醒内容
case3:
contentName=(TextView)v.findViewById(R.id.name);
contentDesc=(TextView)
v.findViewById(R.id.desc);
contentName.setText(strs[position])
contentDesc.setText(content);
returnv;
//是否声音提示
case4:
ctv2=(CheckedTextView)li.inflate(
android.R.layout.simple_list_item_multiple_choice,null);ctv2.setText(strs[position]);
if(alarm==0){
ctv2.setChecked(false);
}else{
ctv2.setChecked(true);
}
returnctv2;
default:
break;
}
returnnull;
}
//显示对话框
protectedDialogonCreateDialog(intid){
switch(id){
//显示日期对话框
caseDATE_DIALOG_ID:
returnnewDatePickerDialog(this,
mDateSetListener,mYear,mMonth,mDay);
//显示时间对话框
caseTIME_DIALOG_ID:
returnnewTimePickerDialog(this,
mTimeSetListener,mHour,mMinute,false);
}
return
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 开发 智能 备忘录 系统