目录

0  绪论..............................................................................................................................................1

1  系统需求分析 2

11  系统介绍 2

12  系统的功能性需求 2

13  软硬件环境需求 3

2. 系统设计 3

21  系统概述 3

22 系统总体结构 3

23  开发环境的配置 3

3. 详细设计及实现 3

31  数据库系统设计 3

32  界面原型设计 3

4.系统代码编写 3

41  代码编写思路 4

42  系统主界面的实现 4

43  系统功能模块配置的实现 4

44  模块功能流程设计 4

45 代码编写实现 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  系统需求分析

 

11  系统介绍

 实现基于 Android 的“生活记事本”,用户可以记录过往生活的点点滴滴,也可以把重要的事情做一个备忘,日后能提醒自己。也可以是游玩的过程中顺手拍下美好的回忆,记下时间地点,便于某些时候能进行慢慢的品味。

 

12  系统的功能性需求

本系统主要功能如下:

1) 事件类别的管理(包括增加、删除、修改)

2) 提醒类别管理(包括增加、删除和修改)

3) 事件的管理(包括增加、删除和修改),关键信息包括:事件标题、关键字、事件内容、事件时间、重要性指数、位置信息(城市、区域的信息)、照片(拍照)、是否提醒(例如:某个时间点要取钱还给某人提前一天提醒我,快到时间1个小时再次提醒;)

4) 根据事件标题、关键字、类别搜索事件的功能

 

13  软硬件环境需求

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.系统设计

 

21  系统概述

生活记事本就是记录生活的点滴,用作平常琐事的备忘录,也是一个游玩过程中记录开心时刻,拍下美好回忆,方便以后回忆的的电子日记本。

具有简约的UI界面。显示事件,删除事件,新增事件以及事件查询功能。同时具有插入图片,事件提醒,位置显示功能。

    采用主流的开发软件eclipse编程软件。Google公司提供手机开发平台Android Developer专属的软件开发工具包Android SDK。以轻型SQLite为数据库,占用资源很低。

以Android4.0或者更高版本的Android系统的目标平台。

 

22 系统总体结构

主界面显示事件列表。点击查询跳转到查询界面,输入插入条件,主要是标题、关键字、和类别作为查询的条件。点击主界面最下方的新增按钮,则跳转空白的编辑界面,可以输入标题,位置(默认是GPS定位),关键字,内容等,同时还可以设置提醒和拍照视频。单击某项事件则跳转事件查询界面,主要显示标题,内容,位置,编辑的时间,设置提醒的时间等。在主界面长按某个事件弹出对话框,询问是否确定删除。总体的流程结构如图图2-1。

 

 

 

                              图2-1  系统总体结构

23  开发环境的配置

 Android开发平台搭建:

一、安装包下载

(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进行数据的存储和读取。

31  数据库系统设计

生活记事本软件首先先创建一个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) {

}

}

 

 

 

 

32  界面原型设计

   整个项目的系统功能的项目的目录结构如图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.系统代码编写

 

41  代码编写思路

1、现根据界面设计,尽量现把对应的配置文件写好,至少需要将主要的功能模块的配置文件写好,在后续的编写中也可能需要不断修改这些配置文件。思考需要使用的控件,以及找到所需要使用的UI素材。 在编写界面的配置文件时,需要仔细调整各个控件的位置,布局美观,颜色搭配等。达到界面简约,用户使用感觉顺心。

2、数据库类的编写。包括在继承数据助手类数据库的创建,以及生活记事本需要使用的数据表的创建。另外编写一个数据库的操作类。包过各个模块对数据进行的操作方法。有数据插入,更新,删除和查询方法。

