




免费预览已结束,剩余41页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门大学本科毕业论文 本科毕业论文(科研训练、毕业设计)题 目:基于J2ME平台的手机应用开发Mobile Application Development Based on J2ME Platform姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级:学 号:指导教师(校内): 职称: 指导教师(校外):黄朝宏 职称: 年 月摘要在信息社会中手机及其它无线设备越来越多地走进普通老百姓的工作和生活中。随着信息网络化的不断进展,人们不但希望手机有强大的通讯功能,也希望它还能提供其它丰富的附加应用功能。传统的手机软件存在很多弊端,而J2ME平台由于自身的特点,如今己经成为手机应用程序开发的流行平台。国内外越来越多的厂商在Sun公司、摩托罗拉、西门子等公司的技术支持下,开始开发基于J2ME平台的无线应用服务。基于J2ME平台的手机应用开发己经成为热点。本文在此背景下,开发了基于J2ME的手机端商务应用软件。首先,在当前热点二维码技术应用下,它实现了消费卡的手机绑定,使诸如会员卡、优惠卡、贵宾卡、就餐卡等消费卡集于手机软件中,且通过手机的无线上网功能使手机可实时地下载、同步或注销卡。其次,在基于J2ME的无线应用模式下,它采用客户机/服务器结构来代替基于WAP的浏览器/服务器结构,实现了特定网页浏览和交互功能。 本文首先讲述了当前手机软件的现状以及基于J2ME手机应用开发的优势,接着介绍了开发环境的架构,重点讲述了该应用开发的过程,包括了软件需求分析、概要设计、详细设计和实现细节等内容。其中在实现细节这部分涉及到J2ME主要技术应用的介绍和开发中主要问题的解决说明,包括了程序GUI界面实现,通过HTTP协议访问Internet信息,数据在移动信息设备上的存储,XML流的解析,中文编码问题的解决,QRCode编码等六个部分。最后,用截图演示了系统运行的成果。关键词:J2ME Xml MIDP 移动Web服务Abstract The mobile and the wireless devices become more and more popular with the common people in the information age. With the development of the network, people wish that the mobiles not only have the strong function of communication but also support lots of functions of extra applications. Whereas, the traditional mobile software has lots of defects, the platform of J2ME become popular with its excellence. More and more companies begin to develop the applications based on the J2ME under the support of companies like Sun, Motorola, Siemens and etc. The development of mobile applications software has being hot. Under this background, we develop J2ME-based phone-business application software. On one hand, with the use of current hot 2-D barcode technology, it achieved the combination between consumption cards and phone applications. Consumption cards, Such as membership cards, concession cards, VIP and dine card, can be integrated into the phone software. And phone can access the Internet real-time to download, synchronous or cancel consumption cards. Second, based on the J2ME Wireless Application model, this paper uses client/server architecture to browse web pages in stead of browser/server architecture based on WAP.This paper described the current status of mobile phone software and the advantages of the development of mobile phones based on J2ME application. Next, present the framework of the development environment. The paper focuses on the process of the application development, including requirements analysis, Architectural design, detail design and implementation details. At the part of implementation details, paper present the key technologies of J2ME application and the solution of the major issues, including how to design the GUI, how to access Internet through HTTP protocol, how to storage the information, how to analysis XML flow, how to solve the Chinese Code problem, and how to make QRCode. Finally, demonstration of the system results with the screenshots. Keywords: J2ME; Extensible Markup Language; Mobile information Device Profile; Mobile Web Service.43目录第一章 绪论51.1手机软件现状51.2 J2ME介绍51.3 本文应用背景介绍6第二章 开发环境及相关技术的介绍82.1 开发环境82.2 Java语言特点82.3 关于ECLIPSE92.4 关于Wireless Tool Kit92.5 Java Application Manager9第三章 手机软件功能分析103.1 客户端手机软件需求103.2 主要用例图113.2.1 移动卡夹113.2.2城市宝典113.3 数据流程图123.3.1 主流程图123.3.2 移动卡夹123.3.3 城市宝典14s第四章 系统概要设计15第五章 系统详细设计175.1 CityGuideMidlet类175.2 从卡夹列表到卡详细过程所涉及的类介绍175.3 有关二维码编码类介绍185.4 有关RMS存储类介绍19第六章 主要技术和细节实现206.1程序GUI界面实现206.1.1 MIDP用户界面介绍206.1.2界面导航设计216.2 使用HTTP连接Internet216.2.1 MIDP设备支持的HTTP协议介绍216.2.2 程序代码说明226.3 XML解析236.3.1 J2ME和XML236.3.2 XML的解析246.4 RMS的应用246.4.1 RMS 的介绍246.4.2 RMS在本系统的应用266.5中文问题的解决266.6 QRCode编码28第七章 系统演示29第八章 总结32致谢33参考文献34ContentsChapter 1 Introduction51.1 Mobile Phone Software Status51.2 Introduction of J2ME51.3 Background6Chapter 2 Development Environment and Related Technology82.1 Development Environment82.2 Characters of Java Languge82.3 About Eclipse92.4 About Wireless Tool Kit92.5 Java Application Manager9Chapte 3 Requirement Analysis103.1 Requirement 103.2 Main Cases Figure113.2.1 Mobile Card113.2.2 City Bible113.3 Data Flowchart Graphics123.3.1 Main DFG123.3.2 Mobile Card DFG123.3.3 City Bible DFG14Chapter 4 Architectural Design15Chapter 5 System Detail Design175.1 CityGuideMidlet Class175.2 CardArchiveUI and CardDetailUI175.3 Introduction of QRCode Encode Classes185.4 Introduction of RMS Classes19Chapter 6 Techonology Details206.1 System GUI206.1.1 Introduction of MIDP GUI206.1.2 Interface Navigation216.2 Connection to Internet Used HTTP216.2.1 Introduction of HTTP Prococal based on MIDP Devices216.2.2 Code Presentation226.3 XML Analysis236.3.1 J2ME and XML236.3.2 Analysis of XML246.4 RMS Application246.4.1 Introduction of RMS246.4.2 RMS Apply266.5 Solution of Chinese code266.6 QRCode Encode28Chapte 7 System Demonstration29Chapte 8 Summary32Acknowledgement33References34第一章 绪论1.1手机软件现状在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是传统手机存在以下弊端:1. 传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。2. 传统手机访问互联网是通过WAP(Wireless Application Protocol),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。而Java技术在无线应用方面的优势非常明显:1. 应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空间大。2. Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI);3. Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。基于以上分析,Java手机将是未来手机的发展方向,是业界的热点。1.2 J2ME介绍虽然 Java 已经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中。Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及JavaCard。其中J2ME定位在消费性电子产品的应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。支持Java的设备就是任何运行Java虚拟机器的计算机。Motorola、Nokia等生产厂商都生产支持Java的设备。J2ME平台是由配置(Configuration)和简表(Profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java虚拟机。简表是针对一系列设备提供的开发包集合。在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。目前,J2ME中有两个最主要的配置,分别是Connected Limited Devices Configuration(CLDC)和Connected Devices Configuration(CDC)。作为第一个面对小型设备的Java应用开发规范,CLDC是由包括Nokia,Motorola和Siemens在内的18家全球知名公司共同协商完成的。CLDC是J2ME核心配置中的一个,可以支持一个或多个profile。其目标主要面向小型的、网络连接速度慢、能源有限(主要是电池供电)且资源有限的设备,如手机、PDA等。而CDC则是主要用于运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机机顶盒 (set-top box)1.3 本文应用背景介绍手机等智能移动终端(即GPRS网络)早已经融入了我们的生活,并成为我们不可或缺的重要工具。而J2ME作为当今较为成熟的开发技术,已经大量运用于手机程序如游戏以及智能移动终端等的开发。另外,手机二维码已成为很多国家民众日常生活所不可缺少的一部分。用户只要用手机对二维码拍照,就可瞬间完成信息获取、电子交易,享受快捷的服务。在中国,手机二维码则刚刚兴起,智能手机用户的迅速增长和手机摄像头技术的进步,为中国手机二维码的发展奠定了基础。二维码给手机上网带来了新的入口,通过扫描各类条码,用户很快就能进入WAP网站,进行快速浏览。一旦3G到来,中国移动手机条码还可以为视频、网上购物、网上支付等提供方便的入口。本课题(本文)的一个方面是开发基于手机二维条码业务的应用。该应用运用了手机二维条码被动读取识别特性来开发的,即将信息存储在手机中,由二维码读取设备来识别。另一个方面是,在学习掌握成熟的J2ME技术基础上,开发下班网这一城市门户网站的手机移动终端,在一定程度上实现了人们只要一下班就可以马上寻找所需的娱乐、餐饮、休闲的等信息,而不需要在回家或者到网吧等地方去找到一台有网络连接的PC机才来查询生活信息,真正做到一个遍布各地的且可移动的城市生活门户。同时,该移动终端分为客户端以及商户端,客户端和商户端都可以从服务器上获取所需的信息,客户获取的是生活消费指南,而商户端获取的是前来消费的客户信息以便为客户提供最优质的服务。这样的移动终端就以便捷的方式拉近了客户与商户间的距离。第二章 开发环境及相关技术的介绍2.1 开发环境操作系统:Microsoft Windows 2000/XP程序语言:Java开 发 包:Java(TM) 2 Standard Edition (6.0) Sun Micro. J2ME Wireless Tool Kit 2.5IDE :Eclipse 3.2.2 + EclipseME Java语言特点1. 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。2. 安全性Java的编程类似C+,但舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。3. 面向对象Java吸收了C+面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。4. 分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。4. 健壮性Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。2.3 关于ECLIPSE Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。2.4 关于Wireless Tool KitWTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。2.5 Java Application Manager手机中负责调配程序运行资源的管理后台是Java Application Manager。它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。Java Application Manager 会从网络上下载代表该Application Suite 的JAR 档,接着在手机上安裝此MIDlet Suite,然后在手机开始执行该应用程序。第三章 手机软件功能分析3.1 客户端手机软件需求在客户端软件主要集成两项功能:移动卡夹和城市宝典。移动卡夹的思想是利用手机的无线上网来实现诸如会员卡类的消费卡的获取、管理和验证;城市宝典的目标是开发一个集成于软件的微浏览器来浏览、查询Internet信息以及提交用户信息。另外,软件还提供了一些设置功能来定制用户个人信息。下面主要介绍两个重要模块的概要实现流程:移动卡夹模块:在基于图像二维码技术的运用上,我们采用图像二维码存储用户信息,实现用户信息的验证和获取。手机扫描二维条码技术简单的说是通过手机拍照功能对二维条码进行扫描,快速获取到条码中存储的信息,进行上网、发送短信、拨号、资料交换、自动文字输入等。在设计上,主要有“新卡下载”、“卡片列表”和“二维码运用”三部分。“新卡下载”实现为每次在新的商家下载后都把卡加入到卡夹中,且每次安装新商家卡都采用覆盖安装方式,即一次下载所有卡程序并安装。“卡片列表”以滚动条方式依次列出卡图样、文字说明以及二维码,卡图样采用动画切换显示,以预防用户直接拍照的方式伪造卡。点击二维码可以直接跳转到该卡的二维码页面上。“二维码运用” 用于打开二维码,与商户端手机(带有摄像头,安装了二维条码识别软件)进行业务交易。城市宝典模块:在用户端,本质上是一个手机上的微浏览器。因为这里所需的浏览界面不多,所以我们把界面生成到软件中了。在这里,我们主要用到了J2ME的高级界面设计、低级界面设计和网络通讯功能。其概要实现流程为:手机界面上点击带查询字段的URL的命令按钮,通过无线(基于TCP/IP协议,调用HttpConnection进行http连接)连接到源数据服务器;源数据服务器返回XML文件;手机终端接受该文件的字节流,并对字节流进行XML解析生成数据结构树,反应到界面上,最终完成一次交互。交互之后用户可以获得大量的商家信息,如:商家地址、电话以及商家店址的微缩地图等。另外客户还可以通过无线连接从服务器上下载打折卡并查询个人账户信息。3.2 主要用例图3.2.1 移动卡夹 图3-1 移动卡夹用例图u 新卡下载:用户可以从服务商搜索下载到具有会员优惠性质的消费卡信息,并添加入移动卡夹列表管理中。每次安装新商家卡都采用覆盖安装方式,即一次下载所有卡程序并安装。u 移动卡夹:以滚动条方式依次列出卡图样、文字说明以及二维码,卡图样采用动画切换显示,以预防用户直接拍照的方式伪造卡。u 二维码运用: 在选择了一个卡后,可打开查看二维码,客户端对卡信息进行二维码编码,生成二维码图像,可与商户端手机(带有摄像头,安装了二维条码识别软件)进行业务交易。u 推荐朋友:通过输入朋友的手机号来完成对朋友的推荐行为。3.2.2城市宝典 图3-2 城市宝典用例图u 商家导航:根据城市地点、消费类型、商家类型罗列出商家列表,选择查看商家详细信息。如:商家地址、电话以及商家店址的微缩地图等。u 热点搜索:可根据有关关键字搜索到相应的商家并进行查看商家详细信息。u 用户点评:用户能够对商家进行点评,并反馈到服务器。3.3 数据流程图3.3.1 主流程图 如图3-3所示,在进入主界面之前,用户有个登录的过程,不过这个登录过程可以被用户定制为自动登录或者用户可以脱机登录。在装载主程序类时,用户可以从RMS中读出相关信息来初始化用户设置(Setting)。进入主界面后,用户可以有多种服务选择:移动卡夹功能,完成对手机端商用卡信息的获取、管理、同步以及注销;城市宝典功能,可以让用户查看到所需的商家信息,并可以对其点评;用户设置功能,完成对用户个性化的设置。值得注意的是,用户在处于脱机模式下完成需要验证的无线应用时,功能界面导航器将转向用户注册或登录模块。最后,用户结束应用时,系统必须在销毁之前完成对诸如用户定制信息、卡夹列表信息的持久性保存。图3-3 主流程图3.3.2 移动卡夹主界面中选择了移动卡夹功能,系统默认进入卡列表界面。在该模块中,主要完成的功能包括对卡信息的浏览、查看、搜索下载和同步更新,以及把卡推荐给朋友。图3-4是该模块中的流程图。当选择查看卡的详细信息时,用户可以查看到卡的基本信息和卡的状态描述,其中卡的基本信息包括卡号、名称、所属类、商家、LogoURL、折扣信息等,卡的状态描述包括卡是否激活和用户消费的信息等。当用户需要与商务端手机进行在线交易时,用户只需要从卡详细界面中调出由卡信息生成的二维码,即可完成商务端手机拍照完成交易。另外一个主要功能图是完成卡的获得、更新和注销。用户可以通过搜索来获取有关消费卡的信息,然后可以通过申请卡、卡激活和卡同步来下载并安装最新的卡,当然用户同样可注销卡。还有个功能是通过输入朋友手机完成对本系统的推荐。 图3-4移动卡夹模块流程图3.3.3 城市宝典系统主界面中选择了城市宝典功能,系统将进入城市宝典界面。在该界面中用户可通过商家导航、商户搜索和城市热点等多种方式来查看到某商家的详细信息,包括商家名称、电话、地址、交通路线、附近地标、地理位置、营业时间、促销信息、用户点评等众多信息。如图3-5所示,从城市宝典到ShopDetailUI主要有三中流图。在ShopDetailUI中,用户可以点击来查看商家地图或可对该商家进行在线点评。图3-5 城市宝典模块流程图第四章 系统概要设计 通过对应用背景的需求分析以及对上面的数据流程图应用过程分析,我们可以明确系统主体设计将主要体现在以下几个方面:1. GUI界面设计,这里有两个主要点,一个是单个屏幕界面的设计,通过对MIDP图形应用的学习,我们知道手机用户界面可以通过高级界面接口和低级界面实现;另一主要点是完成对手机界面导航。2. Http网络连接,利用URL进行无线网络连接,通过开启线程的方式完成数据的上传和获取,其中下载的数据将以XML的形式表示。3. XML流解析,在MIDP环境下运行的XML解析器需要代码体积小巧、占用内存少、运行速度迅速等特点。4. RMS存储,主要完成手机应用中某些需要保留的数据的持久性存储。5. 二维码编码,实现对用户移动卡信息的二维码图像生成。本着面向对象的思想,本应用对数据将采用对象实体来描述。另外,在脱机上网的概念下,可以使用户在没有必要上网的情况下,实现脱机操作,节省用户的手机上网费用。为了实现这点,程序增加了一个验证模块,在用户需要完成无线上网验证时,进行同步用户的有效信息。基于以上的分析,我们对系统进行了模块划分,主要有六大部分,分别是界面、网络连接、XML解析、数据实体、RMS存储和二维码编码。图4-1是各模块间协作的统一框架图设计。图4-1系统总体框图作为手机客户端,担负着手机处理流程的调度、收集客户输入信息、与服务器建立并保持连接、回写经服务器处理的信息、以及控制客户与手机屏幕交互的任务。结合图4-1中各模块协作关系的分析,为了实现界面导航与网络数据连接的驱动关系,在界面类中添加一种具有数据消费功能的方法。另外,这里我们将用到的解析器是专门针对J2ME(CLDC和MIDP)平台编写的KXML解析器。其特点是需要对不同结构的XML数据流专门生成个解析类。下面是各个模块的类结构说明:1. DataConsumer接口,抽象出UI包中界面类的数据消费方法。2. ParserEnable接口,抽象出parser包中解析类的解析方法。3. RmsEnable接口,抽象出entity包中实体类的数据库操作方法。4. UI包,系统应用完成与用户交互的类集合。5. parser包,对应用中所有下载XML数据流的结构解析的类集合。6. entity包,描述了系统中数据对象的类集合。7. HttpHelper类,是一个上网连接线程,它依赖于一个解析类和界面类,从而实现了界面、网络连接、XML解析和数据实体几个模块的联系。8. qr包,是一个二维码图像生成模块。这些类之间的关系如图4-2所示。图4-2系统总体类图第五章 系统详细设计5.1 CityGuideMidlet类图5-1 CityGuideMidlet 类图CityGuideMidlet类是系统的中心类。为系统的初始化、启动、暂停、界面调度、销毁、获取系统信息等提供方法。5.2 从卡夹列表到卡详细过程所涉及的类介绍图5-2 从CardArchiveUI导向CardDetailUI所涉及的类图 图5-2所示的从CardArchiveUI导向CardDetailUI所涉及的类协作图,它可以作为本系统一个重要应用的缩影,本系统的大多应用过程就是基于这种类关系模式的。具体来说这个过程为:一个界面对象在监听到界面事件时,commandAction方法中开启HttpHelper网上连接线程,并设置URL、解析器对象和数据消费对象三个参数,其中,数据消费对象一般就是一个实现了DataConsumer接口的界面类对象,而解析器对象是一个是实现了ParseEnable接口的特定解析类对象;HttpHelper线程利用URL打开一个连接并生成一个会话流,把会话流获得的输入流传递给解析类对象;解析类对象调用KxmlParser模块工具XML输入流解析成特定结构的实体数据对象,并把这个实体数据对象封装传递给上面所说的数据消费对象;数据消费对象中方法consumer( )解封出实体数据对象,并对它进行显示等处理。结合图5-2中的具体类,得到下面的对应关系:1. CardArchiveUI,开启Http连接的界面类;2. HttpHelper,实现了Http协议连接线程类;3. CardDetailParser,解析器类;4. UserCard,实体数据类;5. CardDetailUI,数据消费类。图5-2作为一个应用部分和一个缩影,其中的各个类都具有代表性。CardArchiveUI代表的是有网络应用需求的界面类;CardDetailUI代表的是完成对网络应用的结果显示类;CardDetailParser代表的是在一次特定的网络响应过程中XML数据流的解析类。5.3 有关二维码编码类介绍图5-3 CodeDisplayUI与Qrcode类协作图 CodeDisplayUI对“显示二维码”按钮响应调用QRCodeGenerator生成二维码图像。Qrcode是主要二维码编码的类,在这个类中主要的参数有编码模式、版本、纠错等级等。5.4 有关RMS存储类介绍图5-4 Setting类和RecordStore类的协作图在系统分析中,我们分析了RMS持久性存储对于优化系统的好处并建议把系统用户设置和一些卡夹信息实现持久性。下面就是对用户设置信息的RMS存储所涉及的类的介绍。Setting是实现了RmsEnable接口的类,其重载的两个方法getData()和setData( )方法中的参数类型都是DataStream类型。DBHelper是完成Setting类数据库存储和读取的类。一方面,它调用Setting类getData()获得InputStream,然后把这个流转化成byte,写入RecordStore;另一方面,它读出RecordStore的数据并把byte转化成OutputStream流,调用Setting类setData()初始化一个Setting对象。第六章 主要技术和细节实现6.1程序GUI界面实现6.1.1 MIDP用户界面介绍MIDP用户界面类库的核心是屏幕对象。屏幕对象从技术实现上来讲就是一个Display对象,它的任务是进行用户界面的管理,负责与底层的Java应用程序管理器进行交互。每个MIDP应用程序都会由系统产生唯一的一个Display实例,在其上显示单一的屏幕,应用程序根据用户的交互在Display上放置和重画当前的显示内容。在显示屏上直接显示的内容是Displayable对象,通过调用Display的类方法setCurrent(Displayable)使一个Displayable可见。一个MIDP应用程序可以有多个Displayable实例,但同一时刻只能有一个Displayable实例被Display对象设置成可见的,这个可见的Displayable对象被称为当前的Displayable对象。从Displayable分出两个分支:Screen和Canvas。前者是高级图形用户界面的超类,后者是低级图形用户界面的超类。高级的用户界面API主要用于业务处理应用程序,对于这些应用程序来说,跨设备的移植性非常重要,为了达到这种高可移植性,高级的用户界面API进行了高层次的抽象,但缺点是对图像感观的控制很少,比如对控件的外形、颜色、线条、位置等等的控制都很有局限性。低级的用户界面API主要用于对显示屏进行精确控制的应用程序,比如精确的定位、控件的各种显示属性以及接收低级输入事件等,甚至可以访问特殊的、与设备相关的功能。缺点是实现起来具有一定的复杂性,并且可移植性较差。使用低级用户界面的API,用户在程序中实现如下操作:n 完全控制在显示屏上绘制什么。n 监听设备的原始事件,比如按键的按下和释放。n 直接访问物理按键和其它输入设备。类Canvas和Graphics的组合实现了低级用户界面API,允许应用程序在屏幕上进行复杂的控制。Graphics类提供了在Canvas对象上画线、矩形、圆弧、文本和图像的各种方法,利用这些基本的方面,我们就可以实现各种图像控件的绘制。Canvas类扩展了Displayable类,提供了显示界面和事件处理能力。6.1.2界面导航设计 系统与用户的交互表现为手机屏幕的切换,而手机的每一个屏幕在本系统中被设计封装成一个类,所有与屏幕有关的属性包括屏幕上的UI元素、屏幕中的命令菜单、屏幕中获取消息的存储等均以特定屏幕对象的方式体现,因此,界面的设计与后台对象的生成和调用相统一。手机界面在屏幕切换时,通过生成特定类的对象,生成新的页面,再通过调用display.setCurrent()方法,以所需页面对像为参数,切换到指定页面。手机屏幕切换的条件对应于用户的输入。 图6-1是城市宝典模块有关的界面导航图。 图6-1 城市宝典界面导航图6.2 使用HTTP连接Internet6.2.1 MIDP设备支持的HTTP协议介绍HTTP协议是Internet上被广泛使用的传输协议,并且具有灵活和易于实现的特性。HTTP协议可以利用大量的服务器端的基础设施,这些设施已经因为有线网络而存在。另外,HTTP传输是同步的,也就是说,没有被请求的包不会到达MIDP设备,这使得MIDP设备实现网络接口变得非常简单。因此,HTTP协议被选为MIDP设备上的传输协议,并且在MIDP标准中作为一种连接类型被实现。目前,所有的支持Java的移动信息设备都提供了对HTTP协议的支持,但是由于小型消费类和嵌入式设备的内存资源有限,在这些小型设备中并没有内置基于HTTP的浏览器,MIDP只是提供了针对HTTP协议的编程接口。这就需要开发者熟悉HTTP协议的工作原理,服务的可用性和位置,还有怎样对请求进行编码和对响应进行解码。开发MIDP应用程序,要注意的很重要一点是许多有关网络和通信API的调用都是要花费大量CPU计算时间并且可能会阻塞主线程的。所以在设计时,要避免在用户界面动作的响应函数中,直接调用含有要花费大量计算时间的网络动作的回调函数。6.2.2 程序代码说明1、在Connector.open()之中使用http当做通讯协议。如果Connector.open()与Web服务器连接成功,Connector.open()会传回被向上转型之后的Connection对象。为了以后使用的方便我们必须将它转型为HttpConnection类。程序中代码为:/ 打开连接 HttpConnection conn = (HttpConnection) Connector.open(url);2、HTTP协议提供了丰富的请求头标类型,使MIDlet设备可以和HTTP服务器就发送和接收内容的形式、格式、语言、会话和其它的属性进行协商。MIDlet负责选择并使用适合的请求头标,并处理返回的响应头标。程序中代码为:/ 设置为GET的请求 conn.setRequestMethod(HttpConnection.GET);/ 取得发送请求后的HTTP的返回码/ 只有HTTP_OK(200)表示所求的内容正确返回 int status = c.getResponseCode(); if ( status != HttpConnection.HTTP_OK ) throw new IOExceptionL(“Response code not OK”); else / 其它处理 3、利用HttpConnection的openInputStream()开启输入数据流,如此才能取得Web服务器所回传的数据。程序中代码为:/ 打开输入流is = conn.openInputStream();6.3 XML解析6.3.1 J2ME和XML尽管Java有着十分美好的前景,但是由于实际上的各种原因,Java到目前还并没有达到人们期望中的那样成功,而且还没有广泛地应用到商业开发和计算工具。Java试图从统一计算平台的角度来实现互操作,但真正能够互操作,只能是标准和通用的数据描述语言它就是XML 。XML更适合开放的信息管理。事实上,Java是XML的理想伙伴。分开来讲,两种技术都很好,但都有各自的局限性。Java要求开发者自行安排网络数据格式及其表示格式,并要求使用类似JSP这样并不真正分离内容层与表示层的技术。而XML只是元数据,如果脱离了类似解析器和XSL处理器这样的程序,也就没有用了。Java使浏览器工作时就像在通用的应用平台上,而平台与平台之间却是独立的。但固定的tag集合和HTML语义无法表现,故数据元素中丰富的信息得不到一种统一的表示。XML却能完全胜任这份工作。XML极力承诺:凡是Java能为代码提供的方便性,XML都可以为数据提供。HTML页面要依赖网络服务器上的CGI脚本来表现几乎每一个编程函数,这显然使服务器工作量太大。有了XML和Java的结合,更多的应用软件处理起来将不占用太多的网络通信量。这使得网络更如快捷,客户可以同时应用多个应用软件。这样,XML使得Java真正有了用武之地。编写Java代码可以保证带有Java虚拟机的操作系统和硬件能运行己编译经过的解释代码。这一点增加了在可独立于系统的标准化数据层描述输入输出的能力,并使数据真正成为可移植的。同时,这样的应用程序也将是完全可移植的,并且使用相同标准和其他任何应用程序交流。Java己经提供了一套强大的API、解析器、发布框以及供XML使用的其他编程工具,保证这两门技术能有效地结合到一起。XML和Java技术有许多互补的特性,两者的结合将形成一个强大的数据共享和处理的平台。一方面,XML能以一种开放而中立的方式定义数据和文档,当然还需要开发那些能处理这些数据或文档的应用;另一方面,Java平台提供了一个统一的计算环境,特别是Java代码能通过网络下载到任何一个JVM上。而且XML与Java技术结合基于它们固有的协作性,因此当Java和XML结合使用时,完全可以弥补现在应用程序发展的不足。6.3.2 XML的解析在J2ME应用程序中,我们可以使用XML解析器来访问网络上的基于XML的服务。比如,我们可以通过一个网站的聚合器来定制地显示某些新闻的标题和内容简介,这些内容的传递都是基于XML的服务。 XML解析器的是用目前来说是十分昂贵的,它需要比较大的内存以及更多的运算时间要求。为了适应在MIDP环境下运行,XML解析器的设计,将需要特别为资源受限制的移动设备进行定制化处理。在MIDP环境下运行的XML解析器需要代码体积小巧、占用内存少、运行速度迅速等特点。 两种常用的使用在资源受限设备上的XML解析器分别是kXML和NanoXML。kXML是专门针对J2ME(CLDC和MIDP)平台编写的XML解析器。而NanoXML,自从1.6.8 for MIDP版本之后,也支持了DOM解析。 在JSR172 Web服务API规范中也有一个XML解析器,也可以用来作为上述两个解析器的替代品,JSR172所附带的XML解析器的好处是,我们不需要在每一个MIDlet中内置一个XML解析器。这个JSR172规范已经在S60平台第三版和S40第三版功能包以及更新的设备上实现。 6.4 RMS的应用6.4.1 RMS 的介绍为了实现MIDP设备上数据的永久存储和访问,MIDP规范为MIDlet提供了一种机制记录管理系统(Record Management System, RMS ),它是一个简单的面向记录的数据库模型。RMS记录存储的结构如图6-2所示。一个记录存储就是一组记录,这些记录对于一个MIDIet的多个调用来说是固定的。每个记录是一个字节数组。记录存储中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46096.2-2025船舶与海洋技术压载水管理系统第2部分:电解法压载水管理系统的风险评估与风险减小
- 养护安全培训主持词课件
- 化工企业青工安全培训课件
- 别董大课件-图文
- 养好小金鱼课件
- 初级辐射安全防护培训课件
- 初小衔接文言文课件
- 化工DCS仪表安全培训课件
- 初升高英语标课件
- 初六收心早会课件
- 粉尘涉爆安全培训考试题及答案
- 力量国际礼仪培训课件
- 危化品经营安全培训管理课件
- 交通安全应急处置预案公司
- 工商业分布式屋顶光伏项目投资分析
- 用户侧储能系统调度平台创新创业项目商业计划书
- 药厂生产管理培训课件
- 2021-2025年高考地理真题知识点分类汇编之地球的运动
- 2025海南国考时政试题及答案
- 2023-瑞幸咖啡vi手册
- 高中必修人教A版高中数学必修1指数函数一 完整版课件PPT
评论
0/150
提交评论