先上效果图:

深圳实时天气数据

关于获取实时天气数据有很多种方法,像聚合数据、和风天气等平台都可以提供数据来源,本文主要使用和风天气SDK获取实时天气数据。以下是使用和风天气SDK来获取地方实时天气数据的步骤。

1.申请获得和风天气的username和key值

访问和风天气官网 和风天气,选择进入"天气API/SDK":

如无账户,需注册,然后登陆控制台:

接着选择“应用管理”项,点击“新建应用”,填写应用名称:

然后再应用中添加key,输入key的名称和你的应用包名即可申请到一个username和key值:

2.下载Android版和风天气SDK:和风天气SDK

3.启动AndroidStudio,新建工程,将上述步骤下载好的jar包导入到as中:

右击jar包,选中“add as library”,即可导入app下的build.gradle:

同时在此build.gradle下需要添加两项依赖(网络请求和json数据解析用到的类库):

implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation 'com.google.code.gson:gson:2.6.2'

因为要网络来获取实时的天气情况,因此需要在配置文件中添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />

4.做好以上准备工作之后,以下通过代码实现来获取地方城市的实时天气数据。

xml文件为一个简单的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFF"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="25sp"android:textColor="#000"/><TextViewandroid:id="@+id/tv_tianqi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#000"/><TextViewandroid:id="@+id/tv_kongqi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#000"/><TextViewandroid:id="@+id/tv_airqlty"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#000"/></LinearLayout>

java 实现:

package mega.cn.funweather;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import interfaces.heweather.com.interfacesmodule.bean.Lang;
import interfaces.heweather.com.interfacesmodule.bean.Unit;
import interfaces.heweather.com.interfacesmodule.bean.air.now.AirNow;
import interfaces.heweather.com.interfacesmodule.bean.weather.now.Now;
import interfaces.heweather.com.interfacesmodule.view.HeConfig;
import interfaces.heweather.com.interfacesmodule.view.HeWeather;public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";private TextView tv_airqlty,tv_tianqi,tv_kongqi,tv_city;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initWeather();initViews();}private void initViews() {tv_tianqi =(TextView) findViewById(R.id.tv_tianqi);tv_kongqi =(TextView) findViewById(R.id.tv_kongqi);tv_airqlty =(TextView) findViewById(R.id.tv_airqlty);tv_city =(TextView) findViewById(R.id.tv_city);}private void initWeather() {HeConfig.init("第一步申请的username值","第一步申请的key值");HeConfig.switchToFreeServerNode();}@Overrideprotected void onStart() {super.onStart();getWeather();}private void getWeather() {HeWeather.getWeatherNow(MainActivity.this, "CN101280601"/*CN+中国城市代码*/,Lang.CHINESE_SIMPLIFIED , Unit.METRIC ,new HeWeather.OnResultWeatherNowBeanListener() {@Overridepublic void onError(Throwable e) {Log.i(TAG, "Weather Now onError: ", e);}@Overridepublic void onSuccess(Now dataObject) {String jsonData = new Gson().toJson(dataObject);Log.i(TAG, " Weather Now onSuccess: " + jsonData);String tianqi = null,wendu = null,city = null;if (dataObject.getStatus().equals("ok")){String JsonNow = new Gson().toJson(dataObject.getNow());String JsonBasic = new Gson().toJson(dataObject.getBasic());JSONObject jsonObject = null;JSONObject jsonObject2 = null;try {jsonObject = new JSONObject(JsonNow);jsonObject2 = new JSONObject(JsonBasic);tianqi = jsonObject.getString("cond_txt");wendu = jsonObject.getString("tmp");city = jsonObject2.getString("location");} catch (JSONException e) {e.printStackTrace();}}else {Toast.makeText(MainActivity.this,"有错误",Toast.LENGTH_SHORT).show();return;}String wendu2 = wendu +"℃";tv_city.setText("城市:"+city);tv_tianqi.setText("当前天气:"+tianqi);tv_kongqi.setText("当前温度:"+wendu2);}});HeWeather.getAirNow(MainActivity.this, "CN101280601"/*CN+中国城市代码*/,Lang.CHINESE_SIMPLIFIED, Unit.METRIC, new HeWeather.OnResultAirNowBeansListener() {@Overridepublic void onError(Throwable throwable) {Log.i(TAG,"ERROR IS:",throwable);}@Overridepublic void onSuccess(AirNow airNow) {Log.i(TAG,"Air Now onSuccess:"+new Gson().toJson(airNow));String airStatus = airNow.getStatus();if (airStatus.equals("ok")){String jsonData = new Gson().toJson(airNow.getAir_now_city());String aqi = null,qlty = null;JSONObject objectAir = null;try {objectAir = new JSONObject(jsonData);aqi = objectAir.getString("aqi");qlty = objectAir.getString("qlty");tv_airqlty.setText("天气状况:"+qlty+" "+"空气质量:"+"("+aqi+")");} catch (JSONException e) {e.printStackTrace();}}else {Toast.makeText(MainActivity.this,"有错误",Toast.LENGTH_SHORT).show();return;}}});}
}

