您的当前位置:首页基于android的电子商务系统

基于android的电子商务系统

来源:乌哈旅游
 摘要:

本文主要描述的是基于android的电子商务系统的介绍,开始简单了介绍了这个电子商务系统的作用和安卓客户端的大致情况,接着对一些常用技术做了详细的分析和比较,最后对安卓的发展趋势做了简单描述。 关键词:

android TCP/IP协议 JAVA JDBC GPS XML 1.引言:

Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的IOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2011年11月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为58%。

2. 安卓客户端的原理和应用 在安卓系统客户端(通常是手机端)安装应用,将应用作为人机交互的平台,通过应用来进行一系列的操作,程序中会调用安卓系统自带的GPS定位得到用户当前所在位置的经纬度,在用户进行查询附近的商家的时候,将经纬度与商家的经纬度对比来计算出附近商家的位置。访问后台方面应用了HTTP协议,将所需信息包含在地址中,服务器端接受到相关信息进行分析从而把相关的数据反馈给用户。

3. 安卓客户端项目技术详细 3.1 GPS定位

安卓的定位方式相对来说比较简单,目前我们可以使用位置管理器和位置提供者进行getLocation的调用。这个方法返回本机的当前位置的一个快照,这个快照将以Location对象形式提供。在手持设备中,我们可以获得当前位置的经度和纬度。这样就完成了自己位置的确定,如果需要查看自己所在的位置的话还需要调用一个地图的API比如GoogleMap。调用之后就可以在地图显示自己的位置了。

在本次的项目中主要用到的就是当前的经度和纬度,在查看我们周边商家的信息的时候,将当前的经度纬度发送到后台,计算出距离自己最近的商家,并且按照距离来展示出周边的详细情况。

3.2 安卓自带关系型数据库SQLite

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

在安卓中有一个很好的辅助类SQLiteOpenHelper,其简化了数据库的操作。按照Android SDK文档中的说明,也可以通过继承此类、改写其接口的方法来实现对数据库的操作,SQLiteOpenHelper。另外还有2个数据结构: ContentValues,Cursor;ContentValues就相当于C++中的map[(String key, Integer value)],

其主要接口包括put(),get()。再结合insert操作的主要目的:按照表中数据段将对应的数据项写入到表中,就可以看出来ContentValues主要是存放表中每个表的数据段,以及其对应的值。Cursor也就是前面说的:查询结果的记录集。从记录集的特征可以想到其包含的操作应该有:MoveFirst()、MoveLast()、MoveNext()、Move()、IsLast()、GetColumns()等,而且它还是个抽象类[abstract class],SQLiteCursor就是其具体的实现。关于SQLiteDatabase类,其他值得关注的函数是:Create()、execSQL()。至于其他的函数,比如beginTransaction(),endTransaction()等关于数据库同步操作的函数,就只有在使用的过程中深入了解。

第3/10页

上页下页

原工学院毕业设计(论文) “文献综述”专用纸 第4页 3.3 JDBC

项目的后台用tomcat作为服务器,用MySql作为数据库,因此JDBC技术就是不可或缺的了,JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。 JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。

3.4 解析XML文件

1)DOM(JAXP Crimson解析器)

DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。

DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。

2)SAX

SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。选择DOM还是选择SAX? 对于需要自己编写代码来处理XML文档的开发人员来说, 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用 navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag.特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工

基于Android的手机系统助手软件的实现 1. 引言

随着手机的普及以及手机应用的深入人心,近几年“智能手机”成为了人们关注的话题。在现今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android的开源智能手机操作系统。Android凭借其开放性和良好的人机界面,受到广大手机生产商的重视。

Android是基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,而且不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。[1]

从Android的从业角度分析,Android的开发概括为两类:一是系统开发,包括低层linux内核的裁剪和扩展,硬件驱动的开发和系统移植等,从业人员主要工作在硬件厂商的公司里:而是应用开发,主要包括游戏开发、Android互联网客户端开发和工具软件开发等。随着用户群体的不断壮大,Android系统有望成为手机操作系统的“Windows”所以Android应用开发应用需求将非常大。[2] 2. 研究背景

