APP下载

Android移动终端天气预报软件的设计与实现

2018-08-10宋曼

科学与财富 2018年16期
关键词:天气预报

宋曼

摘 要:天气预报作为一种基础服务已经深入的融入到人们日常生活中,现在我们出行、上班、晨练、出差、旅游都离不开天气预报。本文提出设计一个基于Andriod技术的天气预报APP软件,它是一种在Andriod手机平台运行的非常实用的天气信息提供软件,使用方便且功能强大,能提供各方面天气相关信息和贴心的生活指数。用户可以通过天气预报软件及时获得近期天气的状况和变化,及时做好各方面计划和防御措施。

关键词:Android;天气预报;APP

天气信息和人们的日常生活息息相关,随着人们活动范围的扩大和出行需要,及时精确的获取天气信息显得越来越重要。为此设计了基于Andriod技术的天气预报APP软件,它是一种在Andriod手机平台运行的非常实用的天气信息提供软件,使用方便且功能强大,能提供各方面天气相关信息和贴心的生活指数。用户可以通过天气预报软件及时获得近期天气的状况和变化,及时做好各方面计划和防御措施。

一、需求分析

该天气预报软件中具备以下功能。

1. 可以罗列出全国所有的省、市、县。

2. 可以查看全国任意城市的天气信息。

3. 可以自由地切换城市,去查看其他城市的天气。

4. 提供手动更新以及后台自动更新天气的功能。

二、天气预报软件的各模块功能描述

1. 城市管理模块

此模块包含城市添加、删除和查找。用户可以通过手动输入,自动定位和选择系统内置的热门城市等方式选择目标城市。也可以在城市管理界面进行城市的长按删除。

2. 显示天气模块

此模块主要完成显示所选城市相关天气信息,显示未来几天天气预览和一些必要的生活指数。另外用户还可以通过系统内置分享将天气信息分享到朋友圈,微信好友和QQ好友。

3. 实景天气模块

此模块中用户可以通过拍照和从图库选取两种方式选择实景天气图片并上传到服务器,还可从服务器下载实景天气图片并查看。

4. 用户管理模块

此模块包含一整套的用户管理解决方案,主要功能包括:注册,登录,找回密码,更改密码,查看和修改用户基本信息等功能。

5. 设置界面模块

此模块提供软件相关的用户反馈,检查更新和关于我们。

三、天气预报软件各模块功能的实现

1. 城市管理模块

全国所有省市县的数据都是从服务器端获取到的,因此这里和服务器的交互是必不可少的,在 util 包下先增加一个 HttpUtil 类从服务器端获取数据;服务器返回的省市县数据都是“代号|城市,代号|城市”这种格式的,因此提供一个工具类来解析和处理这种数据:在 util 包下新建一个 Utility 类做工具类。接下来是在 res/layout 目录中新建choose_area.xml 布局,编写布局文件;然后编写用于遍历省市县数据的活动:在 activity 包下新建 ChooseAreaActivity类;最后配置 AndroidManifest.xml 文件。这样就完成了全国省市县数据的遍历。

2. 显示天气模块

查询天气,并且把天气信息显示出来了。天气信息应该在一个新的界面进行展示,因此需要创建一个新的活动和布局文件。在 res/layout 目录中新建 weather_layout.xml作为布局文件;在 Utility 类中添加方法,用于解析和處理服务返回的 JSON 数据;最后创建活动:在 activity 包下新建 WeatherActivity 继承自 Activity。

3. 实景天气模块

经过以上2个阶段的开发,现在天气预报软件的主体功能已经有了,不过你会发现目前存在着一个比较严重的 bug,就是当你选中了某一个城市之后,就没法再去查看其他城市的天气了,即使退出程序,下次进来的时候还会直接跳转到 WeatherActivity。因此,在此模块中将加入切换城市的功能,并且为了能够实时获取到最新的天气,将加入手动更新天气的功能。

首先在布局文件中加入切换城市和更新天气的按钮,修改布局文件 weather_layout.xml ;然后修改 WeatherActivity 中的代码, 在 Intent 中 加 入标志位,并添加对标志位进行处理的代码,实现切换城市和更新天气的功能。

4. 用户管理模块

为了要让天气预报软件更加智能,在这个模块加入后台自动更新天气的功能,这样可以尽可能地保证用户每次打开软件时看到的都是最新的天气信息。要想实现上述功能,就需要创建一个长期在后台运行的定时任务。首先在 service 包下新建一个 AutoUpdateService 继承自

Service,在 onStartCommand()方法中先是开启了一个子线程,然后在子线程中调用updateWeather()方法来更新天气,我们仍然会将服务器返回的天气数据交给 Utility 的handleWeatherResponse()方法去处理,这样就可以把最新的天气信息存储到 SharedPreferences文件中。之后创建定时任务,为了保证软件不会消耗过多的流量,这里将时间间隔设置为 8 小时,8 小时后就执行AutoUpdateReceiver 的 onReceive()方法,在 receiver 包下新建 AutoUpdateReceiver 继承自 BroadcastReceiver;然后修改WeatherActivity 中的代码激活 AutoUpdateService 这个服务。最后在 AndroidManifest.xml 中注册新增的服务和广播接收器。这样只要一旦选中了某个城市并成功更新天气之后,AutoUpdateService就会一直在后台运行,并保证每 8 小时更新一次天气。

5. 设置界面模块

设计天气预报软件的图标。将这张图片命名成 logo.png,放入 res/ drawable-hdpi 目录,然后修改配置文件 AndroidManifest.xml中的代码;修改程序的名称,打开 res/values/string.xml 文件,其中 app_name 对应的就是程序名称。

猜你喜欢

天气预报
测不准的天气预报
天气预报的前世今生
中期天气预报
小小天气预报员