基于J2ME平台的手机天气预报程序的设计与实现毕业设计论文.docx
《基于J2ME平台的手机天气预报程序的设计与实现毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于J2ME平台的手机天气预报程序的设计与实现毕业设计论文.docx(40页珍藏版)》请在冰点文库上搜索。
基于J2ME平台的手机天气预报程序的设计与实现毕业设计论文
基于J2ME平台的手机天气预报程序的设计与实现
基于J2ME平台的手机天气预报程序的设计与实现
摘要
随着移动通信业的突飞猛进,移动开发这个新鲜的字眼慢慢成为开发者关注的热点。
最近一份在网上进行的调查显示,有24.34%的受访者涉足嵌入式/移动设备应用开发,这个数字可能略高于实际的比例,但也足以说明嵌入式/移动设备应用开发是一块诱人的新鲜奶酪。
J2ME(Java2MicroEdition)是嵌入式/移动应用平台的王者,Linux和WinCE分列二、三位。
Nokia等厂商力推的Symbian平台目前开发者占有率尚未达到满意水平,考虑到调查项合并了嵌入式设备(例如PDA)和移动设备(例如智能手机),Symbian、WinCE系列在移动平台上会是与J2ME主要竞争对手。
如果厂商能在标准实现上做得更加规范,则J2ME的跨平台特性会发挥得更加淋漓尽致。
本文主要讨论了在J2ME平台下,如何开发一个具备连接网络、解析数据、存储城市功能的天气预报程序。
论文首先介绍了J2ME平台的特点、历史,进而引出在此平台下开发一个天气预报软件的构想,并对其进行了可行性分析。
接着进行了的系统设计,从多个方面分析了如何实现本程序的具体细节,如分别详细分析了网络连接、数据获取、数据解析、数据视图呈现、数据存储等模块实现方法。
最后对系统进行了实现。
系统的运行情况良好,完全达到了设计的要求。
【关键词】J2ME嵌入式开发移动开发嵌入式设备天气预报
J2MEPlatformBasedDesignandRealizationofWeatherForecastProgramonMobilePhone
Abstract
Withtherapiddevelopmentofmobilecommunication,mobiledevelopinghasgraduallybecomeahotspotconcernedbydevelopers.Arecentonlinesurveyshowsthatthereare24.34percentofrespondentswhoengageintheinvestigationordevelopmentonembedded/mobiledevice.Althoughthisfiguremightbeslightlyhigherthanactualthat,itcanenoughprovethatembedded/mobiledeviceapplicationisacaptivatingfreshcheese.J2ME(Java2MicroEdition)retainstopspotontheembedded/mobileplatform,whileLinuxisinsecondplace,andWinCENo.3.threepersons.Developer'soccupationrateofSymbianplatformdevelopedandtriedhardtorecommendbyNokiahasnotreachedthesatisfactorylevelyetnow.Consideringthatinvestigatesonehasamalgamatedembeddedapparatus(suchasPDA)andmobiledevice(suchastheintellectualmobilephone),wethinkthatSymbianandWinCEwillbetwomainsidesofthecompetitioninmobileplatform.Moreover,ifthemanufacturercandomorenormallyinthestandardrealized,theplatform-independentcharacteristicsofJ2MEwillbebroughtintofullerplay.
Inthispaper,wediscusshowtodevelopaJ2MEplatformbasedweatherforecastsprogramwhichhasnetworkconnections,parsingdataandcityinformationstoragefunction.First,weintroducethecharacteristicsandhistoryofJ2MEplatform,andthusinvestigatethefeasibilityandarchitectureoftheweatherforecastprogrambasedonJ2MEplatform.Thenthesystemdesignispresented,andweanalyzethedetailsonrealizingthesystemfromvariousaspects,suchasnetworkconnectivity,dataacquisition,dataanalysis,dataviewpresentationandthedatastoragemodule,etc.Atlast,werealizethesystem,andthesystemperformsverywellandachievestherequirementofdesign.
【Keyword】J2ME;MobileDevelopment;WeatherForecast
绪论
J2ME是SUN公司针对嵌入式、消费类电子产品推出的开发平台,与J2SE和J2EE共同组成Java技术的三个重要的分支。
J2ME实际上是一系列规范的集合,由JCP组织制定相关的JavaSpecificationRequest(JSR)并发布,各个厂商会按照规范在自己的产品上进行实现,但是必须要通过TCK测试,这样确保兼容性。
比如MIDP2.0规范就是在JSR118中制定的。
可能接触过J2ME的开发者会觉得说J2ME是一系列的规范不准确吧。
因为我们在开发中用到了很多例如CLDC(ConnectedLimitedDevicesConfiguration)和MIDP(MobileInformationDevicesProfile)等内容。
其实这并不矛盾,因为这些就是在相关规范中制定的。
随着人们生活节奏的加快,越来越多的人开始关心天气,通过天气状况来决定或者计划最近的出行活动。
以往传统获得天气资讯的方式是通过电视上的定时的天气预报或者收音机的实况天气报到来了解最及时的天气信息。
但是这些传统的方式都会受到时间的限制,无法按照自己的时间来掌握天气预报。
手机的普及率近几年也大大提高了,随着移动互联网的发展,越来越多人都可以通过使用手机的GPRS功能方便的上网,不过目前国内的手机上网费用过高,有流量限制,使得人们在用手机上网的同时也时时刻刻关心流量的耗费。
基于以上两点,在目前跨平台性比较高的J2ME平台上开发天气预报软件,不仅能够随时获取实时天气预报,而且由于只接受天气数据,而不像有些wap网站提供的天气数据,需要打开整个wap网页才可浏览,这将大大节省手机获取天气信息时的数据流量,无论从实用角度还是经济角度都是一个很好的方案。
1课题总体介绍
1.1课题介绍
基于J2ME的手机天气预报程序,利用手机便捷性的优势还有无限网络的方便,可以使用户无论在何时何地,都可以通过手机上网,实时的获得最新的天气信息。
方便的城市管理系统,可以按自己的喜好设定多个城市,并且将城市设为默认,每次启动软件都将显示默认城市的天气预报。
利用http连接,手机通过访问互联网,获得iGoogle主页提供的天气API接口来获取天气,使用j2me的xml解析功能,准确的解析出从服务器返回的天气数据文件,经过数据处理,以文字或者图表的形式来在手机终端上显示天气预报查询结果。
同时利用j2me所提供的记录集功能,保存默认城市设置和自定义城市列表,方面用户自行管理多个城市。
1.2课题目的及意义
随着近年来科学技术的迅猛发展,计算机技术已近慢慢的向微型化、便携化等方向发展。
如今,人们对于嵌入式的研究的深入,诞生了各种基于多功能操作系统的手机,使得这些手机上可以安装各种各样的软件,实现功能和性能上的扩展和提高。
目前大部分手机分为智能手机(SmartPhone)和非智能手机。
智能手机包括以诺基亚和三星手机为代表的SymbianS60操作系统,以摩托罗拉为代表的Linux操作系统,以多普达、HTC(宏达)为代表的WindowsMobile操作系统,还有最近兴起的基于Google操作系统Android的新上市的手机。
非智能手机包括诺基亚的S40平台、摩托罗拉早期的P2k平台等等。
大部分非智能手机和所有的智能手机都可以运行J2ME软件。
J2ME(Java2MicroEdition)是Java2的一个组成部分,它与J2SE、J2EE并称。
根据Sun的定义:
J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
J2ME技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
正因为目前大部分手机都可以运行J2ME软件,能够自己开发一个基于J2ME的手机软件,实现“一次编译,到处运行”。
能够有效的降低开发成本和提高开发效率。
1.3已了解的本课题国内外研究现状
在国内,移动通信大佬中国移动公司在其旗下的WAP站点“移动梦网”上面专门设立了一个下载手机J2ME程序的下载中心,名字叫“百宝箱”。
颇受手机用户的欢迎,产生了极大的反响。
国内还有好多公司,例如股票软件公司大智慧、同花顺,都开发了基于J2ME的手机证券软件,实现了“手机炒股”。
国内著名的IM(InstantMessaging即时通讯)公司深圳腾讯,在2004年的时候就已经将其最受欢迎的IM软件腾讯QQ移植到手机平台,使得广大的网友能够在一台支持J2ME和GPRS互联网通讯的手机上随时随地的与人沟通。
在国外,J2ME主要用于开发手机上的各种基于本地或者网络通讯的软件或者游戏。
具有代表性的是德国著名的手机游戏公司Gameloft,开发了成百个可以在上百种手机上运行的各种游戏,收效颇丰。
1.4主要研究内容和功能
本课题所研究的是基于J2ME平台的天气预报软件。
主要内容是能够在熟练使用Java编程语言、在Eclipse平台下面使用WTK2.5.2(WirelessToolkitSun的无线开发工具包)的前提下面,开发出一个基于J2ME、网络通信、数据处理与存储等各种技术的一款能够预报未来3天以内的天气预报软件。
本软件主要是充分利用J2ME开发手机程序和网络通信方面的优势,采用http连接方式从互联网上即时获取天气信息,以文字和图片的方式显示在手机屏幕上,优点是迅速,直观,方便,经济代价小。
本课题的主要研究项目是研究J2ME的界面编程、网络通信编程、数据存储编程、数据处理编程,充分利用了Java语言的各种优势,包括多线程和图像显示技术,能够以较好的界面,迅速的反应速度和联网速度,较小的网络流量消耗来实现一款方便、实用、小巧的天气预报软件。
2J2ME开发环境的配置和J2ME框架
2.1JDK的安装
首先本课题是Java程序的开发,就需要在电脑上首先搭建好Java开发平台,目前搭建Java的基本开发环境所需要的是JDK。
JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。
自从Java推出以来,JDK已经成为使用最广泛的JavaSDK。
JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。
JDK是学好Java的第一步。
而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。
从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
JDK里面包括:
SE(J2SE),standardedition,标准版,是我们通常用的一个版本,从JDK5.0开始,改名为JavaSE。
EE(J2EE),enterpriseedition,企业版,使用这种JDK开发J2EE应用程序,从JDK5.0开始,改名为JavaEE。
ME(J2ME),microedtion,主要用于移动设备、嵌入式设备上的Java应用程序,从JDK5.0开始,改名为JavaME。
SE(J2SE),standardedition,标准版,是我们通常用的一个版本,从JDK5.0开始,改名为JavaSE。
EE(J2EE),enterpriseedition,企业版,使用这种JDK开发J2EE应用程序,从JDK5.0开始,改名为JavaEE。
ME(J2ME),microedtion,主要用于移动设备、嵌入式设备上的Java应用程序,从JDK5.0开始,改名为JavaME。
JDK包含的基本组件包括:
(1)Javac–编译器,将源程序转成字节码
(2)jar–打包工具,将相关的类文件打包成一个文件
(3)Javadoc–文档生成器,从源码注释中提取文档
(4)jdb–debugger,查错工具
(5)Java–运行编译后的Java程序(.class后缀的)
appletviewer:
小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:
产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:
Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole:
Java进行系统调试和监控的工具。
首先,我们需要从sun的官方网站下载JDK:
http:
//J
点击DownloadJDK得到安装包,双击运行,一路next下来就安装完毕了。
2.2Java基本开发环境JDK的配置
右击我的电脑-属性,点击“高级”选项卡,单击“环境变量”。
新建系统变量Java_HOMEClassPath和Path,
具体是:
变量名变量值
Java_HOMEC:
\ProgramFiles\Java\jdk1.6.0_17
ClassPath.;%Java_HOME%\lib\dt.jar;%Java_HOME%\lib\tools.jar
Path;%Java_HOME%\bin
到这里,基本的JDK的配置就算完成了,然后可以进开始—运行—cmd,敲入Java和Javac,如果有相关的Java帮助信息就算配置成功了。
2.3安装Java开发平台Eclipse
从Eclipse的官方网站
http:
//www.eclipse.org/
下载Pulsar开发平台
Pulsar平台是Eclipse基金会为手机专门开发的J2me开发平台,基于Eclipse,在Eclipse的基础上增加了部分型号手机的在线SDK下载功能,整合了EclipseME插件,如果用标准版本的Eclipse开发手机J2ME程序则需要安装EclipseME插件才能进行正常开发。
将Eclipse下载后解压到任意目录,运行Eclipse.exe就可以了。
2.4安装WTK
WTK(SunJ2MEWirelessToolkit)——Sun的无线开发工具包
在SUN的官方网站
http:
//J
下载WTK2.5.2,按默认的设置安装就行了。
2.5在Eclipse上面配置SDK
双击打开Eclipse,点击window—performance
点击左侧J2ME—devicemanagement
点击import,然后点击browse找到wtk安装目录,点击确定即可。
最后在devicemanagement中选择默认的模拟器就行了。
到这里,J2ME开发环境的搭建就算完成了
2.6J2ME体系结构
J2ME体系结构是基于设备的系列和类别的。
一个类别定义了一个特定种类的设备:
移动电话、简单寻呼机和电脑记事本都是单独的类别。
对存储器和处理能力有相近需求的若干类别的设备构成设备的一个系列。
移动电话、简单寻呼机和简单个人电脑记事本一起就是占用资源很小的设备的一个系列。
图2.1J2ME环境架构
为了支持资源受限设备系列所要求的那种灵活性和可定制部署,人们将J2ME体系结构设计成模块化的和可伸缩的。
J2ME技术在一个完整的应用程序运行时模型中定义了这种模块性和可伸缩性,在该模型中的四个软件层都构建在设备的主机操作系统上。
图2.2J2ME体系结构
Java虚拟机层(JavaVirtualMachineLayer):
这一层是Java虚拟机的一个实现,它是为特定设备的主机操作系统定制的,而且支持一个特定的J2ME配置(configuration)。
配置层(ConfigurationLayer):
配置层定义了Java虚拟机功能的和特定类别设备上可用的Java类库的最小集。
从某种程度上说,一个配置定义了Java平台功能部件和库的共同性,开发者可以假设这些功能部件和库在属于某一特定类别的所有设备上都是可用的。
用户不太会见到这一层,但它对框架(profile)实现者非常重要。
框架层(ProfileLayer):
框架层定义了特定系列设备上可用的应用程序编程接口(API)的最小集。
框架在一个特定的配置上面实现。
应用程序是针对特定的框架编写的,因此可以移植到支持该框架的任何设备上。
一个设备可以支持多个框架。
用户和应用程序供应商看到最多的就是这一层。
MIDP层:
移动信息设备框架(MobileInformationDeviceProfile(MIDP))是一个JavaAPI集合,它处理诸如用户界面、持久存储和联网这样的问题。
Java虚拟机层(JavaVirtualMachineLayer)、配置层(ConfigurationLayer)和框架层(ProfileLayer)一起构成了连接限制设备配置(ConnectedLimitedDeviceConfiguration(CLDC))。
MID框架(MIDProfile)和CLDC提供了一个标准的运行时环境,这个环境允许把新的应用程序和服务动态地部署在终端用户设备上。
用MIDPAPI进行J2ME编程:
构件
CLDC和MIDP组合起来为创建移动电话和简单双向寻呼机上的应用程序提供了完整的环境。
MID框架的核心是一个MIDlet应用程序。
这个应用程序继承了MIDlet类,以允许应用程序管理软件对MIDlet进行控制、从应用程序描述符检索属性以及对状态变化进行通知和请求。
所有MIDlet都继承MIDlet类—运行时环境(应用程序管理器)和MIDlet应用程序代码之间的接口。
MIDlet类提供了用于调用、暂停、重新启动和终止MIDlet应用程序的API。
应用程序管理软件可以在运行时环境内管理多个MIDlet的活动。
此外,MIDlet可以自己发起一些状态变化,并把这些变化通知给应用程序管理软件。
MIDPAPI类的完整集合可以分为两个类别:
用于用户界面的MIDPAPI:
设计这些API是为了能以一系列屏幕显示为基础与用户进行交互操作,每一屏幕显示把适量的数据显示给用户。
命令以每屏幕为基础提供给用户。
这些API允许应用程序决定下一屏显示什么、执行什么计算和使用网络服务的何种请求。
用于处理数据库的MIDPAPI:
这些API负责组织和操作设备数据库,这个数据库由在MIDlet的多个调用之间跨越时保持持久的信息组成。
底层的CLDCAPI用于处理字符串、对象和整数。
还提供了Java2API的一个子集,用于处理I/O和网络通信。
如图2.3所示,显示了J2ME的构件。
图2.3J2ME构件
2.7J2ME生命周期
当我们新建一个MIDlet项目和源文件的时候,大概的基本框架如下:
publicclassaextendsMIDlet
{
publica(){
}
protectedvoiddestroyApp(booleanunconditional)
throwsMIDletStateChangeException{
//TODOAuto-generatedmethodstub
}
protectedvoidpauseApp(){
}
protectedvoidstartApp()throwsMIDletStateChangeException{
}
}
每一个J2ME的MIDlet程序都需要一个主类,就是MIDlet类,继承超类MIDlet,这个类相当于主程序所整个流程开始的类,里面有3个需要重写的方法:
destroyApp、pauseApp、startApp。
startApp是当J2ME程序开始的时候所执行的入口方法当程序开始运行的时候,在MIDlet主类的构造方法调用之后就会立即运行这个方法,需要说明的是,MIDlet构造函数在整个程序的生命周期里面都只执行一次,而startApp则不是。
startApp方法当从外部接受到暂停的指令的时候,会暂时跳出,当外部恢复的时候,程序会再次执行startApp。
pauseApp是当程序通过外部命令暂停的时候,比如支持J2ME的手机按退出键的时候,会选择关闭程序或者暂停程序,当选择了暂停程序,程序会立即跳到pauseApp,这个时候,我们可以在pauseApp方法中释放一些资源,节省手机的内存空间,而且还要把程序必要的数据保存下载,当再次恢复进入startApp方法的时候,就需要读取之前保存的必要数据来恢复现场。
destroyApp是当程序正常退出的时候,比如通过程序的退出菜单、执行了退出命令的时候降被调用。
在destroyApp方法中我们可以释放所有的资源,关闭所有的连接(包括文件和网络连接),保存数据到数据集等等。
这样可以使程序正常的退出并且保存必要的内存数据机的Flash存储器中。
3天气预报程序的设计
3.1设计准备
首先,当我萌生一个开发手机上的天气预报软件的想法的时候,我首要考虑到的问题是跨平台,因为目前来看,手机的操作系统五花八门,在不同的手机上需要采用不同的编