欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于Android的气象信息采集系统 毕业论文.doc

    • 资源ID:3937980       资源大小:12.18MB        全文页数:35页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Android的气象信息采集系统 毕业论文.doc

    基于Android的气象信息采集系统目 录1 引言11.1 项目背景11.2 项目意义12 核心技术简介22.1 Android平台框架22.2 Android的消息机制32.2.1 与消息机制有关的几个类32.2.2 消息机制的实现原理42.3 Android XML解析技术分析52.3.1 DOM解析技术52.3.2 SAX解析技术62.3.3 XML pull 解析技术73 系统开发工具73.1 MyEclipse73.2 Android SDK83.3 集成开发环境的搭建83.3.1 JAVA JDK的安装配置83.3.2 Android SDK的配置103.3.3 ADT Plugin for Eclipse104 系统设计114.1系统概述114.2系统需求分析114.3功能模块设计125 代码实现125.1系统的命名空间125.2主界面实现135.3天气查询165.4信息员登录195.5个人信息205.6信息反馈215.7培训信息265.8手机定位275.9系统设置295.10发送天气信息316 小结31致 谢IABSTRACTII基于Android的气象信息采集系统 摘要:本系统主要用于各地的信息人员获取、上传和采集当地气象信息,使得服务器端人员能够根据信息员发过来的短信更加科学有效地准确的分析出当地的气象信息,提高了天气预报的准确性和及时性。本系统采用MyEclipse作为开发工具,附加android的开发插件开发的基于android平台的手机应用程序。本系统能够实现全国各地天气信息的查询,同时将信息员的气象信息通过短信的方式发送给相关服务器,也可以连接服务器获取信息员的培训信息,并能够获取信息员所在的经纬度用来定位信息员的位置。本系统为气象信息员综合业务信息的手机终端。关键词:Android; 手机应用; GPS定位; 手机软件; 气象信息; Android-based meteorological Information Collection SystemABSTRACTThis system is mainly used for uploading and information staff from around the local meteorological information collected, making the server-side staff members according to the information messages that may come more effective and accurate scientific analysis of the local meteorological information, and improve the accuracy of weather forecasts timeliness. The system uses MyEclipse as a development tool, the development of additional plug-in development android android-based mobile application platform. The system can query weather information throughout the country, you can also connect to the server to obtain information about members of the training information, and access to information for members of the latitude and longitude location information where the location of members. Members of the weather information system for comprehensive business information on mobile terminals.Key words: Android; mobile application; weather forecast; GPS positioning; mobile phone software; Weather Information;1 引言1.1 项目背景近年来,信息员队伍的规模不断壮大,信息员在气象事业,特别是防灾减灾领域中发挥出重要作用。气象信息员是连接气象工作和老百姓的纽带,是基层防御气象灾害的重要力量。今年入汛以来,我国暴雨、强对流等极端灾害性天气频繁发生,汛期气象灾害防御形势不容乐观,特别是南方降雨过程偏多、强度偏大,气象及次生、衍生灾害十分严重,给广大人民群众生命财产安全带来了严重影响。各级气象部门以保障人民群众生命安全和减轻灾害损失为目标,充分发挥气象信息员在预警信息传播、气象灾情收集、组织群众避灾转移以及气象设施维护等工作中的作用,取得了一定成效,但仍存在一些薄弱环节。为进一步提高基层气象防灾减灾效益,切实发挥气象信息员在气象防灾减灾工作中的作用,开发一套实用现场气象信息采集手机终端,实现气象数据、气象现场图片、音视频等的传送变得尤为重要。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,所以本终端系统采用的是基于android手机操作系统。1.2 项目意义本系统的开发是为完善江苏省气象信息员队伍建设,实现信息员动态化管理,提高信息员的业务能力,获取信息员所在地的天气实况和气象灾情,发挥信息员在气象信息传播和信息反馈中的双重作用。利用手机定位、手机智能终端、WEBGIS、3G通讯等新型技术为信息员向气象部门及时反馈气象实况和灾情构建简捷渠道。系统综合利用自动站、雷达等实况观测信息对信息员反馈信息判断,并将有效信息提供给预报员使用,使之成为气象监测的有效补充、气象灾情收集的快捷渠道,有效地提高预报的针对性、观测的全面性、服务的及时性和信息员的积极性。通过本终端系统,能够及时了解气象信息,尤其对于农村的气象信息员来说意义重大。通过本终端,农村气象信息员可以便捷的传递气象灾害预警信号、上报气象灾情信息,能够提高气象服务的有效性,提高广大农民群众灾害自救互救的能力。建立农村气象信息员与气象部门的信息化气象网络能够加强农村气象防灾减灾工作,拓宽农村气象信息发布渠道,促进农业增产增收。2 核心技术简介2.1 Android平台框架Android平台下层结构的核心为嵌入式Linux2.6操作系统,中间是Google为android开发的Libraries(函数库)及Android Runtime(核心库、Dalvik虚拟机),上层为Application Framework(应用程序框架)。由此来开发各种不同的手机应用程序,如图2-1所示1:图2-1 Android平台框架(1) Android应用程序层Android会同一系列核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器及联系人管理程序等。所有的应用程序都是使用Java语言编写的,如图2.1应用程序所示。(2) Android应用框架开发人员可以完全访问Android核心应用程序所使用的API框架,如图2.1应用程序框架一栏所示2。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块,并且任何其他的应用程序都可以使用其所发布的功能块(不过要遵循框架的安全性限制)。同样,该应用程序重用机制也可以使用用户方便的替换程序组件。(3) Android的运行库如图2.1“android运行时”一栏所示,Android包括了一个核心库(Core Libraries)该核心提供了Java编程语言核心库的大多数功能。Dalvik虚拟机是一种寄存器形态的虚拟机,Google在DVM开发时就已经设想用最少的内存来执行,并以同时可执行多个VM为前提。上述特性需要Linux操作系统的协助才能实现,例如程序执行的控制、多线程的支持、内存管理等。事实上,不仅Dalvik虚拟机如此,Java虚拟机也同样具有操作系统依赖性,不同的操作系统需要不同的Java虚拟机,而虚拟机会针对操作系统再进行各项调整,以便能最佳化执行。(4) Android程序库如图2.1“库”一栏所示,Android包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。(5) Android内核 Android的核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件之间的抽象层,如图2.1“Linux内核”一栏所示。2.2 Android的消息机制2.2.1 与消息机制有关的几个类(1) Message消息对象,顾名思义就是记录消息信息的类。这个类有几个比较重要的字段:arg1和arg2:我们可以使用两个字段用来存放我们需要传递的整型值,在Service中,我们可以用来存放Service的ID。obj:该字段是Object类型,我们可以让该字段传递某个多项到消息的接受者中。what:这个字段可以说是消息的标志,在消息处理中,我们可以根据这个字段的不同的值进行不同的处理,类似于我们在处理Button事件时,通过switch(v.getId()判断是点击了哪个按钮。在使用Message时,我们可以通过new Message()创建一个Message实例,但是Android更推荐我们通过Message.obtain()或者Handler.obtainMessage()获取Message对象3。这并不一定是直接创建一个新的实例,而是先从消息池中看有没有可用的Message实例,存在则直接取出并返回这个实例。反之如果消息池中没有可用的Message实例,则根据给定的参数new一个新Message对象。通过分析源码可得知,Android系统默认情况下在消息池中实例化10个Message对象。(2) MessageQueue消息队列。用来存放Message对象的数据结构,按照“先进先出”的原则存放消息。存放并非实际意义的保存,而是将Message对象以链表的方式串联起来的4。MessageQueue对象不需要我们自己创建,而是有Looper对象对其进行管理,一个线程最多只可以拥有一个MessageQueue。我们可以通过Looper.myQueue()获取当前线程中的MessageQueue。(3) Looper MessageQueue的管理者。在一个线程中,如果存在Looper对象,则必定存在MessageQueue对象,并且只存在一个Looper对象和一个MessageQueue对象。在Android系统中,除了主线程有默认的Looper对象,其它线程默认是没有Looper对象。如果想让我们新创建的线程拥有Looper对象时,我们首先应调用Looper.prepare()方法,然后再调用Looper.loop()方法。(4) Handler消息的处理者。通过Handler对象我们可以封装Message对象,然后通过sendMessage(msg)把Message对象添加到MessageQueue中;当MessageQueue循环到该Message时,就会调用该Message对象对应的handler对象的handleMessage()方法对其进行处理。由于是在handleMessage()方法中处理消息,因此我们应该编写一个类继承自Handler,然后在handleMessage()处理我们需要的操作。2.2.2 消息机制的实现原理(1) 首先启动服务时将会调用onCreate()方法5。在该方法中我们new了一个HandlerThread对象,提供了线程的名字和优先级。紧接着我们调用了start()方法,执行该方法将会调用HandlerThread对象的run()方法,在run()方法中,系统给线程添加的Looper,同时调用了Looper的loop()方法,通过源码我们可以看到loop()方法是个死循环,将会不停的从MessageQueue对象中获取Message对象,如果MessageQueue 对象中不存在Message对象,则结束本次循环,然后继续循环;如果存在Message对象,则执行 msg.target.dispatchMessage(msg),但是这个msg的.target字段的值是什么呢?我们先暂时停止跟踪源码,返回到onCreate()方法中。线程执行完start()方法后,我们可以获取线程的Looper对象,然后new一个ServiceHandler对象,我们把Looper对象传到ServiceHandler构造函数中将使handler、looper和messageQueue三者建立联系。(2) 执行完onStart()方法后,将执行onStartCommand()方法。首先我们从消息池中获取一个Message实例,然后给Message对象的arg1、what、obj三个字段赋值。紧接着调用sendMessage(msg)方法,我们跟踪源代码,该方法将会调用sendMessageDelayed(msg, 0)方法,而sendMessageDelayed()方法又会调用sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis)方法,在该方法中我们要注意该句代码msg.target = this,msg的target指向了this,而this就是ServiceHandler对象,因此msg的target字段指向了ServiceHandler对象,同时该方法又调用MessageQueue 的enqueueMessage(msg, uptimeMillis)方法该方法主要的任务就是把Message对象的添加到MessageQueue中。(3) handleMessage(msg)方法。onStartCommand()执行完毕后我们的Service中的方法就执行完毕了,那么handleMessage()是怎么调用的呢?在前面分析的loop()方法中,我们当时不知道msg的target字段代码什么,通过上面分析现在我们知道它代表ServiceHandler对象,msg.target.dispatchMessage(msg);则表示执行ServiceHandler对象中的dispatchMessage()方法,该方法首先判断callback是否为空,我们跟踪的过程中未见给其赋值,因此callback字段为空,所以最终将会执行handleMessage()方法,也就是我们ServiceHandler类中复写的方法。在该方法将根据what字段的值判断执行哪段代码。至此,我们看到,一个Message经由Handler的发送,MessageQueue的入队,Looper的抽取,又再一次地回到Handler的怀抱中6。而绕的这一圈,也正好帮助我们将同步操作变成了异步操作。消息传递的过程如图2-2所示:图2-2消息传递过程2.3 Android XML解析技术分析2.3.1 DOM解析技术(1) DOM 的工作原理7。Android完全支持DOM解析。DOM(Document Object Model)是文档对象模型,使用DOM对XML文件进行操作时,首先要解析文件,将文件分为独立的元素、属性和注释等,然后以节点树的形式在内存中对XML文件进行表示,就可以通过节点树访问文档的内容,并根据需要修改文档。DOM实现时首先为XML文档的解析定义一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,这样代码就可以使用DOM接口来操作这个树结构。(2) DOM接口和类Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础。Element:该接口继承Node接口,提供了获取修改XML元素名字和属性的方法。Node:该接口提供处理并获取节点和子节点的值的方法。NodeList:提供获得节点个数和当前节点的方法。这样就可以迭代的访问各个节点。DOMParser:该类是Apache的Xcrccs中的DOM解析器类,可直接解析XML文件。使用DOM操作XML的代码看起来比较直观、简单。但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大。当然,如果XML文件的内容比较小,采用DOM是可行的。(3) DOM解析流程DOM解析的流程如图2-3所示:图2-3 DOM解析技术2.3.2 SAX解析技术(1) SAX的工作原理8SAX的工作原理简单的说就是对文档进行顺序扫描,当扫描到文档开始与结束、元素开始与结束、文档结束等地方时通知事件处理函数,由事件处理函数做相应的动作,然后继续同样的扫描,直至文档结束。(2) SAX接口和类Attrbutes:用于得到属性的个数、名字和值。ContentHandler:定义与文档本身关联的事件(例如开始和结束标记)。大多数应用程序都注册这些事件。DTDHandler:定义与DTD相关联的事件。它没有定义足够的事件来完整的报告DTD。如果需要对DTD进行语法分析,请使用可选的DeclHandler。它是SAX的扩展。不是所有的语法分析器都支持它。DefaultHandler:它提供了这些接口的缺省实现。在大多数的情况下,为应用程序扩展DefaultHandler并覆盖相关的方法要比直接实现一个接口更容易。(3) SAX解析流程SAX的处理流程如图2-4所示:图2-4 SAX解析流程本系统就用的是SAX解析技术对XML文件进行解析的。因为SAX是以事件作为解析XML文件的模式,它将XML文件转化成为一系列的事件,由不同的事件处理器来决定如何处理9。XML文件较大时,选择SAX技术是比较合理的,虽然代码量比较大,但是它不需要将所有的XML文件加载到内存中。这样对于有限的Android内存更有效,而且Android提供了一种传统的SAX使用方法以及一个便捷的SAX包裝器。2.3.3 XML pull 解析技术(1) XML pull的工作原理XML pull提供了开始元素和结束元素。当某个元素开始时,我们可以调用parser.nextText()从XML文档中提取所有字符数据10。当解释到一个文档结束时,自动生成EndDocument事件。(2) XML pull的接口和类XmlPullParser:XML pull解析器是一个在XMLPULL V1 API中提供了定义解析功能的接口。XmlSerializer:它是一个接口,定义了XML信息集的序列。XmlPullParserFactory:这个类用于在XMLPULL V1 API中创建XML pull解析器。XmlParserException:抛出单一的XML pull解析器相关的错误。(3) XML pull的接口和类XML pull的解析流程如图2-5所示:图2-5 XML pull 解析流程3 系统开发工具3.1 MyEclipse Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。Eclipse是一款非常优秀的开源IDE,非常适合Java开发,由于支持插件技术,受到了越来越多的开发者的欢迎。MyEclipse 8.6不但界面作了很大的增强,增加了代码折叠等众多优秀功能,而且还集成了众多的插件,通过手动添加Android SDK使开发Android手机平台的应用程序更加方便快捷。3.2 Android SDKAndroid广泛支持GSM(全球通),DEGE和3G的 语音与数据业务,支持接收语言呼叫和SMS(短信消息服务),支持数据存储共享和IPC(进程间通信)消息机制,为地理位置服务(如GPS)、谷歌地图服 务提供易于使用的API函数库,提供组件复用和内置程序格式,支持的格式有MPEG4,H264,MP3,AAC,AMR,JPG,PNG和GIF,为 2D和3D图像处理的专用的API库函数。在内存和进程管理方面,Android具有自己的运行时和虚拟机。与Java和.NET运行 时不同,Android运行时还可以管理进程的生命周期。Android为了保证高优先级进程运行和正在与用户交互的进程的响应速度,允许停止或终止正在 运行的低优先级进程,以释放被占用的系统资源。Android进程的优先级并不是固定的,而是根据进程是否在前台或是否与用户交互而不断变化的。在界面设计上,Android提供了丰富的界面控件供使用者之间调用,从而加快了用户界面的开发速度,也保证了Android平台上的程序界面的一致 性。Android将界面设计与程序逻辑分离开来,使用XML文件对界面布局进行描述,有利于界面的修改和维护。Android提供轻量级的进程间通信机制Intent,使跨进程组件通信和发送系统级广播成为可能,提供了Service作为无界面、长时间后台运行的组件。Android支持高效、快速的数据存储方式,包括快速数据储存方式SharedPreferences、文件存储和轻量级的关系数据库SQLite, 应用程序可以使用合适的方法对数据进行保存和访问。同时,为了便于跨进程共享数据,Android提供了通用的共享数据接口 ContentProvider,可以无需了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。3.3 集成开发环境的搭建3.3.1 JAVA JDK的安装配置(1)右键单击“计算机”,选择“属性”菜单项,点击“高级系统设置”,进入“高级”选项卡,选择“环境变量”,找到系统变量的“Path”变量名(如果没有就新建一个名为“Path”的变量),点击“编辑”按钮,添加JDK安装目录中“bin”文件夹路径,如图3-1所示。然后点击“确定”按钮完成。图3-1设置JAVA路径(2)再找到“CLASSPATH”变量(如果没有,同样可以新建),输入JDK安装目录中“lib”以及“demo”的路径,如图3-2所示,单击“确定”按钮完成。图3-2 JAVA CLASSPATH设置(3)安装配置完成后,要测试是否安装成功。点击开始运行,输入“CMD”,打开命令行模式,键入命令“java -version”,检查JDK是否安装成功,如果运行结果如图3-3所示,即表示安装成功。图3-3 测试JAVA是否配置成功3.3.2 Android SDK的配置直接将下载下来的.zip文件解压,同时也配置下Android SDK的系统变量5,将Android SDK安装文件夹下的tools文件夹路径加入到“Path”变量中,注意用“;”隔开。如图3-4所示:图3-4 Android系统环境变量配置3.3.3 ADT Plugin for Eclipse(1)启动Eclipse,点击“Help”菜单,选择“Install New Software”(2)在“Available Software”对话框中,点击“Add.”如图3-5所示:图3-5 ADT配置(3)全选安装即可。安装完后就可进到Android SDK 下载更新package了 注意有android出到现在所有的lever 选择需要安装的更新。如图3-6所示:图3-6 ADT更新(4)设置 android for eclipse在  Window(窗口) -> Preferences(首选项) -> Android -> SDK Location 输入刚才的 android sdk 的安装目录,如 C:Program FilesAndroidandroid-sdk点击点击“Apply”和“OK”。自此,Android的集成开发环境搭建完成。4 系统设计4.1系统概述本系统主要是基于最近流行的Android手机操作系统的一个气象信息终端,通过Android插件和MyEclipse开发平台实现全国气象信息的查询以及信息员的登录与反馈。4.2系统需求分析本系统主要要实现以下几个功能:(1)天气查询。主要包括:全国天气查询、全国各城市选择、其他信息查询。根据不同产品的查询要求,可以将产品显示成图片、文字等不同的形式。天气信息查询内容主要由后台中心数据库和素材库生成。(2)信息反馈。主要功能包括:灾害天气反馈、其他反馈。反馈信息的操作步骤以引导式的为主。其他信息反馈系统还包括农业信息反馈、民政信息反馈、社会调查反馈等功能。此处主要利用平台便捷的反馈功能为广大信息员提供生产生活的信息交流与统计调查服务,为相关部门提供获取更为广泛的信息。(3)其它功能。用户可以在终端程序的选项功能键中选择更多其他功能,包括:培训、手机定位、电话连线、个人信息查询、wap网站链接及系统设置。系统设置包括:个人信息设置、主题设置、手机定位设置、更新与下载、手机桌面设置、预警提醒设置几大功能。此处提供了手机终端程序的帮助文档和操作指南。用户可以很方便的找到自己当前使用的软件版本的系统说明。4.3功能模块设计从功能需求上分析,可以将整个应用系统划分为四个模块,分别是用户界面、后台服务、信息反馈模块、数据库适配器,各个模块之间的关系如图4-1所示:图5-1 模块结构图从模块结构图可以看出,后台服务是整个应用程序的核心,主要功能是负责从服务器端下载气象数据,信息员培训信息等资源。后台服务由界面通过Intent启动。用户界面根据用户的输入将Intent传入后台,向后台服务获得服务器端下载下来的并解析过后的文件,用户界面还会调用数据库适配器,向服务器中写入,读取资源。信息反馈模块负责将用户的灾害天气信息、灾情反馈统计、及一些其它信息反馈给服务器。数据库适配器封装了所有对服务器操作的方法,用户界面和后台服务会调用它实现数据库操作。5 代码实现5.1系统的命名空间本系统项目名称为PalmarWeather,该项目设置了多个命名空间,将所有的代码文件进行了分类,总共分成了六大类,具体的各个包名(命名空间)以及说明参考表5-1:表5-1 PalmarWeather项目的命名空间命名空间说明mon项目中所需要的一些常量(包括xml解析的标签)com.android.weather.control用来生成主界面的listView,以及对应的相应事件com.android.weather.control.firsttab用来生成信息员信息的界面的listView,以及对应的响应事件com.android.weather.control.secondtab用来生成反馈信息的界面的listView,以及对应的响应事件com.android.weather.control.thirdtab用来生成培训信息的界面的listView,以及对应的响应事件com.android.weather.control.fourthtab用来生成手机定位信息的界面的listView,以及对应的响应事件com.android.weather.control.fifthtab用来生成设置信息的界面的listView,以及对应的响应事件com.android.weather.entity项目所用到的实体com.android.weather.service项目中用于后台获取天气信息的服务com.android.weather.ui项目中所以的Activity所在的包com.android.weather.util项目中所要用到的一些辅助的方法Android的资源文件保存在/res的子目录中。Android项目通过R.java文件找到相应资源对应的id值进行加载。R.java是自动生成的。所有在程序开发阶段可以被调用的资源都保存在这些目录中,在/res 下还包含以下文件目录。/res/drawable目录中保存的是图像的文件,程序根据显示的不同调用不同目录(高分辨率drawable-hdpi,中等分辨率drawable-mdpi,低分辨率drawable-ldpi)下的图片。/res/layout目录中保存的是布局文件,它是一个标签的树,任何一个标签都是View类的名字。 你可以使用任何继承自View类的名字作为标签的名字。包括在你的代码中自定义的View类。这个结构可以很容易的构建界面,它比你在源代码中使用的结构和语法更简单。这个模式的设计灵感来自于Web开发。 就是可以将界面和应用程序逻辑分离的模式。/res/values目录中保存的是用来定义的字符串和颜色的文件,可以作为国际化,在本项目中将界面所要显示的中文信息经过其目录下的string.xml进行配置。5.2主界面实现一开始,用户点击应用程序按钮运行LoadUI这个Activity,就会出现一个载入程序的画面,如图5-1:图5-1运行界面首先,LoadUI调用GIFView 来生成图5-1的画面,其中中间的那个进度条是一张动态的gif图片,然后LoadUI通过一个定时器,每隔800毫秒就调用一次服务(LoadDataService.java),如果网络连接正常则会获得相应城市的天气信息(第一次运行的时候是程序里面设置的一个默认的城市),转到WeatherUI界面去。为了便于测试,我用了谷歌所提供的API来实现天气信息的实时查询11。(http: 等号后加城市名)LoadUI.java核心代码如下:设置一个定时器,每隔固定时间执行一次服务:TimerTask task = new TimerTask() Overridepublic void run() intent = new Intent(LoadUI.this, LoadDataService.class);Bundle bundle = new Bundle();bundle.putString("city", WeatherUtil.getDefaultCity(LoadUI.this);bundle.putBoolean("check", false);intent.putExtras(bundle);LoadUI.this.startService(LoadUI.this.intent);while (true) if (ResourceAdapter.getMessageCode() != 0) handler.sendEmptyMessage(0);break;定义一个Handler对象,用于获取定时器中线程所发出的message,根据不同的message,执行不同的操作。Handler handler = new Handler() Overridepublic void handleMessage(Message msg) if (ResourceAdapter.getMessageCode() = Constant.NET_LINK_ERROR) Toast.makeText(LoadUI.this, getString(R_error),Toast.LENGTH_LONG).show();if (ResourceAdapter.getMessageCode() = Constant.SUCCESS_FULL) timer.cancel();./如果成功获得数据则转向WeatherUI这个Activity;然后,service进行后台的数据获取与解析,具体代码实现见下面的天气查询功能的实现。如果从服务器获得了数据就会跳转到WeatherUI这个Activity,显示界面如图5-2所示:图5-2运行后的界面WeatherUI界面中主要用到了ImageSwitcher这个View,它可以实现上一天跟下一天的天气信息的切换12。ImageSwitcher类必须设置一个ViewFactory,主要用来将显示的图片和父窗口区分开来,因此需要实现ViewSwitcher.ViewFactory接口,通过makeView()方法来显示图片,这里会返回一个ImageView对象,而方法setImageResourse用来显示指定的图片资源。底部中间是一个TextView来显示当前的时间,通过开启一个线程,让它每过一秒钟就发送一个message,然后通过Handler中的handleMessage()方法来获得这个message,并更新时间。WeatherUI的核心代码如下:设置退出按钮exit_but.setOnClickListener(new Button.OnClickListener() public void onClick(View arg0) ./退出操作);util_but.setOnClickListener(new Button.OnClickListener() public void onClick(View arg0) new MenuContorl(WeatherUI.this).showUtilListView(););gallery.setAdapter(adapter);initView(0); gallery.setOnItemSele

    注意事项

    本文(基于Android的气象信息采集系统 毕业论文.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开