大学毕设论文基于android平台的手机天气预报系统设计论文.docx

上传人:b****5 文档编号:12358644 上传时间:2023-04-18 格式:DOCX 页数:42 大小:1.37MB
下载 相关 举报
大学毕设论文基于android平台的手机天气预报系统设计论文.docx_第1页
第1页 / 共42页
大学毕设论文基于android平台的手机天气预报系统设计论文.docx_第2页
第2页 / 共42页
大学毕设论文基于android平台的手机天气预报系统设计论文.docx_第3页
第3页 / 共42页
大学毕设论文基于android平台的手机天气预报系统设计论文.docx_第4页
第4页 / 共42页
大学毕设论文基于android平台的手机天气预报系统设计论文.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

大学毕设论文基于android平台的手机天气预报系统设计论文.docx

《大学毕设论文基于android平台的手机天气预报系统设计论文.docx》由会员分享,可在线阅读,更多相关《大学毕设论文基于android平台的手机天气预报系统设计论文.docx(42页珍藏版)》请在冰豆网上搜索。

大学毕设论文基于android平台的手机天气预报系统设计论文.docx

大学毕设论文基于android平台的手机天气预报系统设计论文

06----------------------------------------------装订线----------------------------------------------

 

江苏经贸职业技术学院

毕业设计(论文)

 

题目:

基于Android平台的手机天气预报系统设计

 

系(院)

信息技术学院

专业班级

13软件(单)

学号

1326021113

学生姓名

施梦云

校内导师

高洁

职称

讲师

 

2015年10月28日

基于Android平台的手机天气预报系统设计

摘要:

如今智能手机的快速普及飞速发展,手机实用性越来越强,方便让智能手机用户能够随时更好的查询知道网络所提供的服务,好而有效的方法就是将应用系统的功能发展到手机终端上,因此,智能手机的发展对未来是有很大的帮助的!

首先天气预报是非常实用的信息服务,所以特推出名为Android的开源手机操作系统,采用Linux内核,开发手机联盟成员可以任意使用修改SDK宝。

利用手机终端实施查询天气预报,能让大家更能快捷了解想知道的天气信息,这款软件包括了操作系统,用户界面等。

关键词:

Android手机天气预报系统定位

 

DesignandDevelopmentofWeatherForecastSystembasedontheAndroidSystem

Abstract:

Nowaday,thesmartphonesaredevelopingfasterandfaster,mobilephonesaremorepractical,convenientforsmartphoneuserstobetterknowtheservicesprovidedbythenetwork,goodandeffectivewayistodeveloptheapplicationsystemtothemobileterminal,sothesmartphoneswillhaveveryimportancefordevelopment.

Firstweatherforecastisverypracticalinformationservices,sothelaunchoftheAndroidopensourcemobilephoneoperatingsystem,theuseoftheLinuxkernel,thedevelopmentofmobilephonealliancememberscanbeusedtomodifytheSDK.Usingthemobileterminaltoimplementthequeryweatherforecast,sothatwecanmorequicklylearntoknowtheweatherinformation,thesoftwareincludestheoperatingsystem,userinterface,etc..

Keywords:

AndroidmobileweatherforecastsystemLocation

 

 

目录

 

摘要1

第一章概述

1.1项目背景1

1.2项目意义1

1.3研究现状和发展趋势1

第2章系统设计

2.1软件环境2

2.2主要方法及技术2

2.3主要方法3

2.4数据库设计3

2.5设计目标3

第3章需求分析

3.1经济可行性4

3.2系统功能分析4

3.3性能分析4

3.4系统架构图4

第4章系统设计

4.1系统模块5

4.2系统功能6

第5章主要模块

5.1项目架构7

5.2主要功能实现8

5.2.1数据库实现9

5.2.2数据库文件10

5.2.3数据库代码11

5.2.4数据库代码12

5.2.5GPS定位实现13

第6章功能测试

6.1功能测试18

结论24

参考文献25

 

基于Android平台的手机天气预报系统设计

第1章概述

1.1项目背景

近年来随着3G技术成熟使用广泛,网络的应用与日俱增,网络应用开发技术成为当下最热潮的技术之中。