附录中国城市代码:

直辖市"北京","上海","天津","重庆""101010100","101020100","101030100","101040100"特别行政区"香港","澳门""101320101","101330101"黑龙江"哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","鹤岗","鸡西","佳木斯","七台河","黑河","绥化","大兴安岭""101050101","101050201","101050301","101050901","101050801","101051301","101051201","101051101","101050401","101051002","101050601","101050501","101050701"吉林"长春","延吉","吉林","白山","白城","四平","松原","辽源","大安","通化""101060101","101060301","101060201","101060901","101060601","101060401","101060801","101060701","101060603","101060501"辽宁"沈阳","大连","葫芦岛","盘锦","本溪","抚顺","铁岭","辽阳","营口","阜新","朝阳","锦州","丹东","鞍山""101070101","101070201","101071401","101071301","101070501","101070401","101071101","101071001","101070801","101070901","101071201","101070701","101070601","101070301"内蒙古"呼和浩特","呼伦贝尔","锡林浩特","包头","赤峰","海拉尔","乌海","鄂尔多斯","通辽""101080101","101081000","101080901","101080201","101080601","101081001","101080301","101080701","101080501"河北"石家庄","唐山","张家口","廊坊","邢台","邯郸","沧州","衡水","承德","保定","秦皇岛""101090101","101090501","101090301","101090601","101090901","101091001","101090701","101090801","101090402","101090201","101091101"河南"郑州","开封","洛阳","平顶山","焦作","鹤壁","新乡","安阳","濮阳","许昌","漯河","三门峡","南阳","商丘","信阳","周口","驻马店""101180101","101180801","101180901","101180501","101181101","101181201","101180301","101180201","101181301","101180401","101181501","101181701","101180701","101181001","101180601","101181401","101181601"山东"济南","青岛","淄博","威海","曲阜","临沂","烟台","枣庄","聊城","济宁","菏泽","泰安","日照","东营","德州","滨州","莱芜","潍坊""101120101","101120201","101120301","101121301","101120710","101120901","101120501","101121401","101121701","101120701","101121001","101120801","101121501","101121201","101120401","101121101","101121601","101120601"山西"太原","阳泉","晋城","晋中","临汾","运城","长治","朔州","忻州","大同","吕梁""101100101","101100301","101100601","101100401","101100701","101100801","101100501","101100901","101101001","101100201","101101101"江苏"南京","苏州","昆山","南通","太仓","吴县","徐州","宜兴","镇江","淮安","常熟","盐城","泰州","无锡","连云港","扬州","常州","宿迁""101190101","101190401","101190404","101190501","101190408","101190406","101190801","101190203","101190301","101190901","101190402","101190701","101191201","101190201","101191001","101190601","101191101","101191301"安徽"合肥","巢湖","蚌埠","安庆","六安","滁州","马鞍山","阜阳","宣城","铜陵","淮北","芜湖","毫州","宿州","淮南","池州""101220101","101221601","101220201","101220601","101221501","101221101","101220501","101220801","101221401","101221301","101221201","101220301","101220901","101220701","101220401","101221701"陕西"西安","韩城","安康","汉中","宝鸡","咸阳","榆林","渭南","商洛","铜川","延安""101110101","101110510","101110701","101110801","101110901","101110200","101110401","101110501","101110601","101111001","101110300"宁夏"银川","固原","中卫","石嘴山","吴忠""101170101","101170401","101170501","101170201","101170301"甘肃"兰州","白银","庆阳","酒泉","天水","武威","张掖","甘南","临夏","平凉","定西","金昌""101160101","101161301","101160401","101160801","101160901","101160501","101160701","101050204","101161101","101160301","101160201","101160601"青海"西宁","海北","海西","黄南","果洛","玉树","海东","海南""101150101","101150801","101150701","101150301","101150501","101150601","101150201","101150401"湖北"武汉","宜昌","黄冈","恩施","荆州","神农架","十堰","咸宁","襄阳","孝感","随州","黄石","荆门","鄂州"
"101200101","101200901","101200501","101201001","101200801","101201201","101201101","101200701","101200201","101200401","101201301","101200601","101201401","101200301"湖南"长沙","邵阳","常德","郴州","吉首","株洲","娄底","湘潭","益阳","永州","岳阳","衡阳","怀化","韶山","张家界""101250101","101250901","101250601","101250501","101251501","101250301","101250801","101250201","101250701","101251401","101251001","101250401","101251201","101250202","101251101"浙江"杭州","湖州","金华","宁波","丽水","绍兴","衢州","嘉兴","台州","舟山","温州""101210101","101210201","101210901","101210401","101210801","101210501","101211001","101210301","101210601","101211101","101210701"江西"南昌","萍乡","九江","上饶","抚州","吉安","鹰潭","宜春","新余","景德镇","赣州""101240101","101240901","101240201","101240301","101240401","101240601","101241101","101240501","101241001","101240801","101240701"福建"福州","厦门","龙岩","南平","宁德","莆田","泉州","三明","漳州""101230101","101230201","101230701","101230901","101230301","101230401","101230501","101230801","101230601"贵州"贵阳","安顺","赤水","遵义","铜仁","六盘水","毕节","凯里","都匀""101260101","101260301","101260208","101260201","101260601","101260801","101260701","101260501","101260401"四川"成都","泸州","内江","凉山","阿坝","巴中","广元","乐山","绵阳","德阳","攀枝花","雅安","宜宾","自贡","甘孜州","达州","资阳","广安","遂宁","眉山","南充""101270101","101271001","101271201","101271601","101271901","101270901","101272101","101271401","101270401","101272001","101270201","101271701","101271101","101270301","101271801","101270601","101271301","101270801","101270701","101271501","101270501"广东"广州","深圳","潮州","韶关","湛江","惠州","清远","东莞","江门","茂名","肇庆","汕尾","河源","揭阳","梅州","中山","德庆","阳江","云浮","珠海","汕头","佛山""101280101","101280601","101281501","101280201","101281001","101280301","101281301","101281601","101281101","101282001","101280901","101282101","101281201","101281901","101280401","101281701","101280905","101281801","101281401","101280701","101280501","101280800"广西"南宁","桂林","阳朔","柳州","梧州","玉林","桂平","贺州","钦州","贵港","防城港","百色","北海","河池","来宾","崇左""101300101","101300501","101300510","101300301","101300601","101300901","101300802","101300701","101301101","101300801","101301401","101301001","101301301","101301201","101300401","101300201"云南"昆明","保山","楚雄","德宏","红河","临沧","怒江","曲靖","思茅","文山","玉溪","昭通","丽江","大理""101290101","101290501","101290801","101291501","101290301","101291101","101291201","101290401","101290901","101290601","101290701","101291001","101291401","101290201"海南"海口","三亚","儋州","琼山","通什","文昌""101310101","101310201","101310205","101310102","101310222","101310212"新疆"乌鲁木齐","阿勒泰","阿克苏","昌吉","哈密","和田","喀什","克拉玛依","石河子","塔城","库尔勒","吐鲁番","伊宁""101130101","101131401","101130801","101130401","101131201","101131301","101130901","101130201","101130301","101131101","101130601","101130501","101131001"西藏"拉萨","阿里","昌都","那曲","日喀则","山南","林芝""101140101","101140701","101140501","101140601","101140201","101140301","101140401"台湾"台北","高雄""101340102","101340201"

