安卓记事本开发设计报告.docx
- 文档编号:10890869
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:18
- 大小:74.02KB
安卓记事本开发设计报告.docx
《安卓记事本开发设计报告.docx》由会员分享,可在线阅读,更多相关《安卓记事本开发设计报告.docx(18页珍藏版)》请在冰点文库上搜索。
安卓记事本开发设计报告
LastupdatedontheafternoonofJanuary3,2021
安卓记事本开发设计报告
滨江学院
《移动通信程序设计》
课程设计
题目Android记事本
院系计算机系
专业计科3
学生姓名窦同庆
学号
二O一四年五月二十九日
Android记事本
窦同庆
南京信息工程大学计算机系,南京210044
摘要:
随着3G技术的成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。
在Google和Android手机联盟的共同推动下,Android在众多移动应用开发平台中脱颖而出。
关键词:
android记事本eclipse
1概要
背景
Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
早期由原名为"Android"的公司开发,谷歌在2005年收购""后,继续进行对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。
底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。
开放性:
在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。
显着的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。
开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。
挣脱运营商的束缚:
在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。
自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。
随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。
丰富的硬件选择:
这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。
功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。
好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。
不受任何限制的开发商:
Android平台提供给第三方开发商一个十分宽泛、自由的环境。
因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。
但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。
无缝结合的Google应用:
如今叱咤互联网的Google已经走过10年度历史。
从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
可行性分析
(1)技术可行性-----本项目仅需要一台装有Eclipse及配置好Android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windowsxp及其以上版本,macos,linux等操作系统。
(2)经济可行性-----由于本软件开发只有一个单个人,一台电脑就行,基本不需要太大的成本.在经济上完全可行。
(3)操作可行性-----界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。
并没有太大的难度,所以,该项目完全有可操作性.
2开发环境的安装和配置
开发包及其工具的介绍
Android以java作为开发语言,jdk是进行java开发时必需的开发包,Eclipse是一款非常优秀的开源IDE,在大量插件的配合下,完全可以满足从企业级java应用到手机终端java游戏的开发。
Google官方也提供了基于Eclipse的Android开发插件ADT,所以本软件开发选择Eclipse作为开发IDE。
开发平台搭建
安装包下载
(1)javaJDK下载
进入选择DownloadJDK只下载JDK,无需下载jre。
(2)Eclipse下载
进入downloads我们选择第一个,即EclipseIDEforjavaEEDevelopers。
(3)AndroidSDK下载
说明:
AndroidSDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本。
完全版下载(Androidsdkr01)。
软件安装
(1)安装JDK
安装完成即可。
(2)解压Eclipse
Eclipse无需安装,解压后,直接打开就行。
(3)解压AndroidSDK
这个也无需安装,解压后供后面使。
(4)配置Eclipse
打开Eclipse,,在菜单栏上选择help->InstallNewSoftWare点击Add按钮,出现如下界面,输入网址:
android/eclipse/(如果出错,请将https改成http),名称:
Android(这里可以自定义),点击OK,点击Next按钮,点击Next按钮,出现如下界面:
选择Iacceptthetermsofthelicenseagreements,点击Next,进入安装插件界面安装完成后,点击Yes按钮,重启Eclips。
(5)配置AndroidSDK
点击菜单window->preferences选择你的AndroidSDK解压后的目录,选错了就会报错,这个是升级工具,目前还没有一个版本的SDK
升级SDK版本,选择菜单window->Androidsdkandavdmanager选择updateall按钮,出现如下界面选择左边的某一项,点击accept表示安装,点击reject表示不安装,我这里只选了SDK和samplesforapi7,,自己可以任意自定义,确定后,选择install按钮,进入安装界面:
安装完成。
(6)新建AVD(Androidvituraldevice)
和上面一样,进入Androidsdkandavdmanager,选中VituralDevices在点击New按钮后,名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击CreateAVD,显示创建AVD完毕。
(7)新建Android项目
选择菜单file->new->other进入如下界面:
选择新建AndroidProject项目,点击Next按钮,进入如下界面名称自定义,应用程序名自定义,报名必须包含一个点以上,minSDKversion里面必须输入整数
(8)配置运行
右键项目->Runas->RunConfiguration该界面,点击Browse按钮,选择你要运行的项目选择Target切换到以下界面该界面选择运行的AVD,将AVD前面的方框设置为选择状态。
(9)测试项目运行右键项目名称->runas->AndroidApplication即可启动运行该Android程序。
3软件功能规划
软件功能
能够提示用户是否有已写记事本,能够进行记事本的标题填写和内容填写,确定后保存。
界面设计
进入程序提示“您还没有开始写日记呢!
点击下边的Menu按钮开始写日记吧!
”,点击menu菜单后进入标题和内容的填写界面。
4程序设计
记事本组件的设计
本项目涉及到以下组件:
TextView:
“记事本”,“新建记事”,“编辑记事”等标题。
EditView:
“记事本的标题”,“内容”等。
Button:
“确定”按钮。
Menu:
“添加新记事”,“编译内容”,“删除当前记事”等。
记事本逻辑设计
(1)添加新记事
如果当前没有记事,点击“menu”后只有一个菜单选项“添加新记事”,写完记事之后,点击“确定”进行保存。
(2)编辑内容
选中要编辑的那一个记事,然后点击“menu”菜单,会出现三个选项“新建记事”,“编辑内容”,“删除当前记事”,点击“编辑内容”对被选中的记事进行编辑,然后点击“确定”加以保存。
(3)删除记事
点击上下键,选中要删除的记事,然后点击“menu”菜单,然后点击“删除当前记事”,对选中的记事加以删除。
记事本存储实现
Android中一共提供了5种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据,就要使用Android提供的ContentProviders。
ContentProviders:
Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据。
SharedPreference:
用来存储“key-valuepaires”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。
Files:
它通过FileInputStream和FileOutputStream对文件进行操作,但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。
SQLite:
Android提供的一个标准的数据库,支持SQL语句。
Network:
通过网络来存储和获得数据。
数据存储之SharedPreferences
通过getpreferences()方法来获得Preference对象,通过=;取得编辑对象,然后通过……()方法添加数据,最后通过commit()方法来保存数据。
数据存储之Files
我们可以通过自定义的save()方法来保存数据,同时也可以通过load()方法来获取文件中的数据。
booleansave()
{
Propertiesproperties=newProperties();
/*将数据打包成Properties*/
("bmusic",(mbMusic));
try
{
FileOutputStreamstream=("",;
/*将打包好的数据写入文件中*/
(stream,"");
}
catch(FileNotFoundExceptione)
{
returnfalse;
}
catch(IOExceptione)
{
returnfalse;
}
returntrue;
}
/*装载、读取数据*/
voidload()
{
/*构建Properties对对象*/
Propertiesproperties=newProperties();
try
{
/*开发文件*/
FileInputStreamstream=("");
/*读取文件内容*/
(stream);
}
catch(FileNotFoundExceptione)
{
return;
}
catch(IOExceptione)
{
return;
}
/*取得数据*/
mbMusic=("bmusic").toString());
}
数据存储之Network
通过网络来获取和保存数据资源,将数据存储到网络上的方法很多,比如将要保存的数据以文件的方式上传到服务器,发送邮件等。
下面我们看下如何实现读取网络文件
StringmyString=null;
try
{
/*定义我们要访问的地址url*/
URLuri=");
/*打开这个url连接*/
URLConnectionucon=();
/*从上面的链接中取得InputStream*/
InputStreamis=();
BufferedInputStreambis=newBufferedInputStream(is);
ByteArrayBufferbaf=newByteArrayBuffer(100);
intcurrent=0;
/*一直读到文件结束*/
while((current=())!
=-1)
{
((byte)current);
}
myString=newString());
}
catch(Exceptione)
{
myString=();
}
另外由于在程序中访问了外部网络,我们需要在文件中给予权限,代码如下:
name=”数据存储之SQLite 这个方法在数据保存中非常常用.只是它只会被一个程序读取数据,不能在不同程序间共享数据. /*创建和打开数据库*/ mSQLiteDatabase=(DATABASE_NAME,MODE_PRIVATE,null); /*创建表*/ (CREATE_TABLE); /*删除数据库*/ publicvoidDeleteDataBase() { (DATABASE_NAME); (); } /*删除一个表*/ publicvoidDeleteTable() { ("DROPTABLE"+TABLE_NAME); (); } /*更新一条数据*/ publicvoidUpData() { ContentValuescv=newContentValues(); (TABLE_NUM,miCount); (TABLE_DATA,"修改后的数据"+miCount); /*更新数据*/ (TABLE_NAME,cv,TABLE_NUM+"="+(miCount-1),null); UpdataAdapter(); } /*向表中添加一条数据*/ publicvoidAddData() { ContentValuescv=newContentValues(); (TABLE_NUM,miCount); (TABLE_DATA,"测试数据库数据"+miCount); /*插入数据*/ (TABLE_NAME,null,cv); miCount++; UpdataAdapter(); } /*从表中删除指定的一条数据*/ publicvoidDeleteData() { /*删除数据*/ ("DELETEFROM"+TABLE_NAME+"WHERE_id="+(miCount)); miCount--; if(miCount<0) { miCount=0; } UpdataAdapter(); } /*更行试图显示*/ publicvoidUpdataAdapter() { etData()); startActivity(intent0); returntrue; etData()); ; startActivity(intent); returntrue; etData(), getListView().getSelectedItemId()); getContentResolver().delete(uri,null,null); renderListView(); } (item); } 编辑内容 protectedvoidonCreate(BundlesavedInstanceState){ (savedInstanceState);etAction())); setTitle("编辑记事"); }elseif(action)){oString(); Stringbody=().toString(); ContentValuesvalues=newContentValues(); DiaryContentProvider .getFormateCreatedDate()); title); body); getContentResolver().update(mUri,values, null,null); } } 删除记事 privatevoidrenderListView(){ Cursorcursor=managedQuery(getIntent().getData(),PROJECTION,null, null,; SimpleCursorAdapteradapter=newSimpleCursorAdapter(this, cursor,newString[]{, },newint[]{ }); setListAdapter(adapter); } 程序执行流程 文件: package import? ".txt"; String? content=().toString(); service=newFileService; try { (filename,content); }catch(Exceptione) { (); }finally{ .show(); } } }); } } 用于文件操作的类: package import? 布局文件: : xmlns: apk/res/Android" Android: orientation="vertical" Android: layout_width="fill_parent" Android: layout_height="fill_parent" Android: background="@drawable/note1" > Android: id="@+id/text1" Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: text="@string/theme" Android: textSize="25sp" Android: layout_gravity="center_horizontal" Android: paddingTop="20dip" Android: textColor="#FFaa00" />? Android: id="@+id/text2" Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: textSize="20sp" Android: text="@string/filename" Android: paddingTop="20dip" Android: textColor="#FFaa00" /> Android: id="@+id/edit1" Android: layout_width="match_parent" Android: layout_height="wrap_content" Android: maxLines="1" />? Android: id="@+id/text2" Android: layout_width="fill_parent" Android: layout_height="wrap_content" Android: text="@string/content" Android: textSize="20sp" Android: textColor="#FFaa00" />? Android: id="@+id/edit2" Android: layout_width="match_parent" Android: layout_height="wrap_content" Android: minLines="6" /> 6程序截图 添加新记事 5-2 编辑记事 5 - 5-3 保存记事 修改记事 5-4选择记事 5-5 编辑内容 删除当前记事 如图: 5-6 删除记事 7总结 经过几个月的学习,研究和开发,我终于按时完成了这个项目。 通过这个项目的研发,我终于认识到理论跟实际还是有很大的不同的。 对安卓的基本知识进行了锻炼,对自己的成果也有了很大的成就感,激发了我对安卓研究的巨大兴趣。 通过此次设计过程我会到了许多知识,这也是在大学里第一次比较完整的完成一个小项目,虽然过程中遇到了许多困难,在同学和老师的帮助下一一克服了。 通过不断的发现问题,总结问题和解决问题的过程,使我在此次课程设计中不断的提高,并且得到了宝贵的经验。 参考文献: [1]杨丰盛,《Android应用开发揭秘》,机械工业出版社,2008 [2]邓凡平,《深入理解Android》,机械工业出版社,出版2010 [3]柯元旦,《Android内核剖析》,电子工业出版社,出版2006 [4]吴亚峰、索依娜等,《Android核心技术与实例详解》电子工业出版社,2010 [5]郭宏志,《Android应用开发详解》,电子工业出版社,2010 [6]靳岩、姚尚朗编着,《Android开发入门与实战》,人民邮电出版社,2009
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 记事本 开发 设计 报告