基于安卓操作系统的手机天气预报设计论文.docx

上传人:b****8 文档编号:23887386 上传时间:2023-05-21 格式:DOCX 页数:32 大小:1.29MB
下载 相关 举报
基于安卓操作系统的手机天气预报设计论文.docx_第1页
第1页 / 共32页
基于安卓操作系统的手机天气预报设计论文.docx_第2页
第2页 / 共32页
基于安卓操作系统的手机天气预报设计论文.docx_第3页
第3页 / 共32页
基于安卓操作系统的手机天气预报设计论文.docx_第4页
第4页 / 共32页
基于安卓操作系统的手机天气预报设计论文.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于安卓操作系统的手机天气预报设计论文.docx

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

基于安卓操作系统的手机天气预报设计论文.docx

基于安卓操作系统的手机天气预报设计论文

毕业设计(论文)

 

课题名称基于安卓操作系统的手机天气预报设计

学生姓名

学号

系、年级专业

指导教师

职称

 

2016年5月20日

 

摘要

进入21世纪信息化时代,手机已经成为了当前人们生活、工作的重要组成部分,我国国内的手机已经普及众多地区,在得到了物质经济生活的保障之外,人们对于精神的享受也是十分重视的,而手机则是成为了的当前最为有效的交流媒介,有效缩短了地区交流限制,满足人们娱乐的要求,人们使用手机可以从手机上获取实时天气信息,所以当前天气预报开发是具有良好前景的。

本次设计的天气预报开发是基于安卓的开发应用,运行系统为Android系统,此开发标准参考慰目前流行的天气预报开发标准,JAVA语言中封装了需要代码类,为更多的有兴趣的开发者提供了方便与效率,并且本次开发的天气预报操作简单,十分适合大众的使用习惯,这样这一开发就会得到很大的推广。

关键词:

智能手机;安卓;操作系统;天气

 

 

ABSTRACT

Inthe21stcenturyinformationage,mobilephoneshavebecomethecurrentpeople'slives,animportantpartofthework,China'sdomesticmobilephonehasbeenpopularinmanyparts,asupportmaterialobtainedineconomiclifeoutside,peopleenjoythespiritisveryimportant,whilethephoneiscurrentlybecomethemosteffectivemediumofcommunication,effectivelyshorteningtheregionexchangerestrictions,requirementstomeetthepeopleentertainment,peopleusemobilephonestogetreal-timeweatherinformationfromthephone,sothecurrentweatherforecastisgooddevelopmentprospects.TheweatherforecastisbasedonthedevelopmentanddesignofthedevelopmentandapplicationAndrews,runsAndroidsystem,thedevelopmentofthisstandardreferencecomfortprevailingweatherforecastforthedevelopmentofstandards,JAVAlanguageclassencapsulatesthecoderequiredforthedevelopmentofmoreinteresttoprovideaconvenientandefficient,andsimpleweatherforecastforthedevelopmentofthisoperation,verysuitableforpublicusehabits,sothisdevelopmentwillbegreatlypromoted.

KEYWORDS:

Android;operatingsystem;smartphone;weather

第1章绪论

1.1安卓操作系统的发展

Android系统由AndyRubin团队开发制作,开发Android的最初目的是用于数码相机的系统,之后因为数码相机的市场不断地进行扩大,并且也因为新一代智能手机的飞速发展,导致了这一系统的快速崛起,并且在以后的时间中被逐渐的只针对于手机系统这一块操作系统。

本世纪,谷歌和很多厂商进行了联合开发和发展行动,主要研究方向为手机系统,也就是安卓系统的开发和应用。

并且最后还把安卓开发的源码进行了相关公布,例如平板电脑等,而在Android系统正式推出仅仅才两年,在2012年底,通过数据统计,Android操作系统的在市场占有比率超过了称霸十余年的诺基亚的Symbian系统,成为当时世界范围以内的智能手机操作系统长期第一名,并且凭借其开源性的迅速垄断了智能手机低端市场,并且影响其他的低端手机公司,最典型的例子为随着Android市场占有率不断升高,直接导致诺基亚原有的低端手机市场占有率直线下降,而在2013年1月,诺基亚放弃低端市场,也就是诺基亚放弃了原有Symbian系统低端市场,专注于高端智能手机市场,直到现在Android已经基本上垄断了低端手机市场,成为了当前智能手机霸主,这是促进JAVA编程得到了广大的发展空间。

1.2安卓操作系统的简介

Android系统是基于开源linux系统为基础的开源移动设备操作系统,搭载对象主要为智能手机和平板电脑,当前已经发展到的的最新版本为Android5.0(Lollipop)[1]。