在Google和Android手机联盟的共同推动下,Android系统在许多移动网络应用开发中最为火热受到追捧。

Android系统是一个有意义的操作系统,此系统刚一出现就为大量的商家及其顾客们的热潮。

故而为顺应潮流,了解未来移动互联网的发展趋势,开拓Android应用平台市场,更好的去迎合社会的需求。

1.2项目意义

由于Android平台3G手机气象软件开发可以对扩大覆盖面很有利,同时可以使得广大群众提前就得知所在的城市天气信息,能够预先得知预防,降低了很多的不必要的灾害。

并且能够更好的强化相应的功能,完善公共更好的服务体系、改善公共服务手段、增加公共服务产品、提高服务质量,发挥气象事业对经济社会发展的现实性作用更好的状态。

1.3研究现状和发展趋势

随着现如今4G网络的飞速发展,智能手机应用普及,安卓占全球手机市场的25.5%,仅次于塞班,成为第二大智能手机系统。

安卓系统是第一次开源代码的操作系统,Linux内核,可以随时提取和完善安卓系统的SDK软件包。

我们相信,安卓系统在全球市场的成长壮大操作系统迅猛发展,有着良好的产业运作策略,计旨在搭载Android的移动设备上运行,实现天气状况的实时动态更新与显示,方便人们这些特点将为安卓在智能手机市场赢得很好的发展机遇。

此系统免费让代码的开源更多的开发者进入应用开发;或许同时谷歌值得众多厂商所学习的,不停的发现更好的版本,将系统推广到更多终端产品中,确保大家更好的体验。

第二章系统设计

2.1软件环境

(1)JavaSDK

(2)JDK1.6.10

(3)Eclipse3.5

(4)Android2.2及以上

(5)操作系统:

WindowsXP及以上

(6)ADT

(7)数据库:

SQLite

2.2主要技术

1.Android手机的界面UI设计

2.Android的网络通信

3.Android的广播

4.GPS调用解析

5.Widget小部件编程

6.XML与JSON解析

7.SQLite数据库操作

8.Android文件操作

2.3主要方法;

(1)首先搭建Android平台,建立一个名为android2.2的项目名为WeatherSystem项目,

(2)其次编写网络访问代码,访问:

(3)在程序第一次运行时,将db_weather.db数据库文件导入到应用程序数据库中

(4)建立设置城市界面,读取数据库文件,获取身份,城市以及对应的城市码。

(5)接收用户选择的城市码,访问:

(6)解析天气信息,将城市码及天气信息缓冲下来,并为其设置有效时间,方便下次启动时直接得到天气信息,过期则从网上更新

(7)定时由保存的城市码更新天气信息

双击Eclipse解压后目录中得到eclipse启动

 

2.4数据库设计

因为系统中通过中央气象台的WebService提供的API访问的得到的天气预报,故当需要查询哪城市时,需要它提供的城市码,而城市码的相对稳定一样,因此在构建系统时将他提前通过Android的网络访问技术将其缓冲到本地SQLite数据库进行保存起来,对于后面的询查很有利。

并产生流量费用呢。

综合所述在本地简历db_weather.db的数据,表结构如下:

其中只存在两个表:

provices和citys

City中存在对city-num对天气的查询,同时还存在外键province_id与provices表,形成1对n的关系。

系统架构图

2.5设计目标

为了完成一个实用稳定的天气预报系统,而且廉价并能满足足大用户的需求,由此针对上述目标,该设计要满足的是:

1:

系统能及时的反馈制定预报城市的天气情况

2:

自动定位用户所在城市,支持GPS定位

3:

控制流量消耗,使得只能在规定的时间间隔期间才刷新气象信息,其余时间只需显示缓存的天气

4:

操作方便,使用便利,界面设计美观简洁,支持widget

 

第三章需求分析

 

3.1经济可行性

系统开发使用或及利用的软件都是免费开放开源下载,所有系统在经济上是可行的。

 

3.2系统功能分析

该软件是APPwidget的一个应该小程序,启动后可以进行城市、更新与查询相应的天气信息,可以通过图片和文字显示当前的一级未来的天气状况等,包括温度,湿度,风向,淤血情况等。

