安卓记事本开发设计报告.docx

上传人:b****5 文档编号:6007887 上传时间:2023-01-02 格式:DOCX 页数:22 大小:321.52KB
下载 相关 举报
安卓记事本开发设计报告.docx_第1页
第1页 / 共22页
安卓记事本开发设计报告.docx_第2页
第2页 / 共22页
安卓记事本开发设计报告.docx_第3页
第3页 / 共22页
安卓记事本开发设计报告.docx_第4页
第4页 / 共22页
安卓记事本开发设计报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

安卓记事本开发设计报告.docx

《安卓记事本开发设计报告.docx》由会员分享,可在线阅读,更多相关《安卓记事本开发设计报告.docx(22页珍藏版)》请在冰豆网上搜索。

安卓记事本开发设计报告.docx

安卓记事本开发设计报告

滨江学院

《移动通信程序设计》

课程设计

 

题目Android记事本

院系计算机系

专业计科3

学生姓名窦同庆

学号20112308904

 

二O一四年五月二十九日

目录

一、引言1

1.1Android背景1

1.2可行性分析1

二、开发环境的安装和配置1

2.1开发包及其工具的介绍1

2.2Android开发平台搭建2

2.2.1安装包下载2

2.2.2软件安装2

三、软件功能规划3

3.1软件功能3

2.2界面设计3

四、程序设计3

4.1记事本组件的设计3

4.2记事本逻辑设计3

4.3记事本存储实现3

4.3.1数据存储之sharedPreferences3

4.3.2数据存储之files4

4.3.3数据存储之network5

4.3.4数据存储之SQLite5

4.3.5数据存储之ContentProviders7

五、程序开发7

5.1主activity的设计7

5.2编辑内容8

5.3删除记事9

5.4程序执行流程9

六、程序截图12

1.添加新记事12

2.修改记事13

七、总结15

 

Android记事本

窦同庆

南京信息工程大学计算机系,南京210044

摘要:

随着3G技术的成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。

在Google和Android手机联盟的共同推动下,Android在众多移动应用开发平台中脱颖而出。

关键词:

android记事本eclipse

1概要

1.1Android背景

Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。

 早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续进行对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。

底层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.2可行性分析

(1)技术可行性-----本项目仅需要一台装有Eclipse及配置好Android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windowsxp及其以上版本,macos,linux等操作系统。

(2)经济可行性-----由于本软件开发只有一个单个人,一台电脑就行,基本不需要太大的成本.在经济上完全可行。

(3)操作可行性-----界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。

并没有太大的难度,所以,该项目完全有可操作性.

2开发环境的安装和配置

2.1开发包及其工具的介绍

Android以java作为开发语言,jdk是进行java开发时必需的开发包,Eclipse是一款非常优秀的开源IDE,在大量插件的配合下,完全可以满足从企业级java应用到手机终端java游戏的开发。

Google官方也提供了基于Eclipse的Android开发插件ADT,所以本软件开发选择Eclipse作为开发IDE。

2.2Android开发平台搭建

2.2.1安装包下载

(1)java JDK下载

进入  JDK只下载JDK,无需下载jre。

(2)Eclipse下载

进入http:

//www.eclipse.org/downloads我们选择第一个,即EclipseIDEforjavaEEDevelopers。

(3)Android SDK下载

说明:

 Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本。

完全版下载  (Android sdk 2.1 r01)。

2.2.2软件安装 

(1)安装JDK

 安装完成即可。

  

(2)解压Eclipse

Eclipse无需安装,解压后,直接打开就行。

(3)解压Android SDK

这个也无需安装,解压后供后面使。

(4)配置Eclipse

打开Eclipse,,在菜单栏上选择 help->Install New SoftWare点击 Add按钮,出现如下界面,输入网址:

 https:

//dl- (如果出错,请将https改成http) ,名称:

 Android (这里可以自定义),点击OK, 点击 Next按钮 ,点击Next按钮,出现如下界面:

选择 I accept the terms of the license agreements,点击Next,进入安装插件界面安装完成后, 点击Yes按钮,重启Eclips。

(5) 配置Android SDK

点击菜单window->preferences 选择你的Android SDK解压后的目录,选错了就会报错,这个是升级工具,目前还没有一个版本的SDK

升级SDK版本,选择菜单 window->Android sdk and avd manager  选择update all按钮,出现如下界面选择左边的某一项,点击accept表示安装,点击reject表示不安装,我这里只选了SDK 2.1 和samples for api 7 ,,自己可以任意自定义,确定后,选择install按钮,进入安装界面:

安装完成。

(6)新建AVD(Android vitural device)

