基于AppInventor的天气预报系统的设计与实现
作者:***
来源:《电脑知识与技术》2019年第11期
        摘要:Android目前是世界是最受欢迎的智能手机系统之一,2017年的市场占有率为85.9%,迫切需要一大批的开发者,而App Inventor是一款基于浏览器的完全在线的Android开发工具,采用搭积木的方式来编程,简单有趣,是青少年学习编程入门的优秀软件。
        关键词:App Inventor;中职;天气预报;Web服务API
        中图分类号:TP311 文献标识码:A
        文章编号:1009-3044(2019)11-0081-02
        1 App Inventor在中职学校计算机专业教育中的实用性
        说到计算机专业,很多人第一想到的就是编程,说明编程在计算机专业的重要性。在中职
学校,学生的外语水平普遍较低,决定了他们学习一门编程语言的不易性,很多同学都学得很辛苦,甚至厌学或弃学。而App Inventor的开发入门较简单,学生不用编写代码,调试结果能直接在智能手机或平板上演示,对活泼好动的中职生具有非常的吸引力。如果在学习中引起学生对程序开发的兴趣,他们可以转向功能更强的程序设计语言的学习,故App Inventor在中职计算机专业教育中具有很强的引导性、实用性。
        2 JSON格式数据
        JSON是一种轻量级的数据交换格式,易于人阅读和编写,数据体积小,也易于机器解析和网络传输。JSON对象表示为键值对,是一个“名称/值”的集合,每个名称后跟一个冒号,花括号保存对象,数据由逗号分隔。下面是一个用JSON格式表示个人信息数据的示例:
        {“name”:”张三”, //值为字符串
        “age”:”20”, //值为数值
        “address”:{“province”:”广东”, ”city”:”汕头”} //值为JSON对象
        }
        3 百度地图Web服务API
        百度地图Web服务API为开发者提供https/http接口,即开发者通过https/http形式发起检索请求,获取返回xml或json格式的检索数据。本系统采用百度地图Web服务API中提供的逆地理编码服务,该服务将提供的坐标点(经纬度)转换为对应位置信息(如所在行政区划)功能。在系统开发之前,开发者先在百度地图API平台中申请“Web服务API”接口,新建一个“浏览器端”的应用来获取开发密钥,每天可免费使用6000次。本系统中使用的逆地理编码接口地址为:
        http://api.map.baidu/geocoder/v2/?location=纬度,经度&output=json&coord_type=wgs84ll&ak=您的密钥
        其中参数output=json表示返回数据为json格式,参数coord_type=wgs84ll表示坐标的类型为GPS经纬度
        4 京东万象平台
        京东万象平台是大数据交易平台,数据需求方在京东万象平台查自己想要的数据,通过调用数据服务方提供的数据接口获得数据,并经过数据服务方的加工、处理、分析等,更深入地得到数据需求方所需的数据价值。本系统使用京东万象平台免费提供的和风“中国和世界天气预报”API接口,它能提供全球5万个城市的7天天气预报、实况天气、每3小时天气等数据。和风天气采用JSON格式的数据,格式相对简单,适合新手,每天有5000次的免费请求,相对学习而言完全够用。故新手需在京东万象平台注册一个帐号并申请一个APPKEY即可使用该数据接口并获取数据。调用和风天气API的链接地址为:
        https://way.jd/he/freeweather?city=城市名&appkey=您的密钥
        5 天气预报系统的功能及技术可行性分析
        1)天气预报系统在App Inventor软件中开发,主要实现的功能有:
        ① 定位在当前城市,显示所在城市实时天气状况;
        ② 显示今天和未来2天所在城市的天气预报信息;
        ③ 可以查询任意城市实时、今天和未来2天的天气信息;
        ④ 显示相关的天气状况、气温、风向、风力等信息。
        2)技术可行性分析
        ① 城市定位:
        在App Inventor软件中内置的位置传感器组件可以用GPS全球定位导航系统来获取当前设备所在的位置状态,也可通过无线网线或等方式进行定位,定位后位置传感器组件返回所在位置的经纬度、海拔等相关信息。
        ② 调用API接口:
        在App Inventor软件内置的通信连接Web客户端组件,可以实现在不出现浏览器窗口的前提下对网页进行浏览,本系统可以根据定位城市或查询的城市名,调用Web客户端组件来设置API的链接地址,调用百度地图和京东万象提供的API服务,并获取返回数据。
        ③ 数据的解析:
        解析的数据主要有百度地图Web服务API中解析逆地理编码返回的城市信息,解析和风
天气返回的天气状况、气温等信息,因这些信息都是用JSON格式返回,Web浏览器组件中有解码JSON文本的方法,并返回列表数据,在列表中可以用查“键值对”的方法返回所查的数据的值。
        6 界面布局和使用的组件
        本系统的屏幕Screen布局设计如图1、图2所示,图1是系统获取GPS定们后显示的界面,图2是输入城市名单击“查询”按钮后显示的界面。
        1)屏幕上方显示设备当前所在城市的城市名或者查詢城市的城市名,接着显示城市的实时天气状况,下面显示今天和未来二天的天气预报情况,最下方是查询输入框,输入城市名后单击按钮可查询天气状况。所使用的组件有水平布局、标签、文本输入框、按钮。
        2)位置传感器1个:获取设备的GPS定位。
        3)计时器1个:程序刚开始时,设备获取GPS定位需要一定的时间,定时器可以循环查询设备是否已成功GPS定位,成功定位后须将GPS定位的经纬度信息传递给百度地图逆地理编码API查询。
天气预报代码大全        4)通信连接Web客户端组件2个:一个网址设置为百度地图逆地理编码API的接口地址,另一个网址设置为和风天气API的接口地址,之所以用2个组件,是因为获取的返回信息不同,对它们的解析也不同。
        7 程序设计
        1)获取GPS定位:设置计时器的时间间隔为10秒,如果未获取位置信息,则10秒查询一次,如果位置传感器获取了GPS经纬度,将它的值嵌入到Web客户端1的网址中,调用百度地图Web服务API中的逆地理编码服务地址,返回城市信息,并将计时器停用。
        2)当百度地图Web服务API中的数据返回时,调用Web客户端解析JSON文本,查看它的返回数据状态信息是否成功,如果成功继续解析数据中包含的城市名信息,并将城市名嵌入到Web客户端2的网址中,调用万象平台和风天气数据服务的API地址。
        3)当和风天气数据服务的API返回数据时,解析JSON数据,获取相关关键字的值,并显示在屏幕上。下图是解析“城市名“标签的程序,其它标签的值可参考“城市名”标签的解析。
        4)当输入城市名,点击“查询”按钮时,设置Web客户端2的网址并向和风天气API发送
数据请求服务。
        从本系统上可以看出,App Inventor简单易学。2017年7月国务院印发《新一代人工智能发展规划》,强调“在中小学阶段设置人工智能相关课程,逐步推广编程教育”,而本系统的程序设计既结合当今的互联网、大数据应用,又融合移动终端开发,非常能吸引青少年的学习兴趣,可作为编程入门的课程在中职学校中大力开展。
        参考文献:
        [1] 金丛军.App Inventor开发训练营[M].北京:人民邮电出版社,2018.
        [2] 刘载兴,陈宏镜.Android积木式编程开发[M].北京:高等教育出版社,2016.
        [3] 白乃远,曾奕霖.App Inventor 2 Android应用开发实战[M].北京:电子工业出版社,2017.
        【通联编辑:唐一东】