基于安卓天气预报手机客户端的开发.docx
- 文档编号:10346181
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:22
- 大小:705.30KB
基于安卓天气预报手机客户端的开发.docx
《基于安卓天气预报手机客户端的开发.docx》由会员分享,可在线阅读,更多相关《基于安卓天气预报手机客户端的开发.docx(22页珍藏版)》请在冰豆网上搜索。
基于安卓天气预报手机客户端的开发
毕业设计(论文)
题目:
基于安卓天气预报手机客户端的开发
学生姓名:
程军生
学号:
2012014053
所在学院:
信息工程学院
专业班级:
通信工程1204班
届别:
2016届
指导教师:
符茂胜
皖西学院本科毕业设计(论文)创作诚信承诺书
1.本人郑重承诺:
所提交的毕业设计(论文),题目《基于安卓天气预报手机客户端的开发》是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容;
2.毕业设计(论文)所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已标注说明来源;
3.毕业设计(论文)中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况;
4.本人已被告知并清楚:
学校对毕业设计(论文)中的抄袭、剽窃、弄虚作假等违反学术规范的行为将严肃处理,并可能导致毕业设计(论文)成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果;
5.若在省教育厅、学校组织的毕业设计(论文)检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术规范的行为,本人愿意接受学校按有关规定给予的处理,并承担相应责任。
学生(签名):
日期:
年月日
基于安卓天气预报手机客户端的开发
学生:
程军生(指导老师:
符茂胜)
(皖西学院信息工程学院)
摘要:
天气影响着人们的生活,用手机查询天气是人们获取天气信息最普遍最方便的一种途径。
设计开发实用、方便的天气预报客户端具有重要的意义和良好的市场前景。
本课题主要是设计一款基于Android开发平台的天气预报软件,本系统主要包括界面的实现、界面的布局和信息的获取等内容。
界面的实现包括两个模块:
城市选择模块和显示天气模块;布局根据具体情况分别使用了线性布局和相对布局;信息获取是用抓包的形式从中国天气网获取信息并呈现给用户。
本次设计天气预报软件能够精确的预报天气和温度信息,具有一定的实用性;但不比商用软件功能齐全,功能还需要完善。
关键词:
Android;手机;天气预报
DevelopmentofMobileClientBasedonAndroidWeatherForecast
Student:
ChengJunsheng(FacultyAdviser:
FuMaosheng)
(CollegeofInformationEngineering,WestAnhuiUniversity)
Abstract:
Weatheraffectspeople'slives,Itisthemostcommonandmostconvenientawaythatgettheweatherinformationtouseamobilephonechecktheweather.Thedesignanddevelopmentofpracticalandconvenientweatherforecastclienthasimportantsignificanceandgoodmarketprospect.ThistopicismainlytodesignaweatherforecastsoftwarebasedonAndroiddevelopmentplatform,thesystemincludesobtainingcontentsuchastoachievetheinterface,theinterfacelayoutandinformation.Interfaceimplementationconsistsoftwomodules:
moduleofchoicecitymoduleandmoduleofweather;Layoutobtainlinearlayoutandrelativelayoutdependingonthecircumstances;AccessofinformationistoobtaininformationfromtheChineseweathernetworkpacketcaptureformandpresentedtotheuser.Thedesignsoftwarecanaccuratelyforecastweatherforecastweatherandtemperatureinformation,Ithasacertainpracticality,butitisnotbetterthancommercialsoftwarefunctions,Itissomefunctionstoneedtoimprove.
Keywords:
Android;MobilePhone;WeatherForecast
1绪论
1.1项目开发背景
随着现代科技迅猛的发展,在过去的几年里Android发展十分迅速,无论是国内还是国外Android系统手机占据了大部分的手机市场,安卓手机操作简单,不需要以前手机那样用按键只需要轻轻一点就能完成操作,得到很多消费者的认可。
安卓手机成为手机市场的主流。
对于消费者来说好用就是完美,一部手机好用的基础是拥有一套好的操作系统。
随着手机操作系统的不断升级,安卓系统分为四层,每层之间紧密的衔接,相互作用,使得安卓手机正常运行。
天气影响人们生活,人们获取天气信息的途径也有很大的变化。
前些年人们只能通过电视和广播来获取天气信息;当人们接触到网络之后,通过网络来获取天气信息成为人们熟悉天气的最佳途径;随着智能手机进入人们的生活以及“互联网+”战略的提出。
智能手机能够更好的服务于人类,人们用手机也能随时随地的获取天气信息。
这给人们的生活带来了巨大的便利。
1.2项目开发内容
本次项目主要是开发一款预报天气的软件,把软件安装运行到安卓手机上,供人们随时查看天气。
人们需要天气信息为生活导航,天气预报软件能把便利带给人们。
但每一种成果背后总有一些心酸和汗水,天气预报软件的开发是相当麻烦的。
开发之前先要安装和配置开发环境;进入开发过程中需要我们想到的就更多了,根据规划出的天气预报用户界面,对界面进行布局和规划,之后再进行各种功能的完成。
怎么从网络获取数据并且显示在手机终端,随时更新天气信息等等,都是我们要考虑的问题。
所以开发之前要进行准备工作,对所有用到的知识进行学习和了解,并且要搜集各种资料,以备后期开发使用。
开发软件的过程对我们来说是一种历练,经过本次的学习与开发,能够使我熟练的运用这些重要知识和技术。
开发软件完成后,能够帮助使用者查询和了解想要知道的一些地区和尝试的天气信息,信息有中国气象局发布。
并且把天气显示在美观且直观的屏幕上,更方便使用者获取天气信息。
为用户带来更舒适的体验,让生活变得简单快捷。
1.3项目开发意义
本课题是研究并开发一款实用的天气预报软件,软件开发完成后能够运行到安卓手机和平板上,用户使用软件能够查询不同地区未来的天气信息,还能够随时刷新天气信息,从而得到最新的天气信息。
是人们对生活根据天气有相应的安排,是生活更协调。
能为不同人群提供不同的服务,是人们的生活更快捷、便利。
2安卓系统技术
2.1安卓系统概述
现在安卓手机几乎是风靡全球,无论你到哪一个国家,不同的人群使用的全是安卓手机。
安卓手机畅销是有原因的,外观的完美,屏幕较大效果更好,最主要的原因还是它所用的是安卓操作系统。
安卓操作系统是手机时代的革命,带领我们进入智能时代,推动科技的进步。
2.2安卓系统框架
安卓系统框架分为四层[12],每层都有不同的功能,实现每层功能的编写语言也有不同,基本涉及到电脑发展以来所有技术,这提高了安卓系统的复杂程度,使得层与层之间衔接紧密,这种分工方法降低了层与层之间的耦合几率,如果当前层的层内或层下发生改变时,上层应用程序不需要有任何的改变,复杂的操作系统成就了完美的运行状态,共同维持安卓手机的正常运行。
安卓系统框架如图2-1所示:
图2-1安卓系统框架
2.3用户界面UI
2.3.1UI简介
当用户在浏览手机是,观看的不是一个手机的操作系统,而是手机显现给人们最直观的信息,UI界面就把用户想要从系统读取、获得的信息以简单、易懂的形式呈现给用户。
一个好的UI界面不但可以使软件美观漂亮,而且能够使软件更容易操作,信息更容易被使用者理解。
UI设计在手机程序设计中还是非常重要的,往往一个正规公司,都有UI设计部门。
2.3.2AndroidUI设计
UI在手机系统中充当非常重要的作用,声明UI控件的方式也是多种多样的。
主要分为静态声明和动态声明两种方式[5]。
在xml文件中声明UI元素。
在工程中的res文件夹下的layout文件夹中建立xml文件,在xml文件中声明相关的UI控件,并定义view控件的属性,每种view都有很多的属性,最基本的长宽,还有些基本功能。
这些属性都可以在xml文件中实现。
这种实现方式成为静态实现。
开发人员想要更改属性只能通过修改xml文件的方式。
另外一种方式是在编写android代码时声明view控件及其属性,这种方式可是随时改变view的属性,成为动态设定view的属性,对于在xml文件中设定view属性的方法提到的用于定制View的xml属性,每一个能够在xml文件中实现的view属性都可以在java代码中动态的实现,并且能够在Java代码中使用这些方法改变其属性值。
用于在UI布局中显示文本、图片或按钮等等的控件被称为“View”,软件开发人员一般根据具体需求,选择不同的view控件,用不同的方式来设置view的属性。
2.3.35种UI布局类型
线性布局[3]:
只有两种排列方式:
竖向、横向,里面可以放多个控件,如果其中的UI控件内容已经超出屏幕则不显示。
帧布局[2]:
可以同时添加多个控件,添加控件时不能按照主观意愿摆放控件的位置,排列方式是统一的全部摆放到左上角,后续的UI控件覆盖在先添加的控件的上方,所以整个界面只能有一个控件被完整的显示出来。
相对布局[3]:
界面上能够同时放置多个部件,每个部件必须声明自己的id来和其他部件区分开来,部件的摆放位置可以相对与父布局摆放,也可以相对于其他控件进行摆放。
表格布局[2]:
是控件按照表格的方式排列,可以根据需要排列成不同的表格方式。
绝对布局[4]:
根据软件用户界面,将view控件任意摆放,可以摆放在任意位置(设定每个控件的坐标值),也可以同时放置多个控件到UI界面。
2.4网络编程使用HttpClient进行通信
我们在进行安卓开发时,不光是进行本地软件功能和逻辑的编写,有时候需要请求网络数据。
我们在安装开发工具的时候,安卓sdk包中含有HttpClient客户端,我们可以通过HttpClient从服务器获取我们想要的数据,也可以向服务器发送数据[8]。
更好的完善软件功能。
2.4.1HTTP工作原理
1.首先,将客户端通过网络接口和服务器进行连接,网络接口改成相同的即可。
2.建立连接后,客户端向服务器发送请求
3.服务器接收到请求后,向客户端发送响应信息
4.客户端与服务器断开连接
2.4.2HttpClient的一般使用步骤
一、GET方式
1、开始的时候要建立DefaultHttpClient对象(可以理解为客户端、浏览器)。
2、再建立HttpGet的对象,构造方法参数传入表示url的字符串。
3、用客户端对象去执行请求对象,用DefaultHttpClient的execute()方法,参数传入HttpGet对象;这是一个阻塞方法,会将请求发出后阻塞等待,等到响应回来才返回;这种方法的返回类型为HttpReponse,其中包含了响应的信息。
4、得到HttpResponse对象后,查看响应码判断是否正常。
5、如果正常的话,就开始解析我们获得的数据,解析完成后,返回的字符串就是响应体中的字符信息。
二、POST方式
1、开始的时候要建立DefaultHttpClient对象(可以理解为客户端、浏览器)
2、再建立HttpPost的对象,构造方法参数传入表示url的字符串,但是url中不包含参数。
3、再建立个List集合,将相关对象添加进集合内,再将list放进一个URLEncodedFormEntity对象,再将URLEncodedFormEntity对象放进HttpPost对象[7]。
4、用客户端发送HttpPost对象;这是一个阻塞方法,会将请求发出后阻塞等待,等到响应回来才返回;方法的返回类型为HttpReponse,包含了响应信息[12]。
5、得到HttpResponse对象后,查看响应码判断是否正常。
6、如果正常,就对得到的数据进行JSON解析,就能得到相关数据。
2.5下载和安装JDK
Android的官方网站是,登陆站点即可下载AndroidSDK。
解压后双击安装,选择默认位置安可,默认安装C:
\ProgramFiles\Java\jdk1.6.0_24。
[13]
2.6配置JDK
找到电脑“高级系统设置”,选择“环境变量”,新建系统变量,写入变量名和变量值,如图2-2所示:
图2-2配置JAVA_HOME
选择path变量双击,然后添加变量值:
不同的路径之间用“;”隔开路径设置为:
;%JAVA_HOME%\bin;%JAVA_HOME%\jre6\bin[11];如图2-3所示:
图2-3配置Path
点击系统变量下的新建,进行系统变量的新建:
CLASSPATH,在点击变量值,将其设置为:
“.”表示当前路径,如2-4图所示:
图2-4配置CLASSPATH
2.7安装Android开发平台eclipse
在电脑硬盘最好不在系统盘,我们安装在D盘,新建文件夹:
androidsoftware,来放置eclipse、sdk和SDKManager.exe。
前面我们已经配置过环境变量就不需要再次配置了,打开eclipse文件夹,选择eclipse.exe文件打开就可以了。
打开后会弹出如下的窗口,选择需要安装eclipse的目录,也是开发软件生成的目录,在Workspace中选择目录就完成了安装开发平台[12]。
如图2-5所示:
图2-5eclipse安装目录
2.8配置Android虚拟设备(AVD)
通过AndroidSDK安装目录下AVDManager.exe启动AVD管理器,如图2-6所示:
图2-6启动AVD
点击Create,新建虚拟机,如图2-7所示:
图2-7新建虚拟机
点击Start运行虚拟机,如图2-8所示:
图2-8运行虚拟机
3功能需求及技术可行性分析
3.1功能需求
天气预报中应该包括以下功能:
1、能够查询全国所有城市的天气信息。
2、可以切换到其他城市,去查看其他城市的天气信息。
3、能手动更新和后台自动更新天气的功能。
3.2技术分析
技术分析首先要考虑的问题,怎么得到全国省市县的数据信息,之后怎么得到全国每个地区的天气信息。
现在网上有很多免费的天气预报接口可以获取全国的城市信息和天气信息。
一般中国天气网的信息最为准确,也是最权威的。
中国天气网有全国所有城市代码,如果想要查看全国所有的城市及代码,只要访问
01|北京,02|上海,03|天津,04|重庆,05|黑龙江,06|吉林,07|辽宁,08|内蒙古,09|河北,10|山西,11|陕西,12|山东,13|新疆,14|西藏,15|青海,16|甘肃,17|宁夏,18|河南,19|江苏,20|湖北,21|浙江,22|安徽,23|福建,24|江西,25|湖南,26|贵州,27|四川,28|广东,29|云南,30|广西,31|海南,32|香港,33|澳门,34|台湾
获得全国所有城市代码之后,如果想得到安徽省内有那些城市以及代号。
只要输入
这样我们就能找到全国所有的城市代码了,要想得到城市的天气数据,只需要输入:
图4-1服务器返回格式
4详细设计
4.1资料和图片收集
天气预报软件需要将天气信息以可视化界面的形式呈现给使用者,就需要有和用户进行交互的界面,为了更直观更美观的显示天气,我们需要用图标和图片的形式显示天气给使用者。
通过网络找到我们所你需要的图标和图片。
4.2新建工程
正式编写软件之前,我们需要为编写软件新建工程,为了存放编写的代码和存放用到的资源图片。
打开eclipse开发工具,右击工程区,左击选择新建,在左击选择安卓app工程以打开新建工程界面。
填写开发的application的名字、工程名以及包名,我们在android5.0.1开发环境下编写文件。
一直点击next新建工程成功,如图4-2所示:
图4-2新建工程
建好工程之后我们需要在src文件夹下建立文件包存放我们需要写的程序,不同的程序需要放到不同的包中。
如下图所示是建立的文件包,com.weather.model包中存放的是关于模型的所有程序,com.weather.receiver包中存放的都是关于广播接收器的一些程序代码,com.weather.service用于存放一些和服务相关的程序包括网络服务等。
com.weather.service.api存放http回调监听的api,com.weather.ui.activity用于存放实现UI界面相关的程序,com.weather.util存放的是所有工具类相关的程序,如图4-3所示:
图4-3建立所需文件包
另外还需要将我们之前下载的图片拷贝到res中的drawable-hdpi文件夹下,以便于我们使用,如图4-4所示:
图4-4拷贝文件
4.3UI界面的实现
首先要有一个可视化界面向用户显示信息。
主要有两个页面城市的选择和天气的显示页面,如图4-5所示:
图4-5设置布局
因为本天气预报软件可以选择全国所有城市的选择,所以我们在Layout文件夹下建立城市选择的UI界面activity_choose_area.xml文件。
此界面要进行城市的选择,界面设置为线性布局,方向根据需要设为垂直,最上方是个textview用于显示被选中的城市,下面是listview是选择城市列表,可用于滑动和选择。
还要设置我们之前下载的图片为背景色。
还需要在com.weather.ui.activity的文件包下右键新建立ActivityCollector.java、BaseActivity.java、ChooseAreaActivity.java用于定义Listview的功能,如何选择不同城市。
显示天气页面的设计。
在src文件夹下的Layout文件夹下右击然后点击新建,建立activity_weather.xml文件用于显示天气的状况。
界面设置为线性布局,方向设置为垂直方向。
最上方是主页图标和刷新图标,下面是显示天气的textview在屏幕中央,最后设置背景色为所下载的图片。
还需要在com.weather.ui.activity文件包下建立WeatherActivity.java文件定义显示天气界面的布局,设定刷新和Home按钮的功能。
4.4获取天气数据
最重要的环节就是如何获取全国的所有城市和所有城市的实时天气信息。
获取天气的信息是从服务器得到的,所以要和服务器进行交互,所以要在com.weather.util文件包下建立HttpUtil.java类编码相关网络请求程序[3]。
在HttpUtil.java类中需要调用HttpCallbackListener接口用于回调服务器返回的结果。
所以还需要在com.weather.uti包中添加接口HttpCallbackListener。
从服务器返回的数据都是JSON格式的,JSON数据不能直观的显示天气信息,需要进行JSON解析。
所以在com.weather.uti文件包下建立JsonParseUtil.java文件来解析JSON数据[5]。
这样我们就能得到相应的天气信息了。
4.5建立存放数据模型
在包com.weather.model分别建立City.java、Country.java、Province.java和SuperBean.java文件,建立表格用于存储从服务器传回的数据,将数据存储到本地。
接着在工程区的com.weather.service文件包下右击然后点击新建文件,新建DBController.java文件用于将存储的数据库操作封装起来,以后我们能更方便的使用。
这样我们就能成功将天气信息显示到我们软件的UI界面上了。
4.6设置自动更新天气
自动更新天气一般不需要UI界面来单独呈现,并且从网络获取数据会有耗时操作,一般会放到Service中执行。
所以在工程区com.weather.service文件包下右击新建AutoUpdateService.java自动更新服务类来进行天气数据的更新。
然后在com.weather.receiver文件包下建立AutoUpdatereceiver.java类进行更新天气数据的引用。
另外,需要设置显示天气界面刷新图标的点击事件监听事件[10]。
如下图4-6:
图4-6更新天气信息
4.7注册权限
最后一步,同时也是最容易忽略是一步,那就是在工程项目文件下的标签文件中注册。
天气预报软件需要从网络获取数据,就需要获取网络请求,所以要在标签文件中声明网络访问权限[9]。
如图4-7所示。
同时,我们在工程中新建的四大组件都要在标签文件中注册,否则不能正常启动程序。
保存之后,程序就可以运行了。
到这里,一个简单的天气预报软件就制作完成了。
能够显示全国不同城市的天气,可以手动或者自动刷新天气信息。
图4-7注册权限
5系统测试
5.1测试目的
天气预报软件制作完成之后为了确定功能是否准确的查询天气以及是否出现逻辑错乱的问题,还需要进行系统测试。
系统测试就是在软件进行正常运作,服务于广大用户之前,进行测试找出功能的瑕疵之处,逻辑的缺陷,再次进行软件功能和使用过程的改善和优化。
5.2测试过程
可以在电脑上运用虚拟机对软件进行测试,打开eclipse的虚拟机,右击工程名,点击RunAs,接着点击AndroidApplication进行测试。
也可以将软件运行真机上进行测试,将手机用数据线连接电脑,打开手机开发者模式,在电脑上eclipse,右击工程名,点击RunAs,接着点击AndroidApplication进行测试。
图5-1是城市选择界面,用户可以选择全国任意一个城市,选择好要查询的城市天气之后就进入了现实天气界面,图5-2是查询到的5月14日的天气状况。
图5-1.城市选择
图5-2.显示天气
5.3测试结果
根据系统测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 天气预报 手机 客户端 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)