和上面一样,进入Android sdk and avd manager,选中VituralDevices 在点击New按钮后, 名称可以随便取,target选择你需要的SDK版本,SD卡大小自定义,点击 Create AVD,显示创建AVD完毕。

(7) 新建Android项目

选择菜单file->new->other 进入如下界面:

选择新建Android Project项目,点击Next按钮,进入如下界面名称自定义,应用程序名自定义,报名必须包含一个点以上,min SDK version里面必须输入整数

(8)配置运行

右键项目->Run as -> Run Configuration该界面,点击Browse 按钮,选择你要运行的项目选择Target切换到以下界面该界面选择运行的AVD,将AVD前面的方框设置为选择状态。

 

(9)测试项目运行右键项目名称->run as ->Android Application 即可启动运行该Android程序。

3软件功能规划

3.1软件功能 

能够提示用户是否有已写记事本,能够进行记事本的标题填写和内容填写,确定后保存。

 

3.2界面设计 

进入程序提示“您还没有开始写日记呢!

点击下边的Menu按钮开始写日记吧!

”,点击menu菜单后进入标题和内容的填写界面。

4程序设计

4.1记事本组件的设计

本项目涉及到以下组件:

TextView:

“记事本”,“新建记事”,“编辑记事”等标题。

EditView:

“记事本的标题”,“内容”等。

Button:

“确定”按钮。

Menu:

“添加新记事”,“编译内容”,“删除当前记事”等。

4.2记事本逻辑设计

(1)添加新记事

如果当前没有记事,点击“menu”后只有一个菜单选项“添加新记事”,写完记事之后,点击“确定”进行保存。

(2)编辑内容

选中要编辑的那一个记事,然后点击“menu”菜单,会出现三个选项“新建记事”,“编辑内容”,“删除当前记事”,点击“编辑内容”对被选中的记事进行编辑,然后点击“确定”加以保存。

(3)删除记事

点击上下键,选中要删除的记事,然后点击“menu”菜单,然后点击“删除当前记事”,对选中的记事加以删除。

4.3记事本存储实现

Android中一共提供了5种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据,就要使用Android提供的ContentProviders。

ContentProviders:

Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据。

SharedPreference:

用来存储“key-valuepaires”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。

Files:

它通过FileInputStream和FileOutputStream对文件进行操作,但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。

SQLite:

Android提供的一个标准的数据库,支持SQL语句。

Network:

通过网络来存储和获得数据。

4.3.1数据存储之SharedPreferences

通过getpreferences()方法来获得Preference对象,通过SharePreferences.Editoreditor=uiState.edit;取得编辑对象,然后通过editor.put……()方法添加数据,最后通过commit()方法来保存数据。

4.3.2数据存储之Files

我们可以通过自定义的save()方法来保存数据,同时也可以通过load()方法来获取文件中的数据。

booleansave()

{

Propertiesproperties=newProperties();

/*将数据打包成Properties*/

properties.put("bmusic",String.valueOf(mbMusic));

try

{

FileOutputStreamstream=this.openFileOutput("music.cfg",Context.MODE_WORLD_WRITEABLE);

/*将打包好的数据写入文件中*/

properties.store(stream,"");

}

catch(FileNotFoundExceptione)

{

returnfalse;

}

catch(IOExceptione)

{

returnfalse;

}

returntrue;

}

/*装载、读取数据*/

voidload()

{

/*构建Properties对对象*/

Propertiesproperties=newProperties();

try

{

/*开发文件*/

FileInputStreamstream=this.openFileInput("music.cfg");

/*读取文件内容*/

properties.load(stream);

}

catch(FileNotFoundExceptione)

{

return;

}

catch(IOExceptione)

{

return;

}

/*取得数据*/

mbMusic=Boolean.valueOf(properties.get("bmusic").toString());

}

4.3.3数据存储之Network

通过网络来获取和保存数据资源,将数据存储到网络上的方法很多,比如将要保存的数据以文件的方式上传到服务器,发送邮件等。

下面我们看下如何实现读取网络文件

StringmyString=null;

try

