兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现
3.2.1应用程序(APPLICATIONS)
Android平台默认包含了一系列核心应用程序,包括电子邮件、短信、日历、地图、浏览器、联系人管理程序等,这些程序都以java 程序语言编写,你也可以用自己便携的应用程序来替换Android提供的应用程序,这个替换的机制实际是由应用程序框架来保证的。如图3.2所示。
图3.2 应用层
3.2.2应用程序框架(APPLICATION FRAMEWORK)
应用程序框架是我们进行Android开发的基础应用程序框架层包含了视图系统,内容提供器,窗口管理器,活动管理器,通知管理器,位置管理器,资源管理器,电话管理器和包管理器9大部分。如图3.3所示。
图3.3 中间件层
3.2.3Android 运行时(RUNTIME)
Android 虽然采取Java程序语言来编写应用程序,但不使用J2ME执行Java程序,而是用Android自有的Android运行时(RunTime).Android 运行时包括核心库和Dalvik虚拟机两部分。如图3.4所示。
图3.4 核心库,虚拟机
3.2.4系统库(LIBRARIES)
应用程序框架是贴近于应用程序的软件组件服务,而更底层则是Android的函数库,这一部分是应用程序框架的支撑,其架构如图3.5所示。
5
兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现
图3.5系统库
3.2.5 Linux
Android平台是开放,采用Linux内核则是Android平台开放性的基础。Android平台中的操作系统采用了Linux2.6版的内核,它包括了显示驱动、摄像头驱动、Flash内存驱动、Binder(IPC)驱动、键盘驱动、wifi驱动、Audio驱动以及电源管理部分。
Linux内核层为我们在软件层和硬件层建立了一个抽象层,使得应用程序开发人员无需关心硬件细节。对于手机的开发商而言,如果想要Android平台运行到自己的硬件平台上就必须通过对Linux层进行修改,通常要做的工作就是为自己的硬件便携驱动程序。 3.2.6SQLite简介
Android数据库使用的是SQLiteDatabase。
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款世界著名开源的数据库管理系统来讲,它的处理速度比他们都快。
6
兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现
第四章 客户端详细设计
4.1客户端描述
“每日一句”客户端的功能是对数据库里面的数据进行相关的操作,创建桌面插件等功能,所以以下主要介绍客户端数据库的设计和客户端相关界面的设计。
4.2客户端数据库的实现
该软件数据库的建立是完全在Android平台上执行Java代码,通过DVM编译来建立的,没有什么辅助工具,由于整个SQLite数据库是非可视化操作,所有对数据库的操作都是通过执行Java代码实现,在完成其查询功能的时候没有使用数据库高级编程,较为麻烦的关节是在如何有机的将客户端数据库整体结构实现出来,实现过程是无可视界面,也没有数据库辅助工具情况下,整个过程很抽象。所以表的设计应尽量简单,不要有错综复杂的关系,因为每张表都是独立的,不存在任何约束,所以数据库也是独立数据库,不采用Android特有的可共享数据库。
4.2.1数据库设计
客户端数据库E-R关系图如3.1所示:
图3.1 客户端数据库E-R关系图
7
ID 名人名言的注名人名言 添加的时间 兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现
根据上面的E-R图,本软件客户端定义的note数据库中包含以下1张表:内容表:note,本软件客户端数据库表的描述如表3.6:
表3.6本软件客户端数据库表的描述
字段名 noteId noteName noteTime noteContent
category
数据类型 Integer varchar varchar varchar Integer
长度
主键/外键
默认值
描述 ID,自动赋值
名人名言 修改,添加时间 注释 标识状态符
Pk
20 20 400
1
4.2.2客户端数据库操作
SqliteDBConnect类是创建数据库的类,onCreate()方法是创建note表的方法,SQLManage类是数据库的管理类,Insert()方法是添加数据的方法,saveNote()是修改数据的方法,returnTime()是获取系统当前时间的方法,blruSearch()是模糊查询的方法。
SqliteDBConnect类代码如下:
public class SqliteDBConnect extends SQLiteOpenHelper { public SqliteDBConnect(Context context) { super(context, \ }
@Override
public void onCreate(SQLiteDatabase db) { db.execSQL(\table note(noteId Integer primary key,noteName varchar(20),noteTime varchar(20),noteContent varchar(400),category Integer)\
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
SQLManage类实现了对数据库进行插入、查询、更新和获取系统当前时间等功能。具体的代码如下:
8
兰州大学本科生毕业论文 基于android平台“每日一句”应用的设计与实现
public class SQLManage extends Activity{
/*
* 数据管理类 * */
//执行插入数据的操作
public void Insert(SQLiteDatabase sqlDB,String name,String content,String time,int category)
{ ContentValues cv=new ContentValues(); cv.put(\ cv.put(\ cv.put(\ cv.put(\ sqlDB.insert(\ sqlDB.close(); }
//执行数据修改更新的操作
public void saveNote(SQLiteDatabase sdb,String name,String content,String noteId,String time,int category){
ContentValues cv=new ContentValues(); cv.put(\ cv.put(\ cv.put(\ cv.put(\ sdb.update(\ sdb.close(); }
//返回当前系统时间
public String returnTime(){ TimeZone.setDefault(TimeZone.getTimeZone(\修改默认时区
Date d=new Date(System.currentTimeMillis()); SimpleDateFormat sdf=new SimpleDateFormat(\HH:mm:ss\
String time=sdf.format(d); return time; }
9