-----------------------------------该文章代码已停更,可参考浩比天气(更新于2019/6/25)-----------------------------------
拜读了郭霖大神的《第一行代码(第二版)》后,决定对其文末的酷欧天气实战项目进行数据扩充以及代码详解,完整文件请从我的GitHub中下载,想学习更多Android知识在看完本篇文章后请出门右转:京东、当当、亚马逊、天猫、PDF、Kindle、豆瓣、多看。
具体步骤还是按照郭霖大神的分析思路来,外加一点点个人的认知。
目录(上)
文章目录
##一、功能需求及技术可行性分析
1、确定APP应该具有的功能
- 可以查询全国所有省、市、县的数据(列表)
- 可以查询全国任意城市的天气
- 可以切换城市查询天气
- 可以手动更新以及后台自动更新天气
2、考虑数据接口问题
- 如何得到全国省市县的数据信息
- 如何获取每个城市的天气信息
3、获取全国省市县数据信息
- 首推郭霖大神架设的供学习使用的服务器(返回JSON数据格式):http://guolin.tech/api/china
- 和风天气国内城市ID:https://cdn.heweather.com/china-city-list.txt
- 中国天气城市ID列表:http://cj.weather.com.cn/support/Detail.aspx?id=51837fba1b35fe0f8411b6df
注:除第一个外,其余都是可获取的原始数据,需要进行数据预处理。(数据预处理部分后期文章补上)
4、获取每个城市的天气信息
- 和风天气API:普通用户每天1000次访问量 https://www.heweather.com/documents
- 彩云天气API:个人开发者免费10000次访问量 http://wiki.swarma.net/index.php/彩云天气API/v2
- 聚合数据天气API:2元/1000次访问量 https://www.juhe.cn/docs/api/id/39
- YY天气API:免费会员30次/小时 http://www.yytianqi.com/api.html
- 心知天气API:个人免费版400次/小时 https://www.seniverse.com/doc
- 中国气象数据网API:气象大数据交易平台 http://data.cma.cn/market/marketList.html
- 气象大数据应用产创平台:http://www.weatherdt.com/api.html
5、解析数据
以和风天气为例(其他API接口的使用后期文章更新),获取和风天气返回的JSON格式的城市详细天气数据。取苏州的详细天气信息,如下图:
并对其进行分析:(选择你所需要的数据)
其中,aqi包含当前空气质量的情况。basic中包含城市的一些具体信息。daily_forecast中包含未来3天的天气信息。now表示当前的天气信息。status表示接口状态,“ok”表示数据正常,具体含义请参考接口状态码及错误码。suggestion中包含一些天气相关的生活建议。
##二、创建数据库和表
1、建立新的项目结构
在Android Studio中新建一个Android项目,项目名叫CoolWeather,包名叫做com.coolweather.android,之后一路Next,所有选项都使用默认就可以完成项目的创建。
为了让项目能有更好的结构,在com.coolweather.android包下再新建四个包。其中,db包用于存放数据库模型相关代码。gson包用于存放GSON模型相关的代码,service包用于存放服务相关代码,util包用于存放工具相关的代码。
2、将项目中所需的各种依赖库进行声明,编辑app/build.gradle文件,在dependencies闭包中添加如下内容:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
testCompile 'junit:junit:4.12'
compile 'org.litepal.android:core:1.6.0'
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.github.bumptech.glide:glide:4.3.1'
}
为了简化数据库的操作,我们使用LitePal来管理数据库。在dependencies闭包中,最后四行为新添加的声明,都更新为最新的版本号。其中,LitePal用于对数据库进行操作,OkHttp用于进行网络请求,GSON用于解析JSON数据,Glide用于加载和展示图片,以上四种声明都附有GitHub超链,可以点击进行深入了解。
3、设计数据库表结构
准备建立3张表:province、city、county,分别用于存放省、市、县的数据信息。对应到实体类中就是建立Province、City、County这三个类。由于LitePal要求所有的实体类都要继承自DataSupport这个类,所以三个类都要继承DataSupport类。
在db包下新建一个Province类,代码如下:
public class Province extends DataSupport{
private int id;//实体类的id
private String provinceName;//省的名字
private int provinceCode;//省的代号
//getter和setter方法
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getProvinceName() {
return provinceName;

本文详细解析了《第一行代码(第二版)》实战项目酷欧天气的增强版数据接口,包括获取全国省市县数据信息的接口、解析JSON数据以及创建数据库和表。使用LitePal管理数据库,通过HttpUtil类与服务器交互,利用Utility类处理JSON数据,展示省市县数据。完整代码可在GitHub找到。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



