欢迎来到天天文库
浏览记录
ID:13236218
大小:63.50 KB
页数:11页
时间:2018-07-21
《android平台下的空气质量和天气情况查询应用设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android平台下的空气质量和天气情况查询应用设计与实现 摘要:Android体系结构采用软件堆层(SoftwareStack)的架构,提供一系列的核心应用程序包括浏览器、电子邮件客户端、通讯录和日历等,其市场份额长年保持在50%以上,无论从技术层面还是受众范围来看都是非常合适的应用开发平台。 关键词:Android平台;系统设计;大气环境 中图分类号:TP311文献标识码:A文章编号:1009-3044(2016)10-0073-04 1概述 中国经济在过去40年快速的发展极大地提高了人民生活水平,同时也引起了严重的环境问题。早在2007年Cyrano
2、ski便在《自然》杂志撰文指出大气污染已经成为困扰大多数中国城市的严重问题。2009年以来,在国内外舆论的引导下大气污染问题逐步从一个学术性议题演变为政治性的大众议题。2014年起,环境保护部开始通过其官方网站正式对公众发布实时PM2.5数据。数据的公开发布有助消除公众的疑虑,同时对公共健康起到了指导作用。随着“互联网+”时代的到来,大众获取信息的主要手段已经从电视广播报纸转变为网络,而智能手机的普及化进一步提升了大众获取信息的能力。相比于网页模式,手机端应用的最大优势在于可以智能定位,随时随地获取最新数据。Android体系结构采用软件堆层(SoftwareSta
3、ck)的架构,提供一系列的核心应用程序包括浏览器、电子邮件客户端、通讯录和日历等,其市场份额长年保持在50%以上,无论从技术层面还是受众范围来看都是非常合适的应用开发平台。因此,在Android系统下,开发一款能够实时查询所处位置空气质量和天气情况的手机应用是一个具有明显用户需求的任务。 2系统设计 一般的空气质量查询应用只能对大气颗粒物(PM2.5和PM10)和大气污染物(SO2、CO、NOX和O3)进行查询。考虑到气象因素与大气污染存在一定关联,而且这两个因素共同决定了用户进行室外运动的意愿。因此,本文所提应用程序划分为空气质量查询和天气查询两大功能。空气质
4、量查询功能部分划分为用户界面、网上数据获取与解析、数据适配器和相关知识查询四个模块;天气查询功能部分用户界面、数据获取与解析、数据库适配器三个模块。各个模块之间的关系如下图1所示。 图1应用总体设计思想 在空气质量查询功能模块中,当用户通过界面发送请求时,空气质量数据获取子模块负责从中国环境监测总站城市空气质量实时发布平台加载数据信息,然后进行数据解析显示在用户界面上。气象数据查询模块的流程与前者相似,唯一不同在于使用了不同的解析技术。JSON相对于XML,速率快,数据的体积小,JSON与JavaScript的交互更加方便,但JSON对数据的描述性比XML较
5、差。因而结合两者解析的优缺点以及服务端返回数据格式,在解析空气质量数据时使用JSON解析,在解析天气数据时使用XML的Pull解析。 3功能实现 3.1程序设计 通过JSON方式实现PM2.5数据解析,通过定义JSONArray和JSONObject获取大气环境的相关数据,包括AQI、城市名、PM2.5、PM10、首要污染物、污染级别等,主要代码如下所示: protectedvoidonPostExecute(Stringresult){ ArrayListpm25List=null; if(result!=null&&!result.contains(
6、"error")){ Log.d(PM25Provider.LogTag,result); try{JSONArraylocalJSONArray=newJSONArray(result); pm25List=newArrayList(); for(inti=0;i7、ocalJSONObject.optString("aqi"); pm25.area=localJSONObject.optString("area"); pm25.pm2_5=localJSONObject.optString("pm2_5"); pm25.pm10=localJSONObject.optString("pm10"); pm25.position_name=localJSONObject.optString("position_name"); pm25.primary_pollutant=localJSONObject.optStri
7、ocalJSONObject.optString("aqi"); pm25.area=localJSONObject.optString("area"); pm25.pm2_5=localJSONObject.optString("pm2_5"); pm25.pm10=localJSONObject.optString("pm10"); pm25.position_name=localJSONObject.optString("position_name"); pm25.primary_pollutant=localJSONObject.optStri
此文档下载收益归作者所有