目录
0 绪论..............................................................................................................................................1
1 系统需求分析 2
1.1 系统介绍 2
1.2 系统的功能性需求 2
1.3 软硬件环境需求 3
2. 系统设计 3
2.1 系统概述 3
2.2 系统总体结构 3
2.3 开发环境的配置 3
3. 详细设计及实现 3
3.1 数据库系统设计 3
3.2 界面原型设计 3
4.系统代码编写 3
4.1 代码编写思路 4
4.2 系统主界面的实现 4
4.3 系统功能模块配置的实现 4
4.4 模块功能流程设计 4
4.5 代码编写实现 4
5总结 4
参考文献............................................................................................................................................
摘要:Android手机占据了大部分移动的市场。手机已经深入当前人们的生活,甚至成为当前人们的生活的一部分。Android的应用于需求也不断增加。为了学习Android开发,本次以简单的生活记事本为学习例子。
关键字:生活记事本,android,eclipse
0 绪论
随着智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在google和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出。
Android操作系统是google最具杀伤力的武器之一。苹果以其天才的创新,是的iphone在全球迅速拥有了数百万忠实的”果粉”,而Android作为第一个完整,开放,免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与windows mobile ,symbian等厂商不同的是,Android操作系统是免费向开发人员提供,这样可节省近三层得成本。
我们都知道,无论是产品还是技术,商业应用都是它最大的发展动力。Android如此受到厂商与开发者的青睐,它的前景是一片光明的。国内对于安卓这方面的市场还没有完全开发出来。只要我们努力学习Android,对理想,对生活都会有很大的补益。[1]
随着信息化建设的发展,网络的不断完善,电子信息的进步,电子文字输入在生活、学习、工作中占有越来越重要的作用。这种崭新的文字记录的模式也是现代信息社会发展的一大趋势,因此,电子信息记录方式也逐渐成为业内人士关注的焦点。
现在网络上各种记事本数不胜数,较为出名的有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色,这些软件文字存储能量大;有的功能齐全,使用者广泛。但是,这些软件较为完善的记事软件大多存在与电脑使用,而对于手机系统所使用的记事本功能单一,且存储的安全性低、存储的种类也大多仅限文字和图片。在移动设备上,目前国内外下载量较高记事本软件有Evernote、小米便签、NoteEverything、麦库记事、有道云笔记,Gnotes,印象笔记,麦库记事,彩云笔记,为知笔记,随手写等。 [2]
因此,开发这样一套很简单的生活记事本软件对我们学习Android系统来讲是一件很有必要的事情。在完成简单的记事本软件不仅可以初步了解Android开发的基本的使用以及训练我们的开发能力,还对于我们毕业以后从事Android开发或者其他的开发奠定一定的基础。
1 系统需求分析
1.1 系统介绍
实现基于 Android 的“生活记事本”,用户可以记录过往生活的点点滴滴,也可以把重要的事情做一个备忘,日后能提醒自己。也可以是游玩的过程中顺手拍下美好的回忆,记下时间地点,便于某些时候能进行慢慢的品味。
1.2 系统的功能性需求
本系统主要功能如下:
1) 事件类别的管理(包括增加、删除、修改)
2) 提醒类别管理(包括增加、删除和修改)
3) 事件的管理(包括增加、删除和修改),关键信息包括:事件标题、关键字、事件内容、事件时间、重要性指数、位置信息(城市、区域的信息)、照片(拍照)、是否提醒(例如:某个时间点要取钱还给某人提前一天提醒我,快到时间1个小时再次提醒;)
4) 根据事件标题、关键字、类别搜索事件的功能
1.3 软硬件环境需求
1) 开发平台 Winxp/win7/win8/win10/vista/win2003server, Eclipse 及 ADT。
2) 数据库:SQLite
3) JDK1.7 及以上
4) Android 版本 2.3.3~4.3
5) 设备:android 手机或 android 平板
2.系统设计
2.1 系统概述
生活记事本就是记录生活的点滴,用作平常琐事的备忘录,也是一个游玩过程中记录开心时刻,拍下美好回忆,方便以后回忆的的电子日记本。
具有简约的UI界面。显示事件,删除事件,新增事件以及事件查询功能。同时具有插入图片,事件提醒,位置显示功能。
采用主流的开发软件eclipse编程软件。Google公司提供手机开发平台Android Developer专属的软件开发工具包Android SDK。以轻型SQLite为数据库,占用资源很低。
以Android4.0或者更高版本的Android系统的目标平台。
2.2 系统总体结构
主界面显示事件列表。点击查询跳转到查询界面,输入插入条件,主要是标题、关键字、和类别作为查询的条件。点击主界面最下方的新增按钮,则跳转空白的编辑界面,可以输入标题,位置(默认是GPS定位),关键字,内容等,同时还可以设置提醒和拍照视频。单击某项事件则跳转事件查询界面,主要显示标题,内容,位置,编辑的时间,设置提醒的时间等。在主界面长按某个事件弹出对话框,询问是否确定删除。总体的流程结构如图图2-1。
图2-1 系统总体结构
2.3 开发环境的配置
(1)java JDK下载
在http://java.sun.com/javase/downloads/index.jsp选择Download JDK只下载JDK,无需下载jre。
(2)Eclipse下载
进入http://www.eclipse.org/downloads我们选择第一个,即Eclipse IDE for java EE Developers。
(3)Android SDK下载
说明: Android SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本。完全版下载 (Android sdk 2.1 r01)。
(1)安装JDK
安装完成即可。
(2)解压Eclipse
Eclipse无需安装,解压后,直接打开就行。
(3)解压Android SDK
这个也无需安装,解压后供后面使。
(4)配置Eclipse
打开Eclipse,,在菜单栏上选择 help->Install New SoftWare点击 Add按钮,出现如下界面,输入网址: https://dl-ssl.google.com/android/eclipse/ (如果出错,请将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按钮,进入安装界面:安装完成。(由于现在google被禁用在下载SDK时需要,或者使用国外的VPN才可以更新成功)
(6)新建AVD(Android vitural device)
和上面一样,进入Android sdk and avd manager,选中Vitural Devices 在点击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]
搭建环境也可以参考这个博客(是图文教程):
http://blog.chinaunix.net/uid-22145625-id-3294443.html
3.详细设计及实现
该模块主要对生活记事本的需要使用的数据进行存储读取,主要包过事件管理表,媒体管理表,类别管理表。
采用Android系统自带的数据库SQLite进行数据的存储和读取。
3.1 数据库系统设计
生活记事本软件首先先创建一个notes的SQLite数据库,以及在改数据库里面设计3张表,用于存放相关数据。
1、创建数据库。在使用SQLiteOpenHelper的继承类中创建
public NotesDB(Context context) {
super(context, "notes", null, 1);
}
2、创建事件管理表(notes):用于记录事件主要的属性。创建的代码如下。表的具体设计如表3-1。
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME_NOTES + "(" +
COLUMN_NAME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
COLUMN_NAME_NOTE_NAME + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_CONTENT + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_DATE + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_ADDRESS + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_KEYWORD + " TEXT NOT NULL DEFAULT \"\","+
COLUMN_NAME_NOTE_RANK + " INTEGER NOT NULL DEFAULT 5,"+
COLUMN_NAME_NOTE_ISREMIND + " INTEGER NOT NULL DEFAULT 0,"+
COLUMN_NAME_NOTE_RAMINDTIME + " TEXT NOT NULL DEFAULT \"\" ,"+")");
字段名 |
类型 |
长度 |
是否可为空 |
是否主键 |
默认值 |
备注 |
_id |
Integer |
/ |
否 |
是 |
/ |
事件id标识 |
name |
text |
/ |
否 |
否 |
“” |
事件的标题 |
content |
text |
/ |
否 |
否 |
“” |
事件的内容 |
date |
text |
/ |
否 |
否 |
“” |
事件的时间 |
address |
text |
/ |
否 |
否 |
“” |
事件的地址 |
keyword |
text |
/ |
否 |
否 |
“” |
关键字,用于查询 |
rank |
Integer |
/ |
否 |
否 |
“” |
重要指数 |
isRemind |
text |
/ |
否 |
否 |
“0” |
是否提醒 |
remindTime |
text |
/ |
否 |
否 |
“” |
事件的提醒时间 |
表3-1 notes表
3、多媒体管理表(media):用于记录事件存放的照片或者视频的路径。创建的代码如下。表的具体设计如表3-2。
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME_MEDIA + "(" + COLUMN_NAME_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_NAME_MEDIA_PATH + " TEXT NOT NULL DEFAULT \"\","
+ COLUMN_NAME_MEDIA_OWNER_NOTE_ID
+ " INTEGER NOT NULL DEFAULT 0" + ")");
字段名 |
类型 |
长度 |
是否可为空 |
是否主键 |
默认值 |
备注 |
_id |
Integer |
/ |
否 |
是 |
/ |
照片,视频存储路径标识 |
path |
text |
/ |
否 |
否 |
“” |
照片,视频存储路径 |
notes_id |
Integer |
/ |
否 |
否 |
0 |
对应的照片,视频所属的事件 |
表3-2 media表
4、类别管理表(category):管理事件所属的类别。表的创建代码如下。具体的设计如表3-3。
db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_NAME_CLASS +" ( "
+ COLUMN_NAME_CLASS_NAME + " TEXT PRIMARY KEY ,"
+ COLUMN_NAME_MEDIA_OWNER_NOTE_ID + " INTEGER NOT NULL DEFAULT 0 "+")");
字段名 |
类型 |
长度 |
是否可为空 |
是否主键 |
默认值 |
备注 |
class_name |
text |
/ |
否 |
是 |
/ |
类别的名字 |
note_id |
Integer |
/ |
否 |
否 |
0 |
某个事件所属的类别 |
表3-3 category表
在生活记事本软件开发中,创建一个Notes类继承SQLiteOpenHelper助手类中创建表设计的三个表,主要的代码如下。(其中一些字段设置成常量,未显示出来)
public class NotesDB extends SQLiteOpenHelper {
public NotesDB(Context context) {
super(context, "notes", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {//tsfayiuewgwer
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME_NOTES + "(" +
COLUMN_NAME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
COLUMN_NAME_NOTE_NAME + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_CONTENT + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_DATE + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_ADDRESS + " TEXT NOT NULL DEFAULT \"\"," +
COLUMN_NAME_NOTE_KEYWORD + " TEXT NOT NULL DEFAULT \"\","+
COLUMN_NAME_NOTE_RANK + " INTEGER NOT NULL DEFAULT 5,"+
COLUMN_NAME_NOTE_ISREMIND + " INTEGER NOT NULL DEFAULT 0,"+
COLUMN_NAME_NOTE_RAMINDTIME + " TEXT NOT NULL DEFAULT \"\" ,"+")");
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME_MEDIA + "(" + COLUMN_NAME_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT,"+ COLUMN_NAME_MEDIA_PATH + " TEXT NOT NULL DEFAULT \"\","+ COLUMN_NAME_MEDIA_OWNER_NOTE_ID+ " INTEGER NOT NULL DEFAULT 0" + ")");
db.execSQL("CREATE TABLE IF NOT EXISTS "+TABLE_NAME_CLASS +" ( "+ COLUMN_NAME_CLASS_NAME + " TEXT PRIMARY KEY ,"+ COLUMN_NAME_MEDIA_OWNER_NOTE_ID + " INTEGER NOT NULL DEFAULT 0 "+")");
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
3.2 界面原型设计
整个项目的系统功能的项目的目录结构如图3-1所示。包括显示的主界面,编辑界面,查询界面,详细显示界面。
1、主界面:
显示事件的列表,每个列表显示事件的标题以及编辑的时间。还有时候有设置提醒。右上角有查询按钮,点击后会跳转查询界面。点击某个事件则会跳转到详细查询界面。长按某个事件则会弹回确认删除框。主界面界面设计如图3-2.
图3-1 项目的目录结构 图3-2 主界面UI
2、查询界面:
输入查询的条件,也就是在该界面输入查询的标题、关键字、类别进行查询,然后点击右上角的查询,则在该界面的下方会显示查询的到的结果,如果没有则默认没有显示。如图3-3,则是输入标题“事件1”,查询得到结果显示在下方。
图3-3 查询界面UI
3、编辑界面:
在该界面可以编辑事件的标题、关键字、位置、内容等主要信息,如图3-3。在点击更多按钮后,会弹出一个菜单,里面可以设置提醒、照相,视频和重要指数信息,如图3-4。在弹出菜单中点击提醒则会弹出一个时间设置,点击确认后则是设置好了时间,如图3-5。在点击照相后,则会调用照相机,如图3-7所示。点击视频后与点击照相机也是一样的。点击重要指数设置,则会弹出一个对话框,通过设置5颗星星来表示事件的重要指数,确认后则是设置成功,如图3-8所示。在上述的编辑设置好,需要点击保存在完成编辑,否则默认是未编辑成功的。保存后则会自动跳转到主界面,在主界面此时则会显示一条新的事件。
4、显示界面:
主要是显示与 事件先关的一些属性,如标题,内容,编辑的事件,地点。以及对事件的一些编辑,如关键字,重要指数,是否设置提醒以及提醒的时间。左上角是返回主界面的返回键,右上角是进入编辑界面的按钮。整个界面显示如图3-9。
图 3-9 显示界面
4.系统代码编写
4.1 代码编写思路
1、现根据界面设计,尽量现把对应的配置文件写好,至少需要将主要的功能模块的配置文件写好,在后续的编写中也可能需要不断修改这些配置文件。思考需要使用的控件,以及找到所需要使用的UI素材。 在编写界面的配置文件时,需要仔细调整各个控件的位置,布局美观,颜色搭配等。达到界面简约,用户使用感觉顺心。
2、数据库类的编写。包括在继承数据助手类数据库的创建,以及生活记事本需要使用的数据表的创建。另外编写一个数据库的操作类。包过各个模块对数据进行的操作方法。有数据插入,更新,删除和查询方法。
3、逐渐实现生活记事本的各个模块功能。(1)先从主界面实现,主界面也只要是显示事件列表,使用listView控件。通过配置文件显示每个事件的显示信息,显示事件的标题,编辑事件,如果事件有设置提醒,则显示出一个闹钟的图片。接着编写监听事件。监听查询和新增按钮。然后监听listView事件点击事件。获得监听到的是项,单击监听事件,进入事件信息详细显示界面。重写按钮监听事件,长按弹出删除事件的确认对话框。主要实现listView的item的监听,界面的跳转,以及界面跳转的信息传递,数据库的数据查询,删除。还需要将各个方法放在适合的位置。(2)查询模块。相对于比较简单。通过配置文件显示查询界面信息,调用数据库的查询,查询的结果保存到cursor中,通过listView的适配器显示出查询的结果。(3)事件详细显示模块。该界面也是相对简单。主要也是通过配置文件,设置好需要显示信息的位置。通过从主界面通过Intent传递过来的信息取出放到对应的位置控件。还有就是返回和编辑这两个事件的监听,实现界面的跳转。(4)事件编辑模块。通过从事件显示模块传递信息到该界面,其中该界面是重复利用新增事件界面,将对应的信息先显示在对应的编辑框中。还有需要对返回,保存和更多按钮的监听。在监听到更多按钮的时候弹出一个菜单。里面继续监听提醒,照相,视频以及重要指数的事件。在监听提醒,则弹出提醒时间设置框。监听到照片和视频事件,则调用系统的照相和视频。在监听重要指数则弹出对话框设置重要指数。在监听保存按钮后,则将读取编辑修改信息更新数据库的记录。(5)事件新增模块。总体与事件编辑模块相同。不同之处在于各个输入框是设置为空的,但是位置设置默认调用地位SDK显示当前的位置。
4、将各个功能模块界面UI进行进一步修改。
4.2 系统主界面的实现
下面是具体实现后的界面显示。总体界面的完成于原来设计的界面基本上一样,在原来的设计上修改一些UI。在主界面显示事件列表,如图4-1。在长按某个事件后,弹出删除确认的对话框,如图4-2所示。
4.3 系统功能模块配置的实现
生活记事本的各个功能模块配置实现结果。包括查询模块,内容显示模块,新增事件模块,事件编辑模块。
查询模块中,输入在标题输入框中输入“t”后,关键字和类别为空,然后点击右上角的查询按钮后,在下方显示查询得到的结果,查询得到的结果包括两条以“title”的事件,但是它们编辑的时间是不同的,如图4-3所示。
显示模块,在单击主界面的事件列表后即可跳转到该界面。在该界面可以显示出,事件编辑的详细信息,显示事件的标题,位置,时间,关键字,重要指数,是否设置提醒和内容等主要事件信息,如图4-4所示。
新增事件模块,在点击主界面的下方新增按钮,则会跳转该界面。可以再改界面输入事件的标题,关键字,位置和内容。其中位置通过定位默认显示当前的位置,当然也可以通过修改位置信息,改成自己喜欢的位置,如图4-5所示。在需要编辑其他事件信息,则需要点击更多按钮后才会显示,包括提醒,照相,视频等,如图4-7所示。在设置提醒的时候则会弹出事件设置对话框,设置时间。弹出的对话框的时间显示为当前时间。设置提醒后会出现通知,(gvsdhsdhfdsfds)
编辑事件模块,与新增事件模块的界面使用是相同的,只是在显示前先将从现实模块对应的事件信息显示对应的编辑框中,如图4-6所示。
4.4 模块功能流程设计
4.5 代码编写实现
参考文献:
[1]http://wenku.baidu.com/link?url=rICkiAgNBLJlY1gU4yPToqKdFvc97ztpjxQWdMoCA7jRoV1UvqoanVJ4YNUQhCiqWaTd1Q_K6gjnTRq8erz2WbM4N_iSRiEP4ZLMaXgDSAa
[2]http://wenku.baidu.com/link?url=N_AG05QF6sTvQNuZI20h3G7PxXEDQ3ErRHDpk9jl6E4Wf8rc3zjLhtJ6iy-eW3R07nLhZjMv8TSftIkDMtIqbselJg5V3MldEe7TnUUq1-S
[3]http://wenku.baidu.com/link?url=SD7BJ4eZI34EmejiN4t2LbmOURaFUNeijfniPuFkCVgnGrG870a3-ws6ft6HoaLGQUggAzsuvLM4j3oV01WMWQ5B0kh4zh2ypc5QRx5fjo_###