Android系统平台由于其开发性优势,使得任何的移动终端都能够加入到Android联盟大军中,这也是的Android系统发展如此迅猛的根本原因,显著的开发性使得拥有广阔的开发者,随着用户的不断增多以及应用不断丰富,这标志Android系统趋向于成熟。

广阔的软件资源使得Android系统的竞争力不断增加,而消费者能够以更低的价格购买到智能手机,这也是Android迅速成为低端手机的霸主的根本原因。

08年美国纽约发布了第一款安卓智能手机,发布的手机WCDMA/HSPA网络,根据报道得知理论下载速率为7.2Mbit/s[2],并且能够连接Wi-Fi无限局域网络,在后面的时间中谷歌和开放手机联盟致力于安卓手机的开发和应用,最后安卓手机的开发和应用厂商已经有摩托罗拉、高通、宏达电和T-Moblie中国移动等很多家著名企业进行联合看开发和应用。

之后再我国国内针对Android操作系统进行二次开发,以Android系统源码为基础,根据实际的硬件结构进行深度定制开发,Android的发展历史可谓与iPhone的发展历史截然不同,由于iPhone的封闭性导致iPhone只能在智能手机的高端市场占据一席之地,而不能向Android一样拥有巨大的用户人群,同时这也证明了Android的火热程度。

1.3项目开发意义

我国的社会国民经济是一步一步不断地飞速发展,我国人民的生活质量水平不断提高,人们的生活观念也在发生变化[3],大多数小康家庭的生活目标不再是追求物质生活的满足,更多是追求精神生活的充实,对于天气的获取也不再局限于天气口诀或者自然现象了,根据了解众多的青少年对于天气的获取是从手机上进行查看的,就目前而言,对于天气情况的获取手机已经成为目前最为流行也是最为方便的方式之一。

从这里就可以看出,目前流行的天气预报的方式之一就是手机天气信息的获取。

 

第2章项目需求分析

2.1功能分析

(1)要有良好效果的界面

在进行安卓的相关开发操作开发研究中,其中用户体验最多的就是界面,而在开发中界面我们称之为UI,设计优美方便的界面将极大地提升用户对软件的体验度,从而获得用户的喜爱。

设计一个让用户感觉体验好的界面是设计中较为重要的一个环节[4]。

(2)天气信息查询功能

设计天气预报程序中最为重要的就是天气信息的实时更新操作,只有这样才能够确保天气是实时变动,并且天气是最为准确和精准的。

本次设计中采用了WebService服务来进行天气的实时更新操作,利用通Activity来进行信息的相关处理操作,并且进行信息的显示[5]。

(3)附加信息

在进行软件设计时,我们还可以增加一些新的功能,比如可以增加网络实时定位功能,从而丰富软件的实用性能。

还可以增加多次城市的查询,这样就可以不仅仅只能局限于一个城市的天气。

(4)操作简单

每一个设计的软件,如果操作的过程很复杂,那么在实际的市场中,是不会被广大的使用者所接受的,这也是为什么一再强调软件的使用要很简单,只有简单才能够让用户喜欢。

2.2性能分析

(1)优化Java代码

安卓的java来发都是用来进软件程序的开发操作的,所以我们可以知道选择一个好的算法将大大提升软件的实际应用和运行效率。

采用一个快捷有效的方法才是开发程序最为重要的。

不断地优化内存代码,并且清除相关的缓存才能够提升代码运行效率。

(2)提高性能

代码要软件中要占用尽可能少的内存,只有这样才能够让代码在运行时有着良好的效率和速度。

并且让还要对CPU进行相关的代码优化操作,合理的分配内存空间,只有这样才能代码运行进行相关访问时性能大大地提升,并且不会产生一些错误。

(3)利用多线程

安卓软件开发设计是使用java语言,所以一般都是利用多线程来进行代码编程,多线程编程的主要好处就是可以对用户的任何操作做到实时反馈和相应的响应,这样也能够极大的缓解内存的压力,并且减少CPU的占用。

从而让用户获得不一样的体验。

(4)降低功耗

我们在进行程序的设计开发时,要注意功能损耗的问题,如果一个程序在运行时占用大量的电量,这是非常不明智的。

占用大量的电量的原因是因为运行相关一些完全没必要的代码。

所以这一程序肯定是不合格并且没有市场前景的去掉代码中一些不必要的代码,这样程序在进行运行时才能够有效率,避免一些冗长的代码拖慢或者消耗过多的电量。

