课程设计报告(本科)课程:嵌入式系统学号:姓名:班级:教师:时间:2013年5月3日至6月20日计算机科学与技术系1设计名称:基于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日:修改并完成,提交验收;2设计过程、步骤(可加页):一.功能结构二.设计说明1.备忘录数据存储实现为了持久地将用户的备忘录信息保存下来,需要将这些信息存储在SQLite数据库中。备忘录需要保存的信息有:编号(ID)、提醒日起(Datel)、提醒时间(Time1)、提醒内容(Content)、是否启用(NO_OFF)、是否声音提醒(Alarm)、创建日期(Created)等。在操作北往里数据表手机,一些属性在几个类中使用,为此我们将其定义为一个常量类,在该常量类中声明。常量类名称为TaskList,该类有一个内部Tasks继承BaseColumns,在该类中声明URI和列常量等,方便后面使用。2.备忘录ContentProvidershi实现为了使备忘录数据表具有通用的数据共享访问机制,需要通过ContentProvider来实现。这里我们定义一个TaskListProvide类,该类继承ContentProvider,实现了onCreate、query、getType、insert、deleted、update等方法,来支持数据的增、删、查、改等操作。3.备忘录列表展示用户可能哟呵常见很多条备忘录信息,而且需要维护这些备忘录信息,例如删除、修改等功能。这里我们通过一个ListView来展示备忘录列表,通过选项菜单提供微幅数据借口。4.备忘录维护备忘录维护是应该用程序的核心,提供了添加、修改备忘录信息的功能。备忘录信息也通过ListView来展示,ListView的每一项通过自定义View来实现。通过单击ListView的每一项来设置备忘录信息。5.备忘录定时提醒为了更好的提醒用户在特定时间做某项工作,要设置语音和震动等功能,该功能通过定义Activity发出广播,BroadcastReceiver接收广播,并通过Notification提醒用户。开始设置是否开启设置时间备忘录内容结束开启闹钟36.程序运行结果与分析(可以加页):1.列表展示主要功能把备忘录界面展示给用户,用户可以添加和删除备忘录信息,很大程度上方便了用户的操作。运行结果2.备忘录维护用户可以很好的将需要或者不需要的备忘录信息进行增添或者删除运行结果:43.备忘录定时提醒这个功能可以很有效的提醒用户关闭备忘录,以免造成不必要的资源浪费。运行结果:5设计体会与建议:这个课程设计主要研究了Android平台的架构以及在Android平台上开发备忘录软件,此应用除了具备简单备忘功能外,还具备简单数据处理功能,还有闹钟提醒相对高级点的功能。这个课程设计在Android平台以及在该平台上开发手机备忘录软件上做了大量的工作,但因个人能力有限,还有很多问题需要解决,现对未来可以进行的工作做出以下几点感言:(l)这个课程设计实现的备忘录客户端是基于Android平台进行开发的,但是还未能真正解析Android的精髓,系统的界面设计也不是很完善,对Android平台进一步研究,能够使系统在设计方面更加快捷和完善。(2)这个课程设计所开发的系统目前还只是在模拟器上进行运行,还有待移植到真机上进行进一步研究。相信随着研究的进一步深入,这些问题会逐步得到解决,相信基于Android平台的备忘录软件会有很好的应用前景。6附录:源程序代码1.AlarmActivity.javapackagecom.amaker.ch17.app;importandroid.app.Activity;importandroid.app.Notification;importandroid.app.NotificationManager;importandroid.content.Context;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.TextView;/***@author冯春礼*提醒用户*/publicclassAlarmActivityextendsActivity{publicstaticfinalintID=1;@OverrideprotectedvoidonCreate(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);//实例化NotificationNotificationn=newNotification();//设置显示提示信息,该信息也会在状态栏显示Stringmsg=getIntent().getStringExtra(msg);//显示时间n.tickerText=msg;tv.setText(msg);//设置声音提示n.sound=Uri.parse(file:///sdcard/fallbackring.ogg);7//发出通知nm.notify(ID,n);//取消通知btn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){nm.cancel(ID);finish();}});}}2.TaskDetailActivity.javapackagecom.amaker.ch17.app;importjava.util.Calendar;importandroid.app.AlarmManager;importandroid.app.AlertDialog;importandroid.app.DatePickerDialog;importandroid.app.Dialog;importandroid.app.ListActivity;importandroid.app.PendingIntent;importandroid.app.TimePickerDialog;importandroid.content.ContentUris;importandroid.content.ContentValues;importandroid.content.DialogInterface;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AdapterView;importandroid.widget.BaseAdapter;importandroid.widget.CheckedTextView;importandroid.widget.DatePicker;importandroid.widget.EditText;importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.TimePicker;importandroid.widget.AdapterView.OnItemClickListener;8importcom.amaker.ch17.app.TaskList.Tasks;/****@author冯春礼*备忘录详细信息类,该信息*/publicclassTaskDetailActivityextendsListActivity{//备忘录信息列表privateListViewlistView=null;//提醒日期privateintmYear;privateintmMonth;privateintmDay;//提醒时间privateintmHour;privateintmMinute;//日期显示TextViewprivateTextViewdateName,dateDesc;//时间显示TextViewprivateTextViewtimeName,timeDesc;//提醒内容TextViewprivateTextViewcontentName,contentDesc;//是否开启提醒privateinton_off=0;//是否声音警告privateintalarm=0;//显示日期、时间对话框常量staticfinalintDATE_DIALOG_ID=0;staticfinalintTIME_DIALOG_ID=1;//保存内容、日期、时间字符串privateStringcontent,date1,time1;//备忘录IDprivateintid1;//多选框privateCheckedTextViewctv1,ctv2;//访问布局实例privateLayoutInflaterli;//初始化方法privatevoidinit(Intentintent){Bundleb=intent.getBundleExtra(b);if(b!=null){9id1=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=Int