Android 获取实时天气数据相关推荐

  1. android 简单获取实时天气数据_绘图本身很简单但是获取数据很难

    看到我们生信技能树的教学群有学员提问这样的图如何绘制: 其实我们讲解过,绘图代码本身搜索即可拿到,关键词 ggpubr paired boxplot ,输入到 https://cn.bing.com/ ...

  2. Android获取实况天气接口, android获取实时天气预报代码

    Android获取实况天气接口, android获取实时天气预报代码 天气API的免费接口, 不需要注册key, 访问url直接返回json数据 1 调用的接口 url https://www.tia ...

  3. java怎么获取城市气温_获取城市天气数据

    中华万年历API 抓包中华万年历得到的接口(JSON): http://wthrcdn.etouch.cn/weather_mini?city=北京 通过城市名字获得天气数据,json数据 http: ...

  4. 【IoT最佳实践】设备获取实时天气DEMO代码解读

    [摘要] 之前,我们曾为您介绍如何实现设备实时获取天气信息,本文将为您从代码逻辑层面解读该实时天气应用的DEMO. 本文承接[IoT最佳实践]设备获取实时天气信息,为您解读实时天气DEMO的代码逻辑, ...

  5. 【IoT最佳实践】设备获取实时天气信息

    [摘要] 物联网智能设备可以通过物联网平台统一获取实时天气信息,本文提供一个实现该功能的DEMO和其使用方法. 场景说明 随着技术的发展,物联网设备也越来越智能化,例如可以显示当地的实时天气. 在物联 ...

  6. 基于 ESP32 的高级气象站,带有 BME280 和实时天气数据

    在这个项目中,我们将学习如何创建一个气象站,它将在网络服务器中显示来自 BME280 模块的读数和来自 OpenWeatherMap API 的实时天气数据.该设备将从 BME280 传感器获取温度. ...

  7. 腾讯云API与国家气象局API获取实时天气

    腾讯云API获取天气(收费) package com.vxdata.cases.common.utils;import com.alibaba.fastjson.JSONObject; import ...

  8. 数据库api如何获取实时股票数据?

    数据库获取实时股票数据操作如下: import pymysql dbconf = {'host':'127.0.0.1', 'port':3306, 'user':'root', 'password' ...

  9. ajax从新浪获取实时股票数据

    ajax从新浪获取实时股票数据 最近在给公司做一个报表展示,然后领导要求上面加上一些股票的实时数据展示. 一开始同事给我一个聚合数据的网址,说从这上面可以获取到.我一看,哟呵,API接口什么的都提供好 ...

最新文章

  1. 收集全面WIN7共享设置
  2. 将一个Excel文件分隔成多个
  3. Address already in use: JVM_Bind 端口被占用解决办法
  4. 我见过的一个让我瞠目结舌的电脑高手!
  5. 基于光线追踪的渲染中景深(Depth of field)效果的实现
  6. [能力提升][费曼学习法]学习方法
  7. cacti监控java,Cacti监控tomcat的方法
  8. 如何在github上下载某个项目的单独某个目录
  9. DIV下的DIV居中
  10. IDC发布人工智能白皮书:信息流引领人工智能新时代
  11. KL散度、JS散度以及交叉熵对比
  12. SolidWorks转3DMAX再到Unity3D的转换模型及单位设置
  13. 统计学 —— 单因素方差分析的应用与Excel实现
  14. 深度讲解如何发挥出文章title标题的作用
  15. 2012工行软开中心-广州面试
  16. 金蝶商贸版密码服务器没显示,金蝶KIS商贸版无损解密用户密码
  17. 泰勒公式系列之一多项式逼近
  18. Visual studio2022 利用glfw+glad配置OpenGL环境
  19. 【翻译】 Unity3D VR 教程:1.VR概述
  20. 使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)

热门文章

  1. yii2 php 生成小程序分享海报的两种方法
  2. 使用Python爬取华尔街日报(WALL STREET JOURNAL)全文
  3. 4-Tr0ll-1百个靶机渗透(精写-思路为主)
  4. “互联网造车”的误会
  5. gis怎么提取水系_如何使用ArcGIS从DEM数据中提取水系
  6. 获取listView上滑距离,根据这个距离改变标题栏颜色
  7. IDM与BPM单点登录集成
  8. 有符号一个字节取值范围
  9. 主机与VMware虚拟机ping不通,网络连接中没有VMware
  10. 经验:那些年,我在大学接过的外包项目