2.3安全分析

(1)安卓的安全设计原则

安卓应用实际平台中相关的程序是没有权限操作的,所以不能够私自进行一些操作进行程序的破坏和相关重建,这是目前安卓开发的最特殊的地方之一。

不允许私自对用户的相关信息进行读取和修改,不允许用户信息文件进行读写操作。

最后要注意的一点就是,对于一些正在运行得到程序不能够进行干扰操作,安卓中的每一个运行程序不能够对一些别的程序进行有干扰操作,并且有些权限要有提前申明。

(在安装时程序会提醒是否授予软件权限)

(2)安卓数据安全原则

安卓应用在有相关权限许可的情况下,对于一些默认授权以外,其余一些系统数据是不能够被别的程序进行增删改查操作的。

这是因为安卓很多代码都是开源,所以在有些系统代码中就必须要进行相关操作,否则就会导致整个系统被私自乱改。

2.4研究内容和开发环境需求

(1)本次的天气预报系统的开发环境由AndroidStudio框架、ndk插件、adt插件构建而成,通过adt插件构建的Android的应用程序的开发环境,同时建立相应的程序开发的框架,而ndk主要是为了对Android系统的环境的模拟(Windows不能支持的支持Android程序的运行需要下载模拟器),或者是可以直接将你的Android手机连接至电脑,将Android作为软件开发环境,上述的两种开发方式为此次开发的主要环境,尤其是天气预报系统主要是运行Android手机上,但是同时支持模拟器。

搭建Android开发环境,下载并安装AndroidStudio,下载并安装androidSDK;并配置好对应的ADT插件、划分适当的运行内存和存储空间来安置Android模拟器[6]。

(2)尽可能多的研究android平台应用程序开发的技术理论,掌握Android框架下开发应用程序的相关技术与流程。

(3)本次程序开发基础是Java语言,再通过这个应用程序来熟悉多线程编程。

(4)如何从远端服务器上获取信息。

 

第3章项目设计分析

3.1程序功能模块图

依据功能的需求分析,在这个项目中一共设计了以下功能(如图3-1.1所示。

):

(1)显示天气信息,除了显示当天的天气信息外还会显示未来五天的天气状况,还有就是目标城市的各种指数情

(2)查询某个城市天气信息,作为一个手机天气预报的软件,最基本的就是查询天气信息了,因此在这个设计中设计了可以按照城市名来查询天气信息。

(3)定位功能,这个功能的主要是当用户打开这个软件时,就会自动显示用户所在城市的天气信息,方便用户体验。

除了这些以外,还有一些非常实用的功能,例如检查手机网络状态是否良好等。

 

 

图3-1.1功能模块

3.2显示信息设计

这个设计中主要有以下几种信息:

(1)当天日期和当天的天气状况,还有未来五天的气候。

(2)天气信息,这里面有温度、风力、湿度等等。

(3)各种指数,好比运动指数、穿衣指数、感冒指数等等。

(4)更新天气的时间。

3.3解析数据

因为这个设计里面所用的信息,如定位功能是从ip地址来判定的,天气信息则是从和风天气网提供的免费的api获得的。

获取天气等信息时采取Json技术解析,再通过接口的调用,直接从之前设置的WebXml获得[7]。

取得到天气信息后就需要解析数据,再把数据传递给相对应的变量。

最后在Activity中显示到界面上,按照需求分析,解析了天气信息,得到未来五天的天气情况,还有城市的各种天气指数。

3.4界面设计

这个项目里面主要就设计了几个界面,最重要的有:

程序启动时所呈现的画面,然后就是启动完成后时显示的界面,即显示信息的主界面,其次是用于显示明添加城市的界面(即查询城市),用户可以在这个界面上输入要查询的城市,然后在信息界面获取天气信息。

在规划界面时,考虑到界面的友好性,靓丽性和实用性。

友好性,是指界面布局简洁,操作简单,不会繁琐多余。

靓丽性,尽可能的将界面设置地更为漂亮,这样也会随之提高应用程序的价值。

另外,还需要考虑的一方面就是尽可能多的在页面将信息展示出来,即在有限的空间内将信息合理地展示出来,便于用户阅读信息,这就是实用性。

接下来就一一介绍这个设计里面的主要界面。

3.4.1程序启动界面

当安装好程序后软件会自动提示是否获取手机权限(GPS定位时需要用到),如图3-2.1所示,为了安全起见市场上的软件都会有这一项提醒,以防止木马侵入。

图3-2.1手机权限

3.4.2信息界面之主界面(MainPage)

