Android智能手机天气预报系统设计及实现.docx

上传人:zf 文档编号:28171889 上传时间:2023-07-09 格式:DOCX 页数:11 大小:26.03KB
下载 相关 举报
Android智能手机天气预报系统设计及实现.docx_第1页
第1页 / 共11页
Android智能手机天气预报系统设计及实现.docx_第2页
第2页 / 共11页
Android智能手机天气预报系统设计及实现.docx_第3页
第3页 / 共11页
Android智能手机天气预报系统设计及实现.docx_第4页
第4页 / 共11页
Android智能手机天气预报系统设计及实现.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Android智能手机天气预报系统设计及实现.docx

《Android智能手机天气预报系统设计及实现.docx》由会员分享,可在线阅读,更多相关《Android智能手机天气预报系统设计及实现.docx(11页珍藏版)》请在冰豆网上搜索。

Android智能手机天气预报系统设计及实现.docx

Android智能手机天气预报系统设计及

实现

论文导读:

系统是Google公司开发的一个开源手机操作系统。

智能手机的应用软件及其需要的服务将有很大发展前景。

其基本功能是当用户运行天气预报系统程序时。

关键词:

Android,智能手机,天气预报系统,软件设计

0引言

为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端,让手机通过移动网和互联网访问Web网站并处理各项业务。

因此,智能手机的应用软件及其需要的服务将有很大发展前景。

Android系统是Google公司开发的一个开源手机操作系统,它包括了操作系统、用户界面和应用程序,即智能手机工作所需的全部软件。

Android的最大特点是它的开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能和强大的浏览器[1],而且已有许多比较成熟的应用案例[2]。

本文就在分析讨论Android手机软件开发技术原理的基础上,拟讨论提出

1Android应用程序设计原理

对于一^Android应用程序,通常由ActMty、IntentReceiver、Service、ContentProvider四种功能组件构成。

但是,并不是每一^Android应用程序都需要这四种功能组件,而是使用上述四种功能组件的某些组合。

1.1Activity

Activities是最基本的Android应用程序组件。

在应用程序中,一个Activities通常就是一个单独的屏幕,大多数应用由多个屏幕显示组成。

每一个ActMties都被实现为一^H虫立的类,并且从ActMties基类中继承而来Activities类将会显示由视图控件组成的用户接口,并对事件做出响应。

Android使用Intent这个特殊类,实现在屏幕与屏幕之间移动。

通过解析各种Intent,从一个屏幕导航到另一个屏幕是很简单的。

当向前导航时,activity将会调用startActivity(Intentmylntent)方法。

然后,系统会在所有安装的应用程序中定义的IntentFilter中查找,找到最匹配mylntent的Intent对应的activityo新的activity接收到mylntent的通知后,开始运行。

当startActivity方法被调用时将触发解析mylntent的动作,这个机制具有两点优势:

一是能够重复利用从其它组件中以Intent形式产生的一个请求;二是可以在任何时候被一个具有相同IntentFilter的新Activity取代。

1.2IntentReceiver

通过IntentReceiver实现应用能够对一^外部的事件做出响应论文网,IntentReceiver在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver。

进行注册。

当一^IntentReceiver被触发时,应用不必对请求调用IntentReceiver,系统会在需要的时候启动应用。

各种应用还可以通过使用Context.broadcastlntent。

将它们自己的IntentReceiver广播给其它应用程序。

1.3Service

一个Service是一段长生命周期的、没有用户界面的程序。

例如媒体播放器这个ActMty会使用Context.startService。

来启动一^Service,从而可以在后台保持音乐的播放。

同时,系统也将保持这个Service一直执行,直到这个Service运行结束。

