APP下载

基于Android系统的天气预报查询系统设计

2020-12-06崔雪

河南科技 2020年29期
关键词:Android系统设计

崔雪

摘 要:本设计运用开放性强的Android系统,在智能手机端研发一款用于查询城市天气预报情况的APP。该天气预报查询系统界面友好,可操作性和实用性强,具有良好的可拓展性和维护性,可使用户实时掌握当地天气情况,方便出行和生产安排。经过测试,该天气预报查询系统可稳定运行,基本满足用户天气服务需求。

关键词:Android系统;天气预报查询;设计

中图分类号:TN929.53文献标识码:A文章编号:1003-5168(2020)29-0004-03

Abstract: This design uses the open Android system to develop an APP for querying the weather forecast of the city on the smart phone. The weather forecast query system has a friendly interface, strong operability and practicability, good scalability and maintainability, allowing users to grasp the local weather conditions in real time, facilitating travel and production arrangements. After testing, the weather forecast query system can operate stably and basically meet the needs of users for weather services.

Keywords: Android system;weather forecast enquiry;design

4G技術的广泛应用和5G信息大时代的到来给智能手机移动应用开发带来良好时机。Android系统是真正意义上的开源智能手机操作系统,平台为开发者提供了一个能自主选择使用各种代码搭配的宽松环境,使其不用受到强制性条件约束,催生各种新颖软件应用,移动应用需求增多,也使得应用软件开发成为时下最热门的技术之一。天气预报则可以预测一地短时间内天气变化,和人们生产生活具有密切关系。在信息资源能够高速传输、快速集中的网络化时代,突破时空局限,优化气象数据资料,在自主研发天气预报查询客户端上及时进行气象信息发布,能更好满足本地社会发展需要[1-2]。因此,基于Android系统的天气预报查询系统设计值得研究。

1 项目设计

1.1 总体概述

本系统是一个APP Widget应用窗口小部件,在移动端主页面调出相关程序并开始运行后,根据用户需求自主设定目标城市,具体气象数据信息由文字和图片联合进行展示,内容包括近一周天气预报情况,具体有温度、风向、风速、降水情况等。该系统可实现的基础性功效有:第一,将反映该APP明显特征的欢迎界面显示给用户;第二,启动APP Widget应用程序,为凸显人性化服务,单独将简易实时的天气数据和时间通过小部件显示方式放置于移动端桌面,如果用户单击部件窗口,便会直接切换至查询系统显示界面,界面内含七天内天气详情;用户可根据需要自动定位所在城市并设置常住城市,支持双城市天气情况小部件显示,为使用户翻找快捷,还支持以文本输入框方式来筛选查询城市,点触屏幕选中目标城市便可切换至该城市的天气显示界面;第四,天气显示界面具体内容包括定制城市七天天气详情(温度、晴雨情况、穿衣指数、空气质量等),并附有公历和农历对应日期,标注传统节气和法定休假日,用户还可通过点击菜单键来更新当前天气显示界面背景。

1.2 设计目标

本天气预报查询系统具有较强的适用性和稳定性,以最小成本消耗满足广大用户需求。因此,本设计应该达到以下四点要求:系统可实时对应目标城市最新天气情况;可自主选择定制城市,通过下拉列表菜单或文本框内输入方式实现;尽量消耗较少流量,以此减少用户套餐费用支出,一般在标准间隔时段内通过后台自动更新天气实况,其他时段以预先缓存的天气实况为准;系统要有高用户友好度,操作方便快捷,界面美观大方,支持widget。

2 系统设计

2.1 开发和运行环境

开发环境主要包括JavaSE13(Java 语言软件开发工具包)、Eclipse4.13(集成开发环境)、安卓开发工具包ADT Plug-in24.0.2,支持系统为Android7.0或更高版本,计算机端系统为Windows8。

2.2 数据库设计

APP所用气象数据资料通过调取全国气象系统储存记录得到,因为气象系统网络城市码固定,所以要将各城市码的获取作为得到特定城市天气详情的前置条件,设计思路为在构建本系统数据库时将各城市码缓存在本地,利用Android系统网络查询功能将城市码储存在本地SQlite数据库,以备日后随时调取使用。在本地新建一数据库,命名为db_weather.db,此数据库包含provinces和cities两个子目录。Cities表内含city num(城市码),可帮助进行天气查询操作。此外,还有外键province_id和provinces表构成一对多的匹配关联。

2.3 主要方法和步骤

首先,进行Android开发所需体系构建,新建一项目,命名为WeatherForecastSystem。然后,在本开发程序进行第一次试启动运行时,从备用数据库中将db_weather.db相关资料全部导入本程序数据库。其次,搭建显示界面用于选择定制城市,系统自动获取相关信息资料,找寻符合用户搜索需求的省一级、市一级名称和对应城市码,进而访问http://m.weather.com.cn/data/<城市码>.html,得到气象要素数据详情。对从网络上获取的天气详情进行解析翻译,缓存气象数据和城市码,关联更新日期,更新日期前数据有效,超过更新日期则数据无效,系统重复上述操作获取最新天气情况。最后设置固定时间,根据储存城市码自动更新操作。

2.4 运用的技术和方法

主要使用的工具如下:Mockplus手机界面原型设计工具可灵活设计特色桌面图标,安卓系统Socket通信技术用于编写客户端代码、安卓广播,窗口小部件App Widgets和JSON数据解析帮助实现主要功能。