当点击允许时软件将进入主页面,因为在安装后已经授予软件权限获取定位,所以在联网状态下它就会自动获取你所在的位置,获取到城市名后便会自动从网上获取天气信息,并将信息显示到界面上。

当进入到这个界面时,有可能会出现卡的情况,因为程序启动后在这个界面会进行一些基本操作,然后当信息获取成功后就会显示设计的布局中。

在这个界面中,会显示有以下信息:

日期:

当天的日期,格式为:

--年--月--日。

天气:

当天的天气情况。

天气图片:

天气情况,显示与当天天气相符的天气图片,如太阳,云朵。

气温:

格式为当天的最低温度/最高温度,单位是摄氏度。

风力:

风向和强度大小。

指数:

有各项指数,包括穿衣指数,过敏指数等等。

天气实况:

指查询时刻的天气情况,包含空气质量,以及湿度,天气,温度。

分享按钮:

有个一键分享的按钮,可以通过QQ,微信,短信等途径分享给你的好友。

菜单按钮:

用点击这个按钮时,可以进入到查询城市界面。

滑动切换:

左右滑动切换到信息界面二(NextPage)。

在滑动时有一定的动作效果。

3.4.3信息界面之城市界面(CityPage)

当用户点击主界面的那个菜单符号时,你就可以看到所示。

有一个简单的介绍和添加城市的按钮,当点击添加城市进入选择你需要获取城市的天气信息。

这是一个ListView页面,用户可以通过上下滑动来选择城市,这里可以显示全国的各个城市,可以具体到县级城市。

搜索框:

在本界面的最上方会有一个输入框,是给用户查询城市用的,在这个框中,默认的是显示“搜索全国城市(中文/拼音)”,并对这个输入框进行了模糊查询。

比如当你输入一个“邵”字,在搜索框下面便会出现所有城市中带有“邵”字的城市,如邵阳,新邵,邵东等等。

当你点击相应的城市时这时系统就会自动退出当前页面而进入主页面,在主页面将你刚刚选中的城市的天气信息显示出来。

3.5程序流程图

关于项目的程序流程图,将在分别在信息显示模块和查询模块来进行描述。

(1)显示模块,主要是运行这个程序时,通过定位获取当前位置,然后通过网络获取得到当前位置的天气信息,并将结果信息显示出来,流程图如图3-5.1所示:

图3-5.1显示模块流程图

(2)查询模块,主要是得到要查询的城市名,然后进行查询,将得到的信息交给显示模块来显示,流程图如图3-6.1所示:

 

图3-6.1查询模块流程图

 

第4章项目实现

在项目实现方面,将以程序运行、界面显示、天气查询、定位、一个后台运行的Service以及下拉刷新等方面来进行设计的。

4.1启动画面

在这个项目中,首先在MainActivity.java文件中创建一个类,然后在该类的onCreate方法中设置布局变量,并需要在清单文件进行注册,声明该布局文件是程序启动时显示的界面。

 

图4-1.1页面实现一

 

图4-1.2页面实现二

图4-1.3页面实现三

图4-1.4页面实现四

WeatherInfo代表天气状况的一个类,含有与天气相关的各种信息,如表1:

表1:

WeatherInfo成员变量的含义

类型

变量名

保存的信息

String

city

城市名

String

weather

天气状况

String

tem

温度

String

wind

风向和强度

String

date

日期

String

mesg

各项指数,如穿衣指数

String

nowinfo

天气实况

4.2信息界面之城市界面

当点击添加城市按钮时,就会跳转到显示全国各个城市的界面,都是按首字母排序的根据26个英文字母一一排序下来,当然用户也可以选择在最上方搜索栏中输入自己想要获取的城市天气信息。

名词解释之适配器:

顾名思义就是把一些相对繁琐数据通过一定的方法,然后在显示到页面上去。

可以理解为是界面数据绑定的一种,它所利用的数据一般都是相对复杂的数据,如数组,链表,数据库,集合等等。

简言之适配器就相当于显示器,把复杂的东西按照人们可以接受理解的方式来实现。

数据库设计:

针对全国各大城市,设计了一个城市数据库,名为city.db。

设置其编号为主键自增长,然后还有几个字段名如province(省份),city(城市名),number(城市代码),apply(中文拼音),allfirstpy(城市名首位字母拼音),firstpy(城市名首字母拼音)如图4-2.1。

 

图4-2.1数据库

想要获取到某个城市的天气信息,首先就必须要选中城市,具体如下图4-2.2和图4-2.3;

图4-2.2流程1

图4-2.3流程2