这些天气细腻是根据后台数据库等服务显示的,服务相应的按照的时间间隔,从Google上获取相应天气预报信息。

3.3性能分析

程序响应速度快,处理信息快具有相应安全保障等

3.4系统架构图

第4章系统设计

4.1系统模块

根据相应的需求,将系统分为主要三大模块:

天气信息、预报城市设置与Widget桌面小部件模块。

相应系统模块功能如下:

 

1).天气信息显示指定城市三天内的天气状况,包括年月日、城市名称、温度、风力与当天的建议等,用户可通过按菜单键来显示菜单更新当前天气与设置天气显示的界面背景,以及跳转至设置预报城市界面来更换预报城市。

 

2).预报城市设置由自动设置预报城市与手动设置二部分组成,自动设置实现GPS定位功能,自动确定当前用户所处位置,手动设置则通过可伸展性下拉列表单击选择系统数据库中预存的城市来进行设置,为了用户方便使用,支持以输入框的形式来过滤查询预报城市。

当单击选中城市时跳转至天气显示界面,会显示出城市当三天内的天气状况信息;首次运行时跳转至该页面。

 

3).Widget桌面小部件模块

使得用户更快捷方便的实时了解天气状况信息,添加在Android系统桌面上显示当前天气与时间的天气小部件,用户拿起手机就能了解天气信息,并且当用户单击小部件时,将会自动跳至天气显示界面,并显示出三天的天气信息情况。

4.2系统功能

设置预报城市界面:

首次运行程序,跳至该城市设置界面进行预报城市的选择如图:

天气显示界面:

选择了预报城市后,系统跳转至天气显示界面,显示该城市三天内的实时天气:

在天气界面中用户可通过按菜单键来调出菜单,选择城市,更新天气与更换背景

 

 

小部件Widget显示

 

方便用户第一时间了解天气动态,添加widget显示功能界面:

第五章主要模块

5.1项目结构

装有ADT插件的Eclipse中建一个名为WeatherSystem的Android2.2版本的项目,项目文件结构如下:

WeatherSystem

|__

src

||_com.weather.app

|||_MainActivity.java

|||_SetCityActivity.java

|||_UpdateWidgetService.java

|||_WeatherWidget.java

||_p

|||_GPSListAdapter.java

|||_MyListAdpater.java

||_com.weather.dao

|||_DBHelper.java

||_com.weaher.utils

||_LocationXMParser.java

||_WeatherInfoParser.java

||_WebAccessTools.java

|__res

||_drawable

|||_(略)

||_layout

|||_gps.xml

|||_main.xml

|||_widget_layout.xml

|||_set_city.xml

||_menu

|||_configure_menu.xml

||_raw

|||_db_weather.db

||_values

|||_color.xml

|||_strings.xml

||_xml

||_weather_widget.xml

|

|_AndroidManifest.xml

5.2.主要功能实现

获取城市码db_weather.db数据库文件

通过访问中央气象局网从省份直辖市到城镇一级一层的深入,得到全国的城市码,如果需要获得一个地区的城市码总共需要访问4次网络,分别如下:

1:

访问

[01|北京,02|上海,03|天津,04|重庆,05|黑龙江,06|吉林,07|辽宁,08|内蒙古,…]

2.访问

[1201|济南,1202|青岛,1203|淄博,1204|德州,1205|烟台,1206|潍坊,……]

 

3.访问

[120101|济南,120102|长清,120103|商河,120104|章丘,120105|平阴,….……]

4.访问:

[120102|101120102…]

首先实现上述功能需使用Android的网络访问技术,故编写工具类WebAccessTools类如下:

/**

*根据给定的url地址访问网络,得到响应内容(这里为GET方式访问)

*@paramurl指定的url地址

*@returnweb服务器响应的内容,为String类型,当访问失败时,返回为null

*/

