-----------------------------------该文章代码已停更,可参考浩比天气(更新于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