Android项目之天气预报 的实现分析
输入要查询的城市名称,点击查询按钮后,依次出现七天的天气情况。出现时有动画效果
二、实现过程
(一)获取天气预报数据
1、首先搞定天气预报数据来源的问题,提高天气预报服务的有很多网站,这些网站一般都会提供比较详细的 API 接口供应用程序调用,以聚合数据为例,其官网为:https://www.juhe.cn/如下图所示:
点击注册,进入注册界面:
登录成功后,就会进入到如下界面。
点击左侧菜单中我的数据,进入如下界面
点击申请新数据,如下所示,必须实名认证
进入聚合数据首页,选择 API 选项卡,选择免费的天气预报 API
点击进入后,只要申请就送 500 次使用,如下图所示。
复制其中的 AppKey:ab9d7e2007472d723baf71fcdc4ba094
打开全国天气预报 API 后,会有一项请求示例,按照其规则拼接字符串后在地址栏中输入
后可得
具体参照聚合数据的文档
下面是类的展示
2、编写网络数据访问工具类
首先需要在 uiti 包下定义一个接口,比如将它命名成 HttpCallbackListener,代码如下
package com.example.weather.util; public interface HttpCallbackListener { void onFinish(String response); void onError(Exception e); }
然后定义 HttpUtil 类,代码如下
package com.example.weather.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import android.util.Log; public class HttpUtil { public static void sendHttpRequest(final String address, final HttpCallbackListener listener) { new Thread(new Runnable() { public void run() { HttpURLConnection connection = null; try { URL url = new URL(address); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); connection.setDoInput(true); connection.setDoOutput(true); InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } if (listener != null) { /