2.1 Android的前世今生

Android平台是开放手机联盟为创造一代更好的移动电话而合作开发的产品。该联盟由谷歌领导,成员包括移动运营商,手机设备制造商,元件制造商,软件解决方案和平台供应商以及销售商。从软件开发的角度,机器人立足于开源世界。

市场上第一款基于Android系统的手机G1由HTC制造并供应给T - Mobile用于销售。然而,该设备从放出风声到真正发布,用了大概一年的时间,因为发布的sdk补丁累计了一年才使唯一的软件开发工具变得可用。随着G1发布日期的临近,Android团队发布了SDK1.0,为新的平台而设计的应用也开始浮出水面。

为了鼓励创新,谷歌赞助了两轮“Android开发者挑战大赛”,并提供了数百万美元的奖励。在G1发布后的几个月,谷歌发布了Android市场,它允许用户直接在自己的手机上浏览和下载应用程序。大约过了18个月,一个新的移动平

第1/7页

台进入了公众的视野。[3] 2.2 Android简介

Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance开发。它采用了软件堆层software stack,又名以软件叠层的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。[4] 2.3 Android开发工具

Android的上层应用程序是用Java语言开发的,同时需要基于Dalvik虚拟机,所以Google公司推荐使用主流的Java继承开发环境 Eclipse。有了Eclipse还不够,因为使用Java语言进行开发,应该有由SUN公司提供的Java SDK,其中包含了JRE:Java Runtime Environment。另外,

Android的应用程序开发还是和Java开发有一定区别,所以还需有一个Google提供的Android SDK。[5] 2.4 Android应用程序特点

Android系统是一个强大的智能机系统,与之相适应的硬件也一般具备相对较高的性能。总结起来,Android系统上的应用程序具有以下一些特点:

1.功能强大。Android平台的设备一般都具备较强的运算能力、存储空间、网络功能以及各种各样的传感器。

2.可复用性强。Android的应用程序由许多Activity组成,不同的Activity在程序中实现不同的功能模块。而最令人赞叹的就是,得益于Android的良好设计,不同应用程序之间的Activity可以实现共享(可以通过安全选项进行配置)。这就实现了良好的复用性。[6]

3.开放程度高。“开放”是Android的设计宗旨之一,开发人员可以自己编写程序替代系统中原有的程序,甚至连拨号、短信、主屏幕这样的核心功能都可以由第三方开发人员的程序替代。

第2/7页

3. Android上的应用程序开发概要 3.1 Android应用程序的组成部分

Android 有丰富的功能,是一个分层的环境,构建在 Linux 内核的基础上,包括丰富的功能。

Android 应用程序是用 Java 编程语言编写的,它们在Dalvik虚拟机中运行。每个 Android 应用程序都占用Dalvik VM 的一个实例,这个实例驻留在一个由 Linux 内核管理的进程中。

Android应用程序是由Android体系结构定义的四个基本组成部分类型构成,: 1. Activities 活动

这些都是在台式机媲美独立的系统,如办公应用软件。Activities是实时可执行代码,当用户或操作系统和运行需要时即被实体化。他们可以通过其他Activities或通过查询或意图服务与用户交互和请求数据。Android的大多数可执行代码将执行写在一个活动的环境中。活动通常对应显示屏:每个活动显示一个屏幕给用户。当它运行的不积极,活动可以结束运行的系统来节省内存。 2. Services服务

与桌面和服务器操作系统守护进程相似。服务组件在后台运行,直到手机关机。他们一般不公开用户界面。

MP3播放器是一个服务的典型例子,需要一直处理等待处理的的文件,甚至当用户已经在使用其他应用程序。即使没有一个用户界面仍然存在,应用程序可能需要实现服务来执行。

3. Broadcast and Intent Receivers广播接收机和意图

这些服务请求的响应另一个应用程序。一个广播接收机响应一个事件。这些广播可能来自Android本身(如电池低),或从任何在系统上运行的程序。一项活动或服务提供了访问其功能的接口是通过执行一个