通过使用Context.bindService()方法连接到一^Service上(如果这个Service还没有运行将启动它卜当连接到一^Service之后,还可以Service提供的接口与它进行通信。

就媒体播放器来说,还可以进行暂停、重播等操作。

1.4ContentProvider

Android应用程序能够将它们的数据保存到文件、SQL数据库中,甚至是任何有效的设备中。

ContentProvider实现了应用数据与其它的应用程序的共享。

一个Contentprovider类实现一组标准的方法,从而能够让其它的应用程序保存或读取此Contentprovider处理的各种数据类型。

数据是应用程序的核心。

在Android中,默认使用SQLite作为系统数据库,但在Android中,使用方法略有不同。

在Android中每一个应用程序都运行在各自的进程中,当应用程序需要访问其他应用程序的数据时论文网,需要数据在不同的虚拟机之间传递,这样的情况操作起来可能会有些困难(正常情况下,不能读取其他应用程序的数据库文件),ContentProvider正是用来解决在不同的应用包之间共享数据的工

具。

2天气实况预报系统的具体实现

基于Android平台的智能手机访问服务器的主要内容是其数据交互方法

[3]。

基于Android操作系统的天气实况预报系统设计的核心是通过调用通信协议SOAP(SimpleObjectAccessProtocol)的接口,从WebService提供商中提取天气预报的数据信息,为客户端服务。

其基本功能是当用户运行天气预报系统程序时,在手机屏幕上显示出中国的城市名称,用户单击任意一个城市名,可获得该城市的天气实况预报信息;用户也可以输入城市名称,点击查询获得天气预报信息。

CitiesWeatherForecastH程目录结构及其源代码文件如图1所示。

图1CitiesWeatherForecast工程目录结构

2.1Android平台的用户界面实现

Android提供的可变化的用户界面(UI)开发模块是基于XML文件的。

这些XML文件放在工程/res/layout下面。

这个目录可包含所有应用程序所需的非码部分,比如图片、字符串、xml文件。

当要使用到这些资源时,在代码目录中打开R.java文件即可。

在XML文件里编辑代码进行界面的现实,实现起来不仅方便,使用时也会更加灵活。

在Android程序设计中要用到一些基本的AndroidUI元素,通过使用Views,ViewGroups和layouts为Activity创建功能的、富有直观力的Ulo通常是使用AndroidSDK中提供的一些控件,进行布局、扩展和定制这些控件论文网,并使用ViewGroups去组合Views,创建由相互作用的子控件组成的原子的、重复利用的UI元素,也可以创建自己的Views,来实现显示数据和与用户交互的新途径。

或使用一些继承自ViewGroup的Layout管理器来组织

AndroidUI中的单个元素到屏幕上。

在一个Android应用中,用户界面由View和ViewGroup对象构建。

View与ViewGroup有很多种类,而它们都是View类的子类。

View对象是Android平台中用户界面体现的基础单位。

View类是它称为widgets(工具)的子类的基础,它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。

ViewGroup类同样为其被称为Layouts(布局)的子类奠定了基础,它们提供了诸如流式布局、表格布局以及相对布局之类的布局架构。

View对象是一个数据体,它的属性存储了用于屏幕上一块矩形区域的布局参数及内容。

并负责这块它所辖的这个矩形区域之中所有测量、布局、焦点转换、卷动以及按键/触摸手势的处理。

作为一个用户界面对象,View同时也担任着用户交互关键点以及交互事件接受者的角色。

由于天气实况预报系统程序功能比较单一,其UI也相对比较简单,只要有一个输入框、一个查询按钮以及一个显示所有中国城市信息的列表即可。

首先,在PackageExplorer窗口中展开Layout新建.xml文件,用来对窗口界面进行布局,主要有系统运行的主配置文件main.xml和result.xmlo

Layout是一类特殊的ViewGroup控件,它们本身没有任何可显示内容,形如透明的玻璃盒子论文网,存在的唯一原因就是其中的内部结构,能够更好的摆放它的子控件。

比如线性的Layout、LinearLayout。

放入这个Layout的子控件,会按水平或垂直方向排列,一个挨着一个按顺序排列下去。

TableLayout,可以将子控件按照表格的形式,一枚枚放置好。

RelativeLayout更灵活,可以设定各个控件之间的对齐和排列关系,适合定制复杂的界面。

有了Layout的存在,控件和控件之间不再割裂的存在,而是更有机的结合在一起,设定起来也更为方便。

在本实例中的main.xml文件主要是添加一些界面的布局设置,例如如

下代码:

LinearLayout

android:

orientation=horizontal

android:

layout_width=fill_parent

android:

layout_height=wrap_content

EditTextandroid:

id=@+id/cityText

android:

layout_width=wrap_content

android:

layout_height=wrap_content

android:

text=@string/cityText/

Buttonandroid:

id=@+id/searchBtn

android:

layout_width=wrap_content

android:

layout_height=wrap_content

android:

text=@string/searchBtn/

/LinearLayout

上述代码就是一^线性Layout。

放入这个Layout的子控件,会按水平或垂直方向排列,一个挨着一个按顺序排列下去。

同时还定义了一个EditText和Button,并且设置了相关的参数。

在Android中,控件最重要的大小属性是width/height论文网,开发者可以明确指明控件的大小,可以设定成为fiLparent和wrap_content,控件的宽、高还有在屏幕中的显示位置等等。

另外,还可以设置相应的文本信息,在此可通过android:

text=@string/dtyText/进行弓I用,而string文件存放在工程的res/values中。

同理,按照这种方法,可以依据需要定义相应的布局控件,譬如定义用来呈现天气实况信息的UI等。

2.2创建中国城市列表数据

根据天气预报系统功能需求分析,系统启动后,应在主界面上应呈现出中国国内所有城市的列表数据,因此需要创建中国城市列表数据,包括获取、解析城市列表数据,并在用户界面上呈现出来。

其中重要的是手机终端从Web服务器获取了所有类型的数据之后,如何将这些数据进一步交给Android手机终端View组件[4],在手机界面上显不给用户。

(1)获取城市列表数据

由于Android没有提供WebService的组件库,但可以通过修改在PC或J2ME上使用的开源WebServiceJava库作为AndroidWebService库使用。

kSOAP2(http:

〃)就是一^在智能手机上的SOAPWebService客户端包论文网,可用于资源受限制的Java环境如Applets或J2ME应用程序。

在GoogleCode上有一个项目ksoap2-android(Rlffl在Android平台上实现轻量级的SOAP库,即使用ksoap2-android的API来调用远端WebService的服务。

因此需要在CitiesWeatherForecast.java的onCreate。

中进行数据获取的初始化工作,这可通过定义一个方法publicListStringgetAIQtiesNames()来获得中国城市名称列表。

也就是说,采用它提供的获得全球各个国家城市的方法GetCitiesByCountry,通过上的WebService来提供天气预报服务。

譬如,通过Constant.java中的publicclassConstant。

,设置SOAP

Action要调用的方法名、命名空间以及WebServiceURL值。

其源代码为:

publicstaticfinalStringSOAP_ACTION

=http:

//www.webserviceX.NET/GetCitiesByCountry;

publicstaticfinalStringMETHOD_NAME=GetCitiesByCountry;

publicstaticfinalStringSOAP_ACTION2

=http:

//www.webserviceX.NET/GetWeather;

publicstaticfinalStringMETHOD_NAME2=GetWeather;

publicstaticfinalStringNAMESPACE=http:

//www.webserviceX.NET;

publicstaticfinalStringURL

=

然后在WebServiceCaller.java中实例化一个SoapSerializationEnvelope

对象,设置SoapObject的命名空间、方法名、参数等;并通过实例化一个

AndroidHttpTransport对象来调用WebService,并获得xml字符串数据。

的代

码段如下:

AndroidHttpTransportandroidHttpTransport=newAndroidHttpTransport

(Constant.URL);

try{

androidHttpTransport.call(soapAction,envelope);

Objectresult=envelope.getResponse();

xmlStr=result.toString();

}catch(Exceptione){

e.printStackTrace();

}

(2)解析数据列表

Android操作系统对xml字符串数据的操作功能很强,提供了dom、sax

以及xmlpul3种方式,AndroidSDK提供了android.sax包以方便SAXHandler的开发,可用来解析xml结果字符串。

在本设计实例的CitiesWeatherForecast.java文件中解析xml数据时,先通过RootElementroot=newRootElement(NewDataSet)获得xml数据的根节点;然后再寻找其子节点直到找到City子节点,并设置一^监听器setEndTextElementListener。

来获得City子节点的值;最后使用org.xml.sax的SAXParser来解析xml数据,把数据存入Liststring并返回:

SAXParserFactoryfactory=SAXParserFactory.newInstance();

SAXParserparser=factory.newSAXParser();

XMLReaderxmlreader=parser.getXMLReader();

xmlreader.setContentHandler(root.getContentHandler());

InputSourceis=newInputSource(newStringBufferInputStream(xmlStr));

xmlreader.parse(is);

(3)在UI上呈现城市列表数据

当获得ListString类型的数据之后论文网,就可以把它绑定到main.xml定的ListView组件上,然后使用ListActivity呈现列表数据。

CitiesWeatherForecast.java中的代码段为:

ListStringcityList=getAllCitiesNames();

setListAdapter(newArrayAdapterString(this,

android.R.layout.simple_list_item_1,cityList));

即使用方法setListAdapter。

把一^ListActivity填充进去。

2.3城市天气实况预报系统运行

城市天气实况预报系统的相关编码完成后对其测试运行结果如下。

在Eclipse的PackageExplorer窗口中右键选择CitiesWeatherForecast工程名,在弹出的窗口中选择RunAsAndroidApplication安装该应用程序到Android模拟器并启动它。

然后单击所要查询的城市名称列表项,稍等片刻便会显示出该城市的天气实况信息。

也可以在文本框中直接输入所要查询的城市名称,单击Search同样会获得相应城市的天气预报信息。

3结束语

Android平台具有极大的开放性和兼容性,并且本身大量使用开源代码库,深为开发人员所喜爱。

Android智能手机应用程序开发涉及它的整个体系结构,是一项非常复杂的工程。

本文在介绍基于Android平台的应用程序设计原理的基础上,主要讨论提出了Android用户界面设计、获取并解析列表数据的一种方法,给出了在用户界面上呈现数据的原理与设计过程;最后通过模拟器实现了应用程序的运行结果。

当然,基于Android平台的开发技术还需要进一步完善,需要在日后的工作中不断探索、研究,以形成实用的城市天气实况预报系统。

随着Google公司大力推广Android平台和Android智能手机的推出,该系统会有很好的应用发展前景。

参考文献

[1]张波,高朝勤,杨选,等译.BurnetteEd.Android基础教程[M].北京:

人民

邮电出版社,2009.

[2]张利国代闻龚海平编著.Android移动开发案例详解[M].北京:

人民邮电出版社,2010.

[3]刘平。

Android手机访问服务器的一种数据交互方法[J].电子设计工程.

2010年9月.VoL18,No9

[4]王向辉,张国印,陈洁.Android应用程序开发[M].北京:

清华大学出版社,2010.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1