毕业设计(论文)-基于Android平台的手机天气预报.doc_第1页
毕业设计(论文)-基于Android平台的手机天气预报.doc_第2页
毕业设计(论文)-基于Android平台的手机天气预报.doc_第3页
毕业设计(论文)-基于Android平台的手机天气预报.doc_第4页
毕业设计(论文)-基于Android平台的手机天气预报.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全套设计加扣 3012250582 湖南软件职业学院毕业设计毕业选题: 基于Android平台的手机天气预报 指导教师: 学生姓名: 院系名称: 软件工程系 专业班级: Java1304 学生学号: 提交日期: 2015年12月19日 目 录第一章 引言11.1 研究背景11.2 国内外的研究状况及发展趋势11.3 系统分析及其主要内容21.4 论文组织结构3第二章 系统实现所涉及的技术42.1 Android系统概述42.2 Eclipse介绍42.3 Android系统框架52.4 Android四大组件62.5 用户界面8界面布局的种类:92.6 Fragment9第三章 开发环境配置103.1 Android开发框架103.2 开发所需软件14 3.2.1 Android开发环境配置15 3.2.2 Eclipse的设置16第四章 系统总体分析与模型设计184.1 系统的总体结构184.2 功能分析19 4.2.1 天气模块功能分析194.3 系统流程图20第五章 详细设计225.1 新建工程22III 5.2 Android UI界面的实现235.3 开始进去后的页面245.4 界面切换功能实现255.5 天气模块的实现26 5.5.1 天气信息26 1 注册登录27 2 页面切换源代码28 3 天气页面30第六章 系统测试376.1 测试目的376.2 测试环境386.3 测试结果39结束语40总结41致谢42III第一章 引言许多先进技术迅速地应用于气象业务中,可供天气预报用的实时和非实时资料急增,这就要求利用自动化的高速通信技术和信息处理技术处理这些资料。为适应上述发展,正逐步改进气象通信体制,加速气象通信现代化。现在人们生活水平的提高,对生活质量的要求也越来越高,然而外部自然气候的变化却不容乐观。不管是外出旅行还是农业生产等,气候变化情况一直都引起人们的普遍关注,人们迫切的需要随时随地的掌握准确的天气预报信息。比如,如果有雨,就建议出门带伞;如果温度高于某值就建议防晒等。1.1 研究背景Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。在如今这个智能手机系统群雄纷争的时候,Android采用Linux内核,开放手机联盟成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。2013年09月24日Android迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。1.2 国内外的研究状况及发展趋势近些年来,世界范围的气候异常, 使人类面临日益严重的粮食、能源和水资源危机,因此社会对气象工作提出了更为迫切的要求。与此同时,遥感技术,电子计算机等最新科学技术进入气象业务,形成了新的大气探测技术,快速通信和计算处理,从而获取更多的大气信息,推动了气象业务的发展。国外气象业务发展的一个重要趋势是日益趋向自动化,即把自动化观测、数据处理、通信及客观分析、预报制作和发布结合成一个完整的自动化系统。移动设备性能的不断提高,无线网络从2G提高到3G甚至4G,天气预报在科技不断进步的推动下也需要朝着信息多元化演变,应该从单纯的文字信息逐渐向文字图像视频等多种数据融合转变。形成了一个集中、统一、数字化的天气预报系统,实现智能终端高效、及时、稳定信息交互。1.3 系统分析及其主要内容Android平台的天气预报软件可以进一步扩大气象信息的覆盖面,让广大Android手机用户能够在第一时间获取最新的天气预报信息,以便提前预防,方便出行。同时,把气象灾害造成的损失降到最低,也可以提高公共服务质量,更好的发挥气象事业对经济社会发展的现实性作用,有巨大的实用价值。该技术在Android平台已经比较成熟,通过该软件的开发让我们更好的认识Android系统的工作原理。本软件是一个App 应用程序,启动程序后可以切换城市,通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。这些天气数据通过后台服务获取,后台服务可以按照一定时间间隔,从互联网上获取天气预报信息,并将天气信息解析显示在手机界面上。从上面的描述中可以基本了解软件的功能需求:(1) 启动App应用程序注册登陆。(2) 显示天气模块:通过文字和图片显示当前的天气情况,包括日期、时间、城市、最高温度、最低温度、当前温度等。(3) 显示生活模块:通过文字图片动画显示当前的天气情况,包括城市当前天气、温度、风向、风速、湿度;同时显示今后5天的天气情况。(4) 我模块:城市管理,通知提醒,意见反馈,关于。1.4 论文组织结构本论文讨论的是基于android平台的天气查询系统的设计与开发,所以本文的组织结构就是围绕着基于基于android平台的天气查询系统的设计与开发的整个过程来进行。第一章 引言。第二章 系统实现所涉及的技术。 第三章 安卓开发环境配置。第四章 系统总体分析与模型设计。第五章 详细设计,对界面模块设计、数据解析、曲线图的画法进行代码设计。 第六章 测试,对设计功能进行了测试。 文章最后是总结、致谢与参考文献等。第二章 系统实现所涉及的技术2.1 Android系统概述Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android一词最早出现于法国作家利尔亚当(Auguste Villiers de lIsle-Adam)在1886年发表的科幻小说未来夏娃(Lve future)中。他将外表像人的机器起名为Android。Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,1于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。其中的文字使用了Ascender公司专门制作的称之为“Droid ” 的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。2012年7月美国科技博客网站BusinessInsider评选出二十一世纪十款最重要电子产品,Android操作系统榜上有名。2.2 Eclipse介绍Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和、Eclipse技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。2.3 Android系统框架Android系统的软件开发,语言基础是java语言,通过控件的设置以及方法调用,实现一系列的功能。Android系统提供给应用程序开发者的只是一个框架,在该平台下开发应用程序必须要遵守这个框架原则。我们开发的应用程序其实就是在这个框架上进行拓展,下面介绍一下android这个框架所提供的功能。Android.app:提供最上层的程序模型和运行环境。Android.content:包含对设备上的数据进行访问和发布的类。Android.database:Android系统内置一个轻量级的SQLite数据库。Android.graphics:底层的图形库,包含颜色过滤,画布,矩形,点,可以用来将它们直接绘制到屏幕上。A: 提供用来帮助访问网络的类。Android.location:定位以及与定位有关的一些类。Android.util:涉及到一些实用性的方法,例如对时间和日期进行操作。Android.media: 提供一些管理多种视频,音频的媒体接口。Android.os:提供了系统服务,IPC机制和消息传输。Android.opngl:提供了OpenGL的工具。Avider:提供了访问Android中的内容提供者的类。Android.telephony:提供用来与拨打电话相关的API交互的类。Android.view: 提供最基本的用户界面接口框架。Addroid.webkit:提供用来调用默认浏览器的接口。Android.widget包含各种UI元素,可以在应用程序的布局中使用。2.4 Android四大组件一个Android 应用程序,通常由Activity、Intent Receiver、Service、CONtent Provider 四种功能组件构成。但是,并不是每一个Android 应用程序都需要用到这四种功能组件,而是只需上述四种功能组件的某些组合。 ActivityActivity是最基本的Android 应用程序组件。大多数应用由多个屏幕组成,一个Activity 通常则是一个单独的屏幕。每一个Activity 都被实现为一个独立的类,并且从Activity 基类中继承而来。Activity 类将会显示由视图控件组成的用户接口,并对事件做出响应。Android 使用Intent 这个特殊类,实现在屏幕与屏幕之间移动。通过解析各种Intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,Activity 将会调用STartActivity(Intent myIntent)方法,然后,系统会在所有安装的应用程序中所定义的IntentFilter 中查找,找到最匹配myIntent的和Intent 对应的Activity.新的Activity 接收到myIntent 的通知后,开始运行。当startActivity 方法被调用时将触发解析myIntent 的动作。这个机制具有两点优势:一是能够重复利用从其他组件中以Intent 形式产生的一个请求;二是Activity 可以在任何时候被一个具有相同IntentFilter 的新Activity 取代。Activity的生命周期在Android开发中,Activity是非常重要的。Activity主要负责创建和显示窗口,也可以把一个Activity理解成一个显示的屏幕;在Android的应用中不是仅有一个Activity,而是由很多个Activity存在。因其重要性,开发Android务必熟悉Activity生命周期。onCreateView:Activity初次创建时被调用,一般在这里创建view,初始化布局信息,将数据绑定到list以及设置监听器等。如果Activity首次创建,本方法将会调用onStart( );如果是停止后重新显示,则将调用onRestart( )。onStart:当Activity对用户即将课件的时候被调用onResume( )。onRestart:当Activity停止后重新显示的时候被调用,然后调用onStart( )。onPause:当系统要启动一个其他的Activity时调用(其他的Activity显示之前),这个方法使用来停止动画和其他占用CPU资源的事情,所以这这里应该保存那些持久数据,这些数据可以在onResume( )方法中读出。onStop:当另一个Activity恢复并遮盖住当前Activity,导致其对用户不再可见时调用,一个新的Activity启动,其他Activity重新回到前景与用户交互时会重新调用onResume( ),如果Activity将退出则调用哦你D额story( )。onDestory:在当前Activity被销毁之前所调用的最后一个方法,当进程 终止前调用。 Intent ReceiverIntent Receiver 是实现的应用能够对一个外部的事件作出响应。Intent Receiver 在AndroidManifest.xml 中注册,也可以在代码中使用Context.registerReceiver( )进行注册。当一个IntentReceiver 被触发时,应用不必对请求调用 Intent Receiver,系统会在需要的时候启动应用。各种应用还可以通过使用Context.brOAdcastIntent( )将它们自己的Intent Receiver广播给其他应用程序。 ServiceService 是一段长生命周期的、没有用户界面的程序。例如媒体播放器这个Activity 会使用Context.startService( )来启动一个Service,从而可以在后台播放音乐。同时,系统也将保持这个Service 一直执行,直到Service 运行结束。系统可通过使用Context.bindService( )方法,连接到一个Service 上(如果这个Service 还没有运行将启动它)。当连接到一个Service 之后,还可以利用Service 提供的接口与它通信。就媒体播放器来说,还可以进行暂停、重播等操作。 Content ProviderContent Provider是Android 应用程序能够将它们的数据保存到文件、SQL 数据库,甚至是任何有效的设备中。Content Provider 实现了应用数据与其他的应用程序的共享。Content Provider 类实现一组标准的方法,能够让其他应用程序保存或读取此ContentProvider处理的各种类型数据。在Android 中,默认使用SQLite 作为系统数据库,但使用方法略有不同。Android 中每一个应用程序都运行在各自的进程中,当访问其他应用程序的数据时,需要在不同的虚拟机之间传递数据,这样操作起来会有些困难(正常情况下,不能读取其他应用程序的数据库文件)。ContentProvider 正是解决不同的应用包共享数据的工具。2.5 用户界面Android系统的界面空间分为定制控件。定制空间是用户独立开发的空间,或者通过继承并修改系统空间后所产生的新空间,能够提供特殊的功能和显示需求。系统控件是Android系统中已经封装好的界面控件,而在代码中动态修改需要更新状态的界面元素。当然,用户也可以将所有的界面元素,无论在程序运行后是否需要修改其内容,都放在代码中进行定义和声明。很明显这不是一种良好的界面设计模式,会给后期界面修改带来不必要的麻烦,是应用程序开发过程中最常见的功能控件。系统控件更有利于进行快速开发,同事能够使Android应用程序的界面保持一定的一致性。常见的系统控件包括TextView、EditView、Button、ImageButton、CheckButton、Spinner、ListView和Tablehost。界面布局(layout)是用户界面结构的描述,定义界面中所有的元素、结构和相互关系。一般生命Android程序的界面布局有两种方法,第一种是使用XML文件描述界面的布局,另一种是在程序运行时动态添加或修改界面布局。Android系统在生命界面布局上提供了很好的灵活性,用户既可以独立使用任何一种声明布局的方式,也可以同时使用两种方式。一般情况下,使用XML文件来描述用户界的基本元素,而在代码中动态修改需要更新状态的界面元素。当然,用户也可以将所有的界面元素,无论在程序运行后是否需要修改其内容,都放在代码中进行定义和声明。很明显这不是一种良好的界面设计模式,会给后期界面修改带来不必要的麻烦,而且界面较多时,程序代码也会显示凌乱不堪。使用XML文件声明界面布局,能够更多地将程序的表现层和控制层分离,在修改界面时将不再需要更改程序的源代码。界面布局的种类:(1) 线性布局:线性布局(LinearLayout)是一种重要的界面布局,也是经常使用的界面布局。在线性布局中,所有子元素都在垂直或水平方向按照顺序在界面上排序。(2) 框架布局: 框架布局(FrameLayout)是最简单的界面布局,用来存放一个元素的空白控件,且子元素的位置不能够制定的,只能够放置在空白空间的左上角。(3) 表格布局:(TableLayout)也是一种常用的界面布局,它将屏幕划分为表格,通过制定行和列可以将界面元素添加到表格中。(4) 相对布局:(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面元素与其他元素的相对位置关系,确定界面中所有元素的布局为止。(5) 绝对布局:(AbsoluteLayout)能通过指定界面元素的坐标文职,来确定用户界面的整体布局。2.6 FragmentFragment的主要目的在大屏幕设备上实现灵活的、动态的界面设计。例如,在Android的平板电脑上,因为屏幕有更多的空间来配置更多的组件,并且这些组件之间还会产生一定的数据交互。Fragment支持这种设计理论,开发人员不需要管理复杂的试图结构变化,而且把这些动态的管理交给Fragment和回退堆栈(back stack)完成,在进行界面设计时,只需要将界面布局按照功能和取于划分为不同的模块,每个模块设计成一个Fragment即可。Fragment具有和Activity类似的生命周期,但是比Activity支持更多的事件回调函数。Fragment生命周期中回调函数。第三章 开发环境配置3.1 Android开发框架下图是Android的体系架构图,自上而下分别为应用层、应用框架、类库和Alvik运行时环境以及Linux内核。如图3.1所示:图3.1 Android的体系架构图一般来说,我们想从事Android开发,可以从应用开发作为切入点,逐渐熟悉其整个体系,并慢慢往其底层渗透,从而能做到软硬兼备,Android系统开发班的课程设置就充分考虑到了这一点,既涉到应用开发的透彻掌握,又帮助大家在系统开发层面上做好充分的准备。而从学习的路线图上来说,先熟悉Java SE编程,能比较熟练的使用Java语言进行编程,熟悉Java语言语法特点,熟悉Java IO、Java线程、网络编程、XML处理等。另外,因为很多的Android应用在运行时都需要去访问网站服务器,因此,熟悉一种网络编程语言也是必要的。 无论是从开发班的课程设置就充分考虑到了这一点,既涉到应用开发的透彻掌握,又帮助大家在系统开发层面上做好充分的准备。而从学习的路线图上来学习的方便性还是市场占有情况来说使用JSP/Servlet都是不二的选择,另外,在这个阶段也顺便学习一下SQL语法和熟悉一种SQL数据库,以方便后续Android开发中进行SQLite数据库开发。学习完这些课程后,就可以开始进行Android的应用开发的学习,例如Android中的UI组件、基本组件、数据存储、传感器、图形图像处理、多媒体处理、游戏开发等。Android包含一套C/C+库,Android系统的各式组件都在使用。这些功能通过Android应用框架暴露给开发人员。Android的核心类库提供Java类库所提供的绝大部分功能。每个Android应用都运行在自己的进程上,享有Dalvik虚拟机为它分配的专有实例。为了支持多个虚拟机在同一个设备上高效运行,Dalvik被改写过。 Dalvik虚拟机执行的是Dalvik格式的可执行文件(.dex)该格式经过优化,以降低内存耗用到最低。Java编译器将Java源文件为class文件,class文件又被内置的dx工具转化为dex格式文件,这种文件在Dalvik虚拟机上注册并运行。在一些底层功能比如线程和低内存管理方面,Dalvik虚拟机是依赖Linux内核的。为了更好地进行应用编程,可以有选择的对其Lib类库进行分析,以加深对其工作机制的理解。再往下,就是操作系统层级了,这里应该要对Linux操作系统进行学习,熟悉其内核和运行原理,熟悉ARM体系架构以及常用指令并熟悉驱动的编写方式,掌握其移植方法等。Android的核心应用程序就是依赖框架层次API开发的,程序员们可以充分使用这些API。应用架构设计的初衷是,简化组件复用机制,任何应用都能发布自己的功能,这些功能又可以被任何其他应用使用,当然要受来自框架的强制安全规范的约束。每个Android应用程序都存在于它自己的世界之中,默认情况下,每个应用程序均运行于它自己的Linux进程中。当应用程序中的任意代码开始执行时,Android启动一个进程而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。 每个进程都运行于自己的Java虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是隔绝的。 默认情况下,每个应用程序均被赋予一个唯一的Linux用户ID,并加以权限设置,使得应用程序的文件仅对这个用户、这个应用程序可见。当然,也有其它的方法使得这些文件同样能为别的应用程序所访问。Android应用的构成和工作流程如图图3.2所示:图3.2 Android应用的构成和工作流程每个Android应用程序都存在于它自己的世界之中,默认情况下,每个应用程序均运行于它自己的Linux进程中。当应用程序中的任意代码开始执行时,Android启动一个进程而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。每个进程都运行于自己的Java虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是隔绝的。默认情况下,每个应用程序均被赋予一个唯一的Linux用户ID,并加以权限设置,使得应用程序的文件仅对这个用户、这个应用程序可见。当然,也有其它的方法使得这些文件同样能为别的应用程序所访问。(l) 应用程序架构: 在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。(2) Dalvik虚拟机器: 在Android平台上所使用Java虚拟机,不是Sim公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。(3) 集成的浏览器: 集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。WedKit是一个开源浏览器网页排版引擎,目前使用WebKit引擎的浏览器主要有:Safari、Midori、Epiphany等。配合Android手机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。 (4) 优化的绘图能力: 在程序里可以用到的绘图功能分为2D与3D两个方面。在2D方面Android提供了一套特有的类库(SGL;而在3D方面则是使用OpenGLES1.0(openGL for Embedded systems)规范的类库。它们是一种非常快的图形引擎,并且支持硬件加速。(5) SQLite数据库: SQLite提供结构化的数据存取。SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。它能够支持Windows/Linux/U nix等主流的操作系统,同时能够跟很多程序语言相结合,比如:php、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2TB。它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite也是一套开放性的关联式资料库其特点在于轻量性方面的设计结构,更适合在手机上使用。(6) 多媒体的支持能力: 主要用于播放媒体文件。这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址”(Note:URI即是统一资源识别地址)模式在网络上直接播放的流媒体。另外支持各种通用的静态图像格式,例如:JPG、PNG、GIF等格式。(7) GSM技术: Global System for Mobile Communications,即全球移动通讯系统,俗称”全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM技术是属于手机硬件方面的展现,。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2TB。它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。默认情况下,每个应用程序均运行于它自己的Linux进程中。当应用程序中的任意代码开始执行时,Android启动一个进程而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。每个进程都运行于自己的Java虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是隔绝的。默认情况下,每个应用程序均被赋予一个唯一的Linux用户ID,同时它还支持事务功能和并发处理等等也是在开发Android应用程序时可以突出的特点之一。 (8) 蓝牙、EDGE、3G及Wi-Fi: 蓝牙是一种新型、开放、低成本、短距离的无线连接技术可取代短距离的电缆,实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSMEvolution),即增强型数据速率GSM演进技术。EDGE是一种从GSM到3G的过渡技术它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和SPSK调制技术。由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。Wi-Fi(WirelessFidelity),即无线保真技术,与蓝牙技术一样,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM技术是属于手机硬件方面的展现,这些通讯能力也是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。(9) GPS: Global Positioning System,即全球定位系统,它是一个由覆盖全球的247 颗卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人。这个同样也是属于手机硬体方面的体现也是在开发Android应用程序是可以突出的特点之一。3.2 开发所需软件每个Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik 虚拟机,所以,只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的JavaJDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,还要有Google提供的AndroidSDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。(1) Java JDK(2) Eclipse (3) Android SDK(4) ADT3.2.1 Android开发环境配置 Eclipse设计的美妙之处,在于所有东西都是外挂,除了底层的核心以外。这种外挂设计让Eclipse具备强大扩充性,但更重要的是,此平台提供一个定义明确的机制,让各种外挂程序共通合作(透过延伸点extension points)与贡献(contributions),因此新功能可以轻易且无缝地加入平台配置环境变量步骤:首先,你应该已经安装了 java 的 JDK 了,本文安装的是jdk-7u7-windows-x64;并记录下安装目录C:Program FilesJavajdk1.7.0_07然后进入“计算机”的“属性”选项,选择“高级系统设置”选择“环境变量”点击“环境变量”之后,接下来就是具体的配置过程(1) 选择新建“变量名”:Java_Home“变量值”:C:Program FilesJavajdk1.7.0_07注:变量值这一栏主要填写的是你安装 java jdk 的路径,这里根据个人的情况可能会有所不同(2) 选中环境变量中的“path”在“变量值”一栏的最前面添加如下的 code:%Java_Home%bin;%Java_Home%jrebin;注意:上面的代码最好一个字符不要差,因为 Java_Home 已经限制了你的 JDK 的路径了,Java 的每个版本的 JDK 应该都是由这些东西构成的(3) 上一步确定之后,再“新建”“变量名”:ClassPath“变值”:.;%Java_Home%bin;%Java_Home%libdt.jar;%Java_Home%libtools.jar注:上面的代码最好也是一个字符不变的贴上去,变量值最前面的 .; 不要漏掉。做完上面的三个步骤之后,环境变量的配置已经完成了。3.2.2 Eclipse的设置(1) Eclipse的安装直接解压缩 Eclipse3.4.1.zip 到指定目录 如:F:Androideclipse运行eclipse.exe,设置Workspace,指定一个开发目录给它就可以了,Eclipse 安装完毕(2) 安装 android-sdkAndroid SDK 同 Eclipse 一样,直接解压缩到任意目录;如E:Android 中就可以将Android SDK中的tools绝对路径添加到系统PATH中,添加环境变量PATH 值为SDK中tools的绝对路径,“确定”后,重新启动计算机。重启计算机以后,SDK安装成功。(3) 设定SDK Location打开 Eclipse IDE ,进入菜单中的 Window - Preferences;打开Preferences窗口,选中Android;直接设定SDK Location为SDK的安装目录。OK后,再次打开这个窗口,你可以看到SDK列表(4) 安装 Android Development Tools (ADT)打开 Eclipse IDE;进入菜单中的 Help - Software Updates进入选项卡Available Software - Add Site Location:输入/android/eclipse勾选 Android DDMS 和 Android Development Tools ,Install一路Next,注意Accept许可,直到完成。到此,在Windows7下的Android开发环境就搭建成功了。第四章 系统总体分析与模型设计本章利用模块图对基于Android平台的天气查询系统的设计与开发进行详细的阐述与研究,包括三个模块:天气模块,生活模块,我模块。4.1 系统的总体结构如图图4-1所示:图4-1 系统模块图本软件是一个App应用程序,启动程序后可以切换城市,有一个显示天气情况的用户界面,通过图片和文字显示当前和未来几天的天气状况,包括温度、湿度、风向和雨雪情况等。这些天气数据是通过后台服务获取的,这个后台服务按照一定时间间隔,从互联网上上获取天气预报信息,并将天气信息保存在数据库中。 从上面的描述中可以基本了解软件的功能需求:(1) 启动App应用程序(2) 显示天气模块:通过文字和图片显示当前的天气情况,包括日期、时间、城市、最高温度、最低温度、当前温度等。4.2 功能分析从上面的描述中可以基本了解软件的基本功能,但为了将需求分析过程变得简单明了,首先找出用户界面上需要显示的内容。功能描述中有“显示天气情况的用户界面”除此以外,一般应用软件还应有显示配置信息的界面。因此,本示例应该包含三个用户界面:显示天气模块的界面,生活模块界面,我模块界面4.2.1 天气模块功能分析(1) 模块功能概述天气模块的功能有:实时天气、未来一周的天气、一周温度曲线图、下拉刷新。模块功能如图4-2所示: 图4-2 天气模块图(2) 模块功能特点实时天气:显示所选城市实时天气状况,包括城市名称、天气描述、 温度高低、风速、天气描述图片、日期、星期。此界面是应用程序的主界面,所以在设计时应尽量使界面美观,将天气数据以用户容易接受的方式呈现出来;未来天气:对未来6天的天气情况简要描述,天气描述、温度高低等数据,使用户一目了然,使人们及时了解天气变化,对日常生活出行、穿衣做好准备;打开应用程序就可以直接看到该城市的天气状况。一周温度曲线图:更加形象的描述一周最高温、最低温的天气变化,方便用户及时获取天气信息。下拉刷新:触摸屏幕下拉到一定幅度,从网上重新获取数据加载最新的天气信息,方便用户准确的获取实时天气。4.3 系统流程图启动程序后显示所选城市的天气信息,通过图片和文字显示天气状况,主要有温度、湿度、风向和雨雪情况等。这些天气数据是通过后台服务获取的,这个后台服务可以按照一定时间间隔,从互联网上获取天气预报信息。系统流程如图4-5所示:图4-5 系统流程图本软件先登陆,登陆之后显示郑州的天气信息和生活指数,在我模块可以切换其他城市,同时重新加载所选城市的天气信息。第五章 详细设计本章将探讨基于Android平台的天气查询系统的设计与开发的详细设计与实现。5.1 新建工程在程序开发阶段,首先确定“天气预报软件”的工程名称为TianQi,然后根据程序模块设计的内容,建立TianQi工程,TianQi的工程文件结构如图5-1所示:图5-1 工程目录为了使源代码文件的结构更加清晰,TKWeather示例设置了多个命名空间中,分别用来保存用户界面、数据库、后台服务、和天气数据的源代码文件。如表所示:cn.kim.tkweather.activity窗体页面源代码包cn.kim.tkweather.adapter适配器源代码包cn.kim.tkweather.bean数据实体类cn.kim.tkweather.fragmentFragment包cn.kim.tkweather.service服务层源码包cn.kim.tkweather.ui自定义控件包cn.kim.tkweather.utils工具类源码包Android资源文件保存在/res的子目录中 。/res/drawable目录中保存的是图像文件, /res/layout目录中保存的是布局文件 ,/res/values目录中保存的是用来定义字符串和颜色的文件 ,/res/xml目录保存的是XML格式的数据文件 。所有在程序开发阶段可以被调用的资源都保存在这些目录中 。5.2 Android UI界面的实现在Android中用户界面都是布局在XML文件中的。这些XML文件放在工程/res/layout下面。这对以前熟悉java可视化编程的人来说可能有些不太习惯。可能有人疑问为什么要把布局文件放在XML文件里呢?其实有过web基础的都应该知道mvc框架,这是一种用于网站开发的非常优秀的思想,在安卓系统中,安卓开发人员把用户界面放在XML文档中定义,这样就可以让XML文档专门负责用户UI界面设置,而java程序专门负责业务实现,从而降低程序的耦合,便于程序的维护和扩展,符合mvc设计思想。在XML中Android开发人员放置了很多我们经常用到的一些组件,比如view,Button,EditText等,通过这些系统提供的控件,我们可以开发出我们想要的程序界面来。Layout 是一类特殊的ViewGroup 控件,它们本身并不显示任何的内容,存在的惟一原因就是其中的内部结构,能够更好地摆放它的子控件。比如Linearlayout(线性布局),可将子控件按水平或垂直方向按顺序排列下去;Tablelayout(表格布局),可以将子控件按照表格的形式,一枚枚放置好;Relativelayout(相对布局),实际应用中这个布局更灵活,它可以设定各个控件之间的对齐和排列关系,适合编写复杂的界面。有了Layout 的存在,控件和控件之间不再是独立地存在,而是更有机地结合在一起,设定起来也更为方便。在本程序中用到的布局文件如图5-2所示:图5-2 布局文件图5.3 开始进去后的页面 如图5-3所示:图5-3 开始界面图5.4 界面切换功能实现 如图5-4所示:图5-4页面切换图5.5 天气模块的实现天气模块的功能有:实时天气、一周温度曲线图、下拉刷新。实时天气:显示所选城市实时天气状况,包括城市名称、天气描述、 温度、日期、星期。选择城市后的界面如图5-5所示:图5-5 天气界面图5.5.1 天气信息(1) 获取数据天气数据是聚合数据提供的Web Service中获取的,调试TKWeather时需要网络环境,数据的获取地址是/weather/index。请求示例/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&key=您申请的KEY 。使用http.send(HttpRequest.HttpMethod.GET, url, requestCallBack)方法发送请求获取天气数据。需添加访问网络的权限。(2) 解析数据使用阿里巴巴提供的json解析工具类,将请求到的json格式的数据解析为对应的实体类。代码如下:WeatherObject object = com.alibaba.fastjson.JSONObject.parseObject(contentString, WeatherObject.class);1 注册登录public void onClick(View v) int id = v.getId();if (id=R.id.btn_login) if (TextUtils.isEmpty(ed_name.getText().toString().trim()|ed_name.getText().toString().trim()=) Toast.makeText(LoginActivity.this, 请输入正确的用户名,Toast.LENGTH_SHORT).show();else if (TextUtils.isEmpty(ed_password.getText().toString().trim()|ed_name.getText().toString().trim()=) Toast.makeText(LoginActivity

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论