4.3天气查询

在这页面中设置了查询功能,检测网络连接状态,定位用户所在的当前城市,其中网络检测和定位功能在显示功能中已介绍。

将解释分析查询功能。

首先定义一个editText控件和button控件,分别是用来获得用户输入的城市和点击要知道的信息,具体代码如下图4-3.1。

图4-3.1天气查询

此外,还在这个界面显示了关于本人的一些信息,用的是一个TextView控件,然后对空间进行设置内容。

4.4下拉刷新

在下拉刷新中,其实主要的还是调用系统函数。

在主界面即ListView中刷新。

其中,要获取三个值,第一个是当下拉到某个临界值值后能够执行刷新命令,第二个值是下拉的最大值,第三个值是用户下拉的值。

因为考虑到天气信息的准确性,真实性,用户可以随时通过下拉刷新来获取最新的天气信息。

具体代码如图4-4.1

图4-4.1下拉刷新

4.5窗口小部件widget

用户可以通过长按手机菜单键,或者在系统设置里面进行选择是否开启窗口小部件。

Widget主要是运用了AppWidget框架结构来进行了相关软件部件的桌面摆放布局操作,这样有利于用户对于相关的桌面信息以及桌面布局部件的掌握和了解。

比如一些还没有结束的相关的日历以及音乐器件的信息掌握等等。

程序部件要进行相关的桌面图标的定义以及布局,首先第一步就要在软件代码程序项目中的res/xml项目下目录中间创建一个XML文件来进行相关桌面部件图标以及布局的应用描述,这些部件中的应用软件信息主要包含的信息由软件的的程序大小,软件联网以后更新软件的时间周期时间长短,或者是相关部件布局文件。

对于一些桌面的相关部件大小都是利用单元小格进行划分和进行描述,最后再把相关地桌面标记部件投放在桌面图标上面,这时占用的大小是最为适应桌面单元大小格式的。

AppWidget框架结构是利用Intent广播发送接收的方式来进行相关桌面布局文件的图标的标识控制布局,这样就会让所有的桌面布局文件中的部件中的XML文件都会得到一个信息广播发送接收装置[8]。

这样做的主要目的是为了应对于每一个桌面部件在进行运行时不同的应用状态响应的接收响应操作,AppWidget框架结构是针对于BroadcastReceiver的继承操作,并且继承的是其中的AppWidgetProvider类文件。

所以我们只需要在相关的软件代码中写一个AppWidgetProvider的子类就能够实现,最后利用不同的实现状态功能得到响应的回调响应操作从而控制AppWidget框架结构控制。

AppWidgetProvider类扩展BroadcastReceiver为一个简便类来处理AppWidget广播。

AppWidgetProvider只接收与AppWidget这个有关联的事件广播,比如这个AppWidget被更新,删除,启用,以及禁用[8]。

每当广播事件发生时,AppWidgetProvider就会接收到下面的方法调用:

onUpdate(Context,AppWidgetManager,int[])这个方法是用来周期性更新AppWidget,周期时间用AppWidgetProviderInfo里的updatePeriodMillis属性定义。

此函数也会在用户添加AppWidget时被调用,因此它一般用来执行一些基础的设置,比如为视图定义事件处理器并启动一个临时的服务Service,前提是需要用到它。

但如果你事先定义了一个配置的话,这个方法在用户添加AppWidget时就不会再被调用了,而只在后续更新时被调用[10]。

 

第5章项目调试与功能测试

5.1项目调试分析

在这个项目中,我遇到了许多困难,比如新建了一个Activity,同时创建了与之相对应的布局文件,但是没有在清单文件中AndroidManifest.xml进行注册,致使在程序运行到那个Activity时就会出现crash(闪退)。

在从WebService中获取天气信息时要进行几部操作,最终才能成功获取。

还有一个是我在项目快结束时发现的,当用户进入信息主界面时,程序会获取用户当前的位置,出现了一个情况,就是获取手机网络状态时,没有对出现的所有的状况进行分析判断,导致在程序运行后,不能显示用户当前所在城市的天气信息。

调试信息如图5-1.1:

图5-1.1调试信息一

之后我在代码中,就添加了对状态的判断。

这样针对有时是DISCONNECT有时是UNKNOW的状态就会解决了。

调试信息如图5-1.2:

图5-1.2调试分析

在onCreate()函数中,执行绑定服务,然后就直接利用返回的实例接口,结果这个接口实例并没有获取到,因为bindService是在Activity启动接口之后才会让

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

当前位置:首页 > 高中教育 > 语文

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

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