意图接收器,一段响应数据或其他活动的服务要求的可执行代码。广播接收器会自动地启动应用程序来响应某个到来的Intent,这个特点使它们成为了事件驱动的程序的最佳选择。

意图,一个简单的消息传递框架。使用Intent,可以在系统范围内向目标活动或者服务广播消息,以说明希望执行某个动作的意图。之后系统就会确定那些最适合执行动作的目标。 4. Content providers内容提供程序

一个可共享的数据仓库。每一个内容提供器都开放一个唯一公共URI(由

第3/7页

URI封装)。。例如,当应用程序发出一个通讯录数据的查询,它涉及到一个URI查询的形式: 内容:/ /联系方式/人

该操作系统查询内容提供者给定的URI,并发送请求到相应的应用程序(如果尚未运行,启动应用程序)。如果有多个内容提供商请求的URI登记,系统会询问用户哪一个是想要的。

应用程序不必使用所有的Android组件,但是一个好的应用程序会使用所提供的机制,而不是硬编码重塑功能或引用其他应用程序。 URI和意向一起让Android提供了非常灵活的用户环境。应用程序可以很容易地添加,删除和取代意图而URI使其联系在一起工作。[7] Android 应用程序是连同一个 AndroidManifest.xml 文件一起部署到设备的。AndroidManifest.xml 包含必要的配置信息,以便将它适当地

安装到设备。它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。例如,如果应用程序需要访问网络如为了下载一个文件, 那么 manifest 文件中必须显式地列出该许可。这种显式声明有助于减少恶意应用程序损害设备的可能性。 3.2 存储和返回数据

Android提供了很多种类的存储机制以及网络服务。在Andriod应用程序中有几种不同读写数据的方法。可以根据需求选择。

在Android中,所有的应用程序资源对自身而言是私有的,但是并不是说,其它程序就无法与之共享数据了。在Android中,可以通过提供一个标准的方法来使得其他的应用程序访问这些私有的数据,那就是ContentProvider。除了这一种方法,还有其它的方法也可以使用,例如Prefrences、Files、Databases、Network等。完全可以根据开发人员的需求来作选择。[8] 3.3 安全模式

在Android中,为了使用应用程序更加地安全,Android增加了安全模型来操作资源和数据的特征,这是通过权限设置来决定的。Android是一个多进程系统,在此之中,每个应用程序都在自己的进程中运行。大多数的应用程序之间的安全模式设置和标准的Linux系统相一致,例如给各个应用程序分配不同的UID。 [9]

第4/7页

3.4 Andriod中的安全架构

Android安全结构的一个中心设计思想是,在默认情况下,没有任何应用程序可以对其他的应用程序、其他的用户进行操作。一个应用程序的进程就是一个安全的沙盒,它不会打扰其他的应用程序。它所要请求获得的权限在安装时用户就可以知晓,并且安装之后程序也无法改变自己的权限。[10]

3.5 Android Binder 总结

Android IPC系统的整个架构如上图所示,分为4大块: 1. Binder驱动

它是IPC系统的核心。它在Serivce提供者与Service使用者之间传递数据

2. Service提供者(Service Provider)

它提供某种服务。它解析从Binder驱动发过来的RPC数据并且执行真正的动作

3.Service管理器(Service Manager)

它是一个特殊的Service提供者。它为其它Service提供者提供Service管理服务。

4. Service使用者(Service User)

它远程调用Service提供者。它生成RPC数据并且发送到Binder驱动。[11]

3.6 资源和i18n(国际化)

Android中也提供了应用程序资源管理系统,这些资源通常包括图像,字符串,以及XML布局文件等等。这些资源在编译期间会以不同形式

被编译到应用程序中。例如XML文件会被编译成一个二进制代码,String

被压入一个更加有效率的存储表格中。通过对不同语种的String资源分别管理,就可以很方便地实现i18n。[12] 4.总结

Android市场尚在培育和发展中,在政策、厂商、消费者、开发者的共同努力下,围绕着Android的生态圈将逐渐成型并进入良性循环阶段,对它关注得越早,就越有可能在将来抢得先机。 5

因篇幅问题不能全部显示,请点此查看更多更全内容