{

/*定义我们要访问的地址url*/

URLuri=newURL("http:

//192.168.1.110:

8080/Android.txt");

/*打开这个url连接*/

URLConnectionucon=uri.openConnection();

/*从上面的链接中取得InputStream*/

InputStreamis=ucon.getInputStream();

BufferedInputStreambis=newBufferedInputStream(is);

ByteArrayBufferbaf=newByteArrayBuffer(100);

intcurrent=0;

/*一直读到文件结束*/

while((current=bis.read())!

=-1)

{

baf.append((byte)current);

}

myString=newString(baf.toByteArray());

}

catch(Exceptione)

{

myString=e.getMessage();

}

另外由于在程序中访问了外部网络,我们需要在AndroidManifest.xml文件中给予权限,代码如下:

name=”Android.permission.INTERNET”/>

4.3.4数据存储之SQLite

这个方法在数据保存中非常常用.只是它只会被一个程序读取数据,不能在不同程序间共享数据.

/*创建和打开数据库*/

mSQLiteDatabase=this.openOrCreateDatabase(DATABASE_NAME,MODE_PRIVATE,null);

/*创建表*/

mSQLiteDatabase.execSQL(CREATE_TABLE);

/*删除数据库*/

publicvoidDeleteDataBase()

{

this.deleteDatabase(DATABASE_NAME);

this.finish();

}

/*删除一个表*/

publicvoidDeleteTable()

{

mSQLiteDatabase.execSQL("DROPTABLE"+TABLE_NAME);

this.finish();

}

/*更新一条数据*/

publicvoidUpData()

{

ContentValuescv=newContentValues();

cv.put(TABLE_NUM,miCount);

cv.put(TABLE_DATA,"修改后的数据"+miCount);

/*更新数据*/

mSQLiteDatabase.update(TABLE_NAME,cv,TABLE_NUM+"="+Integer.toString(miCount-1),null);

UpdataAdapter();

}

/*向表中添加一条数据*/

publicvoidAddData()

{

ContentValuescv=newContentValues();

cv.put(TABLE_NUM,miCount);

cv.put(TABLE_DATA,"测试数据库数据"+miCount);

/*插入数据*/

mSQLiteDatabase.insert(TABLE_NAME,null,cv);

miCount++;

UpdataAdapter();

}

/*从表中删除指定的一条数据*/

publicvoidDeleteData()

{

/*删除数据*/

mSQLiteDatabase.execSQL("DELETEFROM"+TABLE_NAME+"WHERE_id="+Integer.toString(miCount));

miCount--;

if(miCount<0)

{

miCount=0;

}

UpdataAdapter();

}

/*更行试图显示*/

publicvoidUpdataAdapter()

{

//获取数据库Phones的Cursor

Cursorcur=mSQLiteDatabase.query(TABLE_NAME,newString[]{TABLE_ID,TABLE_NUM,TABLE_DATA},null,null,null,null,null);

miCount=cur.getCount();

if(cur!

=null&&cur.getCount()>=0)

{

//ListAdapter是ListView和后台数据的桥梁

ListAdapteradapter=newSimpleCursorAdapter(this,

//定义List中每一行的显示模板

//表示每一行包含两个数据项

Android.R.layout.simple_list_item_2,

//数据库的Cursor对象

cur,

//从数据库的TABLE_NUM和TABLE_DATA两列中取数据

newString[]{TABLE_NUM,TABLE_DATA},

//与NAME和NUMBER对应的Views

newint[]{Android.R.id.text1,Android.R.id.text2});

/*将adapter添加到m_ListView中*/

m_ListView.setAdapter(adapter);

}

}

4.3.5数据存储之ContentProviders

ContentProviders:

Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据。

  查询数据:

可以使用ContentProvider.query()或者Activity.managedQuery()方法。

  修改数据:

通过ContentResolver.update()方法可以用来修改数据。

  添加数据:

通过ContentResolver.insert()方法来增加一条数据。

  删除数据:

通过ContentResolver.delete()方法来删除一条记录。

5程序开发

5.1主activity的设计

  当选择“新建记事本”,“编辑内容”,“删除当前记事”等菜单选项时对应的操作。

  publicbooleanonOptionsItemSelected(MenuItemitem){

switch(item.getItemId()){

//插入一条数据

caseMENU_ITEM_INSERT:

Intentintent0=newIntent(this,ActivityDiaryEditor.class);

intent0.setAction(ActivityDiaryEditor.INSERT_DIARY_ACTION);

intent0.setData(getIntent().getData());

startActivity(intent0);

returntrue;

//编辑当前数据内容

caseMENU_ITEM_EDIT:

Intentintent=newIntent(this,ActivityDiaryEditor.class);

intent.setData(item.getIntent().getData());

intent.setAction(ActivityDiaryEditor.EDIT_DIARY_ACTION);

startActivity(intent);

returntrue;

//删除当前数据

caseMENU_ITEM_DELETE:

Uriuri=ContentUris.withAppendedId(getIntent().getData(),

getListView().getSelectedItemId());

getContentResolver().delete(uri,null,null);

renderListView();

}

returnsuper.onOptionsItemSelected(item);

}

5.2编辑内容

protectedvoidonCreate(BundlesavedInstanceState){

su

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1