3、逐渐实现生活记事本的各个模块功能。(1)先从主界面实现,主界面也只要是显示事件列表,使用listView控件。通过配置文件显示每个事件的显示信息,显示事件的标题,编辑事件,如果事件有设置提醒,则显示出一个闹钟的图片。接着编写监听事件。监听查询和新增按钮。然后监听listView事件点击事件。获得监听到的是项,单击监听事件,进入事件信息详细显示界面。重写按钮监听事件,长按弹出删除事件的确认对话框。主要实现listView的item的监听,界面的跳转,以及界面跳转的信息传递,数据库的数据查询,删除。还需要将各个方法放在适合的位置。(2)查询模块。相对于比较简单。通过配置文件显示查询界面信息,调用数据库的查询,查询的结果保存到cursor中,通过listView的适配器显示出查询的结果。(3)事件详细显示模块。该界面也是相对简单。主要也是通过配置文件,设置好需要显示信息的位置。通过从主界面通过Intent传递过来的信息取出放到对应的位置控件。还有就是返回和编辑这两个事件的监听,实现界面的跳转。(4)事件编辑模块。通过从事件显示模块传递信息到该界面,其中该界面是重复利用新增事件界面,将对应的信息先显示在对应的编辑框中。还有需要对返回,保存和更多按钮的监听。在监听到更多按钮的时候弹出一个菜单。里面继续监听提醒,照相,视频以及重要指数的事件。在监听提醒,则弹出提醒时间设置框。监听到照片和视频事件,则调用系统的照相和视频。在监听重要指数则弹出对话框设置重要指数。在监听保存按钮后,则将读取编辑修改信息更新数据库的记录。(5)事件新增模块。总体与事件编辑模块相同。不同之处在于各个输入框是设置为空的,但是位置设置默认调用地位SDK显示当前的位置。

4、将各个功能模块界面UI进行进一步修改。

 

 

42  系统主界面的实现

下面是具体实现后的界面显示。总体界面的完成于原来设计的界面基本上一样,在原来的设计上修改一些UI。在主界面显示事件列表,如图4-1。在长按某个事件后,弹出删除确认的对话框,如图4-2所示。

                 

                      

43  系统功能模块配置的实现

生活记事本的各个功能模块配置实现结果。包括查询模块,内容显示模块,新增事件模块,事件编辑模块。

查询模块中,输入在标题输入框中输入“t”后,关键字和类别为空,然后点击右上角的查询按钮后,在下方显示查询得到的结果,查询得到的结果包括两条以“title”的事件,但是它们编辑的时间是不同的,如图4-3所示。

显示模块,在单击主界面的事件列表后即可跳转到该界面。在该界面可以显示出,事件编辑的详细信息,显示事件的标题,位置,时间,关键字,重要指数,是否设置提醒和内容等主要事件信息,如图4-4所示。

新增事件模块,在点击主界面的下方新增按钮,则会跳转该界面。可以再改界面输入事件的标题,关键字,位置和内容。其中位置通过定位默认显示当前的位置,当然也可以通过修改位置信息,改成自己喜欢的位置,如图4-5所示。在需要编辑其他事件信息,则需要点击更多按钮后才会显示,包括提醒,照相,视频等,如图4-7所示。在设置提醒的时候则会弹出事件设置对话框,设置时间。弹出的对话框的时间显示为当前时间。设置提醒后会出现通知,(gvsdhsdhfdsfds)

编辑事件模块,与新增事件模块的界面使用是相同的,只是在显示前先将从现实模块对应的事件信息显示对应的编辑框中,如图4-6所示。

                         


44  模块功能流程设计

 

45 代码编写实现

 

 


 

 

 

 

 

 

参考文献:

[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_###

 

 

 

 

 

更多相关文章

  1. android之使用RxJava实现EventBus事件总线
  2. android的快捷方式——应用程序界面
  3. Android开发基础————通过内部类实现按钮点击事件
  4. android从相册中获取图片并将其显示在当前界面
  5. android 处理双击事件
  6. Android 界面设计工具 droiddraw
  7. Android事件传递流程
  8. android跳到手机home键主界面
  9. android 返回键 事件

随机推荐

  1. XML 增、删、改和查示例
  2. 效率最高的xml解析方式
  3. Python 解析 xml[xml.dom]
  4. Linux下将Tinyxml编译为静态库
  5. AJAX之xmlHttp
  6. XML与Web服务和SOA有何关联?
  7. php_xmlhttp乱码问题解决
  8. xml学习(8) xml增删改查
  9. XML Sitemap 相关问题
  10. xml学习(7) .net 获取xml节点或者属性最大