publicStringgetWebContent(Stringurl){

//创建一个http请求对象

HttpGetrequest=newHttpGet(url);

//创建HttpParams以用来设置HTTP参数

HttpParamsparams=newBasicHttpParams();

//设置连接超时或响应超时

HttpConnectionParams.setConnectionTimeout(params,3000);

HttpConnectionParams.setSoTimeout(params,5000);

//创建一个网络访问处理对象

HttpClienthttpClient=newDefaultHttpClient(params);

try{

//执行请求参数项

HttpResponseresponse=httpClient.execute(request);

//判断是否请求成功

if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){

//获得响应信息

Stringcontent=EntityUtils.toString(response.getEntity());

returncontent;

}else{

//网连接失败,使用Toast显示提示信息

Toast.makeText(context,"网络访问失败,请检查您机器的联网设备!

",

Toast.LENGTH_LONG).show();

}

}catch(Exceptione){

e.printStackTrace();

}finally{

//释放网络连接资源

httpClient.getConnectionManager().shutdown();

}

returnnull;

}

/**

*根据给定的url地址访问网络,得到响应内容(这里为GET方式访问)

*@paramurl指定的url地址

*@returnweb服务器响应的内容,为String类型,当访问失败时,返回为null

*/

publicStringgetWebContent(Stringurl){

//创建一个http请求对象

HttpGetrequest=newHttpGet(url);

//创建HttpParams以用来设置HTTP参数

HttpParamsparams=newBasicHttpParams();

//设置连接超时或响应超时

HttpConnectionParams.setConnectionTimeout(params,3000);

HttpConnectionParams.setSoTimeout(params,5000);

//创建一个网络访问处理对象

HttpClienthttpClient=newDefaultHttpClient(params);

try{

//执行请求参数项

HttpResponseresponse=httpClient.execute(request);

//判断是否请求成功

if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){

//获得响应信息

Stringcontent=EntityUtils.toString(response.getEntity());

returncontent;

}else{

//网连接失败,使用Toast显示提示信息

Toast.makeText(context,"网络访问失败,请检查您机器的联网设备!

",

Toast.LENGTH_LONG).show();

}

}catch(Exceptione){

e.printStackTrace();

}finally{

//释放网络连接资源

httpClient.getConnectionManager().shutdown();

}

returnnull;

}

 

通过上面访问清楚,得到的编码与名称都是“编码|名称”的形式,所以在此也编写一个解析得到城市码的工具类WeatherInfoParser,以便解析从服务器中得到的城市码:

/**

*通过解析content,得到一个一维为城市编号,二维为城市名的二维数组

*解析的字符串的形式为:

编号|城市名,编号|城市名,.....

*@paramcontent需要解析的字符串

*@return封装有城市编码与名称的二维数组

*/

publicstaticString[][]parseCity(Stringcontent){

//判断content不为空

if(content!

=null&&content.trim().length()!

=0){

StringTokenizerst=newStringTokenizer(content,",");

intcount=st.countTokens();

String[][]citys=newString[count][2];

inti=0,index=0;

while(st.hasMoreTokens())

 

Stringcity=st.nextToken();

index=city.indexOf('|');

citys[i][0]=city.substring(0,index);

citys[i][1]=city.substring(index+1);

i=i+1;

}

returncitys;

}

returnnull;

 

编写这两个类后就是编写从服务器端用程序遍历得到全国各地的城市名与城市码,并将它们分别的保存在String[][]provinces数组,String[][]childs数组与String[][]cityCode中:

WebAccessToolswebTools=newWebAccessTools(this);

//得到访问网络的内容

StringwebContent=webTools.getWebContent("

//第一次解析得到的为省份或一级直辖市

String[][]provinces=WeaterInfoParser.parseCity(webContent);

String[]groups=newString[provinces.length];

String[][]childs=newString[provinces.length][];

String[][]cityCode=newString[provinces.length][];

for(inti=0;i

groups[i]=provinces[i][1];

//由省份码来得到城市码

StringBufferurlBuilder=newStringBuffer("

urlBuilder.append(provinces[i][0]);

urlBuilder.append(".xml");

webContent=webTools.getWebContent(urlBuilder.toString());

String[][]citys=WeaterInfoParser.parseCity(webContent);

//用于保存所的有towns

String[][][]towns=

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

当前位置:首页 > 自然科学 > 物理

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

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