3 主要功能模块设计

3.1 项目框架

在包含安卓开发工具(Android Development Tools)的Eclipse中新建一个项目,命名为WeatherForecastSystem(天气预报系统)。然后,在该项目内预设多个NameSpace(标识符可见范围)用以储存使用者预设界面布局、数据库、隐藏运行程序和工具实体源代码文件。具体文件包括的内容如表1所示。

3.2 城市列表创建和过滤

城市列表是通过继承android.widget.BaseExpandableListAdapter适配器实现的,以实现其public View getGroupView()和public Void getChildView()分别获取一级分类列表和二级分类列表为主要目的。由于此操作仅可成功实现文本显示功能,相应利用TextView组件填充便可满足功能要求。开发者欲构建此自定义适配器,从预先建立的省一级的Python列表和Numpy数组String[]groups及含有地级市级别子列表String[][]childs获取数据便可。此外,为达成筛选功效,人们需要搭建android.widget.Filterable接口,此接口先配置了一个getFilter()返回Filter过滤器列表,所以仍要构建一个Filter过滤类。在设计的天气预报查询系统中,搭建一个内部类CityFilter,它继承android.widget.Filter类,覆盖操作达成两个方法:一是performFiltering()获取FilterResults过滤选出所需对象;二是依据获取到的FilterResults对象更新适配器的publishResults()。

其中,performFiltering(CharSequence constraint)方法的实现是通过constraint关键字达成的。先以省一级为对标级别开始匹配操作,若匹配顺利,则此省下属全部城市会加入进来,若匹配不成功,则依序与该省份下辖城市进行核验关联,然后匹配,此后仅加入符合匹配结果的城市。匹配结果记录在与Map>values类似的矢量中,再通过新构建的FilterResults封装返回。另外的publishResults(CharSequence constraint,FilterResults results)方法遵循上述过滤结果对象方法获取新的String[]groups和String[][]childs数组。最后,采取BaseExpandableListAdapter父类的notifyDataSetChanged()方法更换列表,此种方式可达成过滤后结果的显示。完成以上程序后,在实际运行中第一次点击添加城市后会先后出现两个菜单,按步骤选取用户所需城市即可完成设置。

3.3 widget窗体部件的更新

本查询系统桌面小部件里附加时间显示功能,所以窗口小部件必须顺利进行实时更新,保证本程序和手机系统内置时间一致。此类设计专门针对特定时间实现特定操作。其思路是在设计窗口小部件的更新函数方法中内置一自动运行后台服务项目,以此实现更新窗口小部件中的时钟显示,并且可以自动在间隔一分钟时重复运行此后台服务。自建一可以隐藏或最小化的运行服务类,达成该服务方法需要先启动调出的onStart()方法,得到widget的布局对象、AppWidgetManager和城市码并更新天气,获取当前时间设置,警报服务精确到秒级,间隔设置在1 min。然后,在实现AppWidgetProvider的widget类的更新函数方法中运行此自建服务项目。若手机用户有取消查询系统窗口小部件的需求,在删除widget部件时,调用的后台服务也将结束持续响应。支持这种操作不可缺少的是实现Service类中的onDestory()方法,该方法在服务结束时被调出,根据此方法取消AlarManager内置的预警功能。在widget类中的onDisabled()方法中调用stopService方法可以取消时钟后台自动更新的功能,其中的onDisabled方法在widget被用户删除时由系统自动调用。

自建一个Service服务后,系统将在清单文件AndroidManifest.xml中标明此自建服务,经过上述的设置步骤后,窗口小部件就可以达成自动更新的目的。

3.4 GPS定位功能的实现

查询系统若想在手机端使用GPS定位功能,需要先获取GPS定位管理器,接下来获取位置提供程序。为精准满足用户需求,可利用Criteria设置对象条件筛选location provider結果,获取最终位置提供程序后,可顺利调出位置管理器对象中的getLastKnownLocation()方法,得到最后地址封装标的。最后标的编译处理由类创建对象的过程中,Geocoder将经纬度处理为地理位置信息List对象,List对象可获取使用者地址名。软件开发过程中,ADT插件可实现为安卓模拟器指定随意地址的功效。此外,为实现定位功能,还需要设置一解析XML的工具类,本系统主要利用LocationXMParser完成。

4 结语

天气预报APP软件推广应用后,用户自行下载即可随时随地获取实时天气状况,相比其他信息获取途径,天气APP软件充分利用移动互联网便捷高效的传播优势,能更好提醒用户每日天气情况,提供具体且准确的实时天气预报及其他多元化功能服务,提升了气象服务水平。

参考文献:

[1]姚胜.基于Android的天气预报客户端设计与研究[J].计算机测量与控制,2019(9):253-256.

[2]陈利婷.基于App Inventor的天气预报系统的设计与实现[J].电脑知识与技术,2019(11):81-82.

猜你喜欢

Android系统设计
BUBA台灯设计
有种设计叫而专
Android系统上的移动互联网集成平台开发机制
Android系统核心管理工具设计与实现
Android下的机械式电表数字识别技术研究
陈国兴设计作品
基于GPS和iBeacon的智能校园信息发布平台设计与实现
基于增强现实技术的导航系统研究
匠心独运的场地设计画上完美句点
跨越式跳高递进与分层设计