欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于Android的气象信息采集系统.docx

    • 资源ID:7436543       资源大小:1.24MB        全文页数:43页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    基于Android的气象信息采集系统.docx

    1、基于Android的气象信息采集系统声 明本人郑重声明:1、 持以“求实、创新”的科学精神从事研究工作。2、 本论文是我个人在导师指导下进行的研究工作和取得的研究成果。3、 本论文中除引文外,所有实验、数据和有关材料均是真实的。4、 本论文中除引文和致谢的内容外,没有抄袭其他人或其他机构已经发表或撰写过的研究成果。5、 其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。作者签名: 日 期: 目 录1 引言 11.1 项目背景 11.2 项目意义 12 核心技术简介 22.1 Android平台框架 22.2 Android的消息机制 32.2.1 与消息机制有关的几个类 32.2.2

    2、 消息机制的实现原理 42.3 Android XML解析技术分析 52.3.1 DOM解析技术 52.3.2 SAX解析技术 62.3.3 XML pull 解析技术 73 系统开发工具 73.1 MyEclipse 73.2 Android SDK 83.3 集成开发环境的搭建 83.3.1 JAVA JDK的安装配置 83.3.2 Android SDK的配置 103.3.3 ADT Plugin for Eclipse 104 系统设计 114.1系统概述 114.2系统需求分析 114.3功能模块设计 125 代码实现 125.1系统的命名空间 125.2主界面实现 135.3天气查

    3、询 165.4信息员登录 195.5个人信息 205.6信息反馈 215.7培训信息 265.8手机定位 275.9系统设置 295.10发送天气信息 316 小结 31致 谢 IABSTRACT II基于Android的气象信息采集系统 张超然南京信息工程大学计算机与软件学院 南京 210044摘要:本系统主要用于各地的信息人员获取、上传和采集当地气象信息,使得服务器端人员能够根据信息员发过来的短信更加科学有效地准确的分析出当地的气象信息,提高了天气预报的准确性和及时性。本系统采用MyEclipse作为开发工具,附加android的开发插件开发的基于android平台的手机应用程序。本系统能

    4、够实现全国各地天气信息的查询,同时将信息员的气象信息通过短信的方式发送给相关服务器,也可以连接服务器获取信息员的培训信息,并能够获取信息员所在的经纬度用来定位信息员的位置。本系统为气象信息员综合业务信息的手机终端。关键词:Android; 手机应用; GPS定位; 手机软件; 气象信息; 1 引言1.1 项目背景近年来,信息员队伍的规模不断壮大,信息员在气象事业,特别是防灾减灾领域中发挥出重要作用。气象信息员是连接气象工作和老百姓的纽带,是基层防御气象灾害的重要力量。今年入汛以来,我国暴雨、强对流等极端灾害性天气频繁发生,汛期气象灾害防御形势不容乐观,特别是南方降雨过程偏多、强度偏大,气象及次

    5、生、衍生灾害十分严重,给广大人民群众生命财产安全带来了严重影响。各级气象部门以保障人民群众生命安全和减轻灾害损失为目标,充分发挥气象信息员在预警信息传播、气象灾情收集、组织群众避灾转移以及气象设施维护等工作中的作用,取得了一定成效,但仍存在一些薄弱环节。为进一步提高基层气象防灾减灾效益,切实发挥气象信息员在气象防灾减灾工作中的作用,开发一套实用现场气象信息采集手机终端,实现气象数据、气象现场图片、音视频等的传送变得尤为重要。2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在

    6、平板电脑市场急速扩张,所以本终端系统采用的是基于android手机操作系统。1.2 项目意义本系统的开发是为完善江苏省气象信息员队伍建设,实现信息员动态化管理,提高信息员的业务能力,获取信息员所在地的天气实况和气象灾情,发挥信息员在气象信息传播和信息反馈中的双重作用。利用手机定位、手机智能终端、WEBGIS、3G通讯等新型技术为信息员向气象部门及时反馈气象实况和灾情构建简捷渠道。系统综合利用自动站、雷达等实况观测信息对信息员反馈信息判断,并将有效信息提供给预报员使用,使之成为气象监测的有效补充、气象灾情收集的快捷渠道,有效地提高预报的针对性、观测的全面性、服务的及时性和信息员的积极性。通过本终

    7、端系统,能够及时了解气象信息,尤其对于农村的气象信息员来说意义重大。通过本终端,农村气象信息员可以便捷的传递气象灾害预警信号、上报气象灾情信息,能够提高气象服务的有效性,提高广大农民群众灾害自救互救的能力。建立农村气象信息员与气象部门的信息化气象网络能够加强农村气象防灾减灾工作,拓宽农村气象信息发布渠道,促进农业增产增收。2 核心技术简介2.1 Android平台框架Android平台下层结构的核心为嵌入式Linux2.6操作系统,中间是Google为android开发的Libraries(函数库)及Android Runtime(核心库、Dalvik虚拟机),上层为Application F

    8、ramework(应用程序框架)。由此来开发各种不同的手机应用程序,如图2-1所示1:图2-1 Android平台框架(1) Android应用程序层Android会同一系列核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器及联系人管理程序等。所有的应用程序都是使用Java语言编写的,如图2.1应用程序所示。(2) Android应用框架开发人员可以完全访问Android核心应用程序所使用的API框架,如图2.1应用程序框架一栏所示2。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块,并且任何其他的应用程序都可以使用其所发

    9、布的功能块(不过要遵循框架的安全性限制)。同样,该应用程序重用机制也可以使用用户方便的替换程序组件。(3) Android的运行库如图2.1“android运行时”一栏所示,Android包括了一个核心库(Core Libraries)该核心提供了Java编程语言核心库的大多数功能。Dalvik虚拟机是一种寄存器形态的虚拟机,Google在DVM开发时就已经设想用最少的内存来执行,并以同时可执行多个VM为前提。上述特性需要Linux操作系统的协助才能实现,例如程序执行的控制、多线程的支持、内存管理等。事实上,不仅Dalvik虚拟机如此,Java虚拟机也同样具有操作系统依赖性,不同的操作系统需要

    10、不同的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消息对象,顾名思义就是记录

    11、消息信息的类。这个类有几个比较重要的字段:arg1和arg2:我们可以使用两个字段用来存放我们需要传递的整型值,在Service中,我们可以用来存放Service的ID。obj:该字段是Object类型,我们可以让该字段传递某个多项到消息的接受者中。what:这个字段可以说是消息的标志,在消息处理中,我们可以根据这个字段的不同的值进行不同的处理,类似于我们在处理Button事件时,通过switch(v.getId()判断是点击了哪个按钮。在使用Message时,我们可以通过new Message()创建一个Message实例,但是Android更推荐我们通过Message.obtain()或者

    12、Handler.obtainMessage()获取Message对象3。这并不一定是直接创建一个新的实例,而是先从消息池中看有没有可用的Message实例,存在则直接取出并返回这个实例。反之如果消息池中没有可用的Message实例,则根据给定的参数new一个新Message对象。通过分析源码可得知,Android系统默认情况下在消息池中实例化10个Message对象。(2) MessageQueue消息队列。用来存放Message对象的数据结构,按照“先进先出”的原则存放消息。存放并非实际意义的保存,而是将Message对象以链表的方式串联起来的4。MessageQueue对象不需要我们自己创

    13、建,而是有Looper对象对其进行管理,一个线程最多只可以拥有一个MessageQueue。我们可以通过Looper.myQueue()获取当前线程中的MessageQueue。(3) Looper MessageQueue的管理者。在一个线程中,如果存在Looper对象,则必定存在MessageQueue对象,并且只存在一个Looper对象和一个MessageQueue对象。在Android系统中,除了主线程有默认的Looper对象,其它线程默认是没有Looper对象。如果想让我们新创建的线程拥有Looper对象时,我们首先应调用Looper.prepare()方法,然后再调用Looper.

    14、loop()方法。(4) Handler消息的处理者。通过Handler对象我们可以封装Message对象,然后通过sendMessage(msg)把Message对象添加到MessageQueue中;当MessageQueue循环到该Message时,就会调用该Message对象对应的handler对象的handleMessage()方法对其进行处理。由于是在handleMessage()方法中处理消息,因此我们应该编写一个类继承自Handler,然后在handleMessage()处理我们需要的操作。2.2.2 消息机制的实现原理(1) 首先启动服务时将会调用onCreate()方法5。在

    15、该方法中我们new了一个HandlerThread对象,提供了线程的名字和优先级。紧接着我们调用了start()方法,执行该方法将会调用HandlerThread对象的run()方法,在run()方法中,系统给线程添加的Looper,同时调用了Looper的loop()方法,通过源码我们可以看到loop()方法是个死循环,将会不停的从MessageQueue对象中获取Message对象,如果MessageQueue 对象中不存在Message对象,则结束本次循环,然后继续循环;如果存在Message对象,则执行 msg.target.dispatchMessage(msg),但是这个msg的.

    16、target字段的值是什么呢?我们先暂时停止跟踪源码,返回到onCreate()方法中。线程执行完start()方法后,我们可以获取线程的Looper对象,然后new一个ServiceHandler对象,我们把Looper对象传到ServiceHandler构造函数中将使handler、looper和messageQueue三者建立联系。(2) 执行完onStart()方法后,将执行onStartCommand()方法。首先我们从消息池中获取一个Message实例,然后给Message对象的arg1、what、obj三个字段赋值。紧接着调用sendMessage(msg)方法,我们跟踪源代码,

    17、该方法将会调用sendMessageDelayed(msg, 0)方法,而sendMessageDelayed()方法又会调用sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis)方法,在该方法中我们要注意该句代码msg.target = this,msg的target指向了this,而this就是ServiceHandler对象,因此msg的target字段指向了ServiceHandler对象,同时该方法又调用MessageQueue 的enqueueMessage(msg, uptimeMillis)方法该方法主要

    18、的任务就是把Message对象的添加到MessageQueue中。(3) handleMessage(msg)方法。onStartCommand()执行完毕后我们的Service中的方法就执行完毕了,那么handleMessage()是怎么调用的呢?在前面分析的loop()方法中,我们当时不知道msg的target字段代码什么,通过上面分析现在我们知道它代表ServiceHandler对象,msg.target.dispatchMessage(msg);则表示执行ServiceHandler对象中的dispatchMessage()方法,该方法首先判断callback是否为空,我们跟踪的过程中

    19、未见给其赋值,因此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(Doc

    20、ument Object Model)是文档对象模型,使用DOM对XML文件进行操作时,首先要解析文件,将文件分为独立的元素、属性和注释等,然后以节点树的形式在内存中对XML文件进行表示,就可以通过节点树访问文档的内容,并根据需要修改文档。 DOM实现时首先为XML文档的解析定义一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,这样代码就可以使用DOM接口来操作这个树结构。(2) DOM接口和类Document:该接口定义分析并创建DOM文档的一系列方法,它是文档树的根,是操作DOM的基础。Element:该接口继承Node接口,提供了获取修改XML元素名字和属性的方法。Node:该

    21、接口提供处理并获取节点和子节点的值的方法。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的工作原理简单的说就是对文档进行顺序扫描,当扫描到文档开始与结束

    22、、元素开始与结束、文档结束等地方时通知事件处理函数,由事件处理函数做相应的动作,然后继续同样的扫描,直至文档结束。(2) SAX接口和类Attrbutes:用于得到属性的个数、名字和值。ContentHandler:定义与文档本身关联的事件(例如开始和结束标记)。大多数应用程序都注册这些事件。DTDHandler:定义与DTD相关联的事件。它没有定义足够的事件来完整的报告DTD。如果需要对DTD进行语法分析,请使用可选的DeclHandler。它是SAX的扩展。不是所有的语法分析器都支持它。DefaultHandler:它提供了这些接口的缺省实现。在大多数的情况下,为应用程序扩展Default

    23、Handler并覆盖相关的方法要比直接实现一个接口更容易。(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的工作原

    24、理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 pul

    25、l解析器相关的错误。(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 还包括插件开发环境(plu

    26、g-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。Eclipse是一款非常优秀的开源IDE,非常适合Java开发,由于支持插件技术,受到了越来越多的开发者的欢迎。MyEclipse 8.6不但界面作了很大的增强,增加了代码折叠等众多优秀功能,而且还集成了众多的插件,通过手动添加Android SDK使开发

    27、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运行时还可以管理进程的生命

    28、周期。Android为了保证高优先级进程运行和正在与用户交互的进程的响应速度,允许停止或终止正在 运行的低优先级进程,以释放被占用的系统资源。Android进程的优先级并不是固定的,而是根据进程是否在前台或是否与用户交互而不断变化的。 在界面设计上,Android提供了丰富的界面控件供使用者之间调用,从而加快了用户界面的开发速度,也保证了Android平台上的程序界面的一致 性。Android将界面设计与程序逻辑分离开来,使用XML文件对界面布局进行描述,有利于界面的修改和维护。 Android提供轻量级的进程间通信机制Intent,使跨进程组件通信和发送系统级广播成为可能,提供了Servic

    29、e作为无界面、长时间后台运行的组件。Android支持高效、快速的数据存储方式,包括快速数据储存方式SharedPreferences、文件存储和轻量级的关系数据库SQLite, 应用程序可以使用合适的方法对数据进行保存和访问。同时,为了便于跨进程共享数据,Android提供了通用的共享数据接口 ContentProvider,可以无需了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。3.3 集成开发环境的搭建3.3.1 JAVA JDK的安装配置(1)右键单击“计算机”,选择“属性”菜单项,点击“高级系统设置”,进入“高级”选项卡,选择“环境变量”,找到系统变量的“Pat

    30、h”变量名(如果没有就新建一个名为“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

    31、是否配置成功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的气象信息采集系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开