获取城市天气数据的途径有很多,这里主要使用高德实现。

1、首先到高德官网:http://lbs.amap.com/dev/key/app 注册一个开发者账号,然后在应用管理-->我的应用那里添加一个应用,

2、获取应用签名,可以打开as的build-->generate Signed APK...-->Create new ...>填写完后点ok-->一直下一步到完成就好。这样会生成一个.jsk文件。

关于获取SHAI上面有文档可以查看http://lbs.amap.com/faq/top/hot-questions/249 但是其中要注意的是,如果在as的Terminal那里获取的话要先进入jdk的bin目录,因为keytool在此目录下,然后再执行keytool-list -v –keystore 签名文件路径,然后在输入密码就可以得到SHA1在拷贝过去便可。

3、当将这些都填完提交就可以得到一个key,

然后加到权限文件中,并添加网络权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.a550211.wether"><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="c7695a69485ecfd42ff9d85eb2bb9d8d"/></application></manifest>

4、到高德官网http://lbs.amap.com/api/android-sdk/download 下载jar包然后添加到libs下,在build.gradle加上下面代码

compile files('libs/AMap3DMap_5.2.1_AMapSearch_5.2.1_20170630.jar')

5、在代码中也可以获取SHAI,可以检查自己获取的是否正确,也可以直接这样获取SHAI

 public String sHA1(Context context) {try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert = info.signatures[0].toByteArray();MessageDigest md = MessageDigest.getInstance("SHA1");byte[] publicKey = md.digest(cert);StringBuffer hexString = new StringBuffer();for (int i = 0; i < publicKey.length; i++) {String appendString = Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() == 1)hexString.append("0");hexString.append(appendString);hexString.append(":");}String result = hexString.toString();return result.substring(0, result.length()-1);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}

最后就可以通过城市获取到该城市天气了

package com.example.a550211.wether;import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.amap.api.services.weather.LocalWeatherForecastResult;
import com.amap.api.services.weather.LocalWeatherLive;
import com.amap.api.services.weather.LocalWeatherLiveResult;
import com.amap.api.services.weather.WeatherSearch;
import com.amap.api.services.weather.WeatherSearchQuery;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;public class MainActivity extends AppCompatActivity implements WeatherSearch.OnWeatherSearchListener {final String tag = MainActivity.class.getSimpleName();final String cityString = "武汉";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WeatherSearchQuery weatherQuery = new WeatherSearchQuery(cityString, WeatherSearchQuery.WEATHER_TYPE_LIVE);WeatherSearch weatherSearch = new WeatherSearch(MainActivity.this);weatherSearch.setQuery(weatherQuery);weatherSearch.setOnWeatherSearchListener(MainActivity.this);weatherSearch.searchWeatherAsyn();Log.e("MainActivity", "==="+sHA1(getApplication()));}@Overridepublic void onWeatherLiveSearched(LocalWeatherLiveResult localWeatherLiveResult, int i) {if (i == 1000) {LocalWeatherLive liveWeather = localWeatherLiveResult.getLiveResult();Log.e("MainActivity",liveWeather.getReportTime()+"发布");Log.e("MainActivity",liveWeather.getWeather()+" ="+liveWeather.getTemperature()+"°"+liveWeather.getWindDirection()+"风     "+liveWeather.getWindPower()+"级"+" 湿度         "+liveWeather.getHumidity()+"%");} else {Log.e("", "查询天气失败");}}@Overridepublic void onWeatherForecastSearched(LocalWeatherForecastResult localWeatherForecastResult, int i) {}public String sHA1(Context context) {try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert = info.signatures[0].toByteArray();MessageDigest md = MessageDigest.getInstance("SHA1");byte[] publicKey = md.digest(cert);StringBuffer hexString = new StringBuffer();for (int i = 0; i < publicKey.length; i++) {String appendString = Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() == 1)hexString.append("0");hexString.append(appendString);hexString.append(":");}String result = hexString.toString();return result.substring(0, result.length()-1);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}
}

android 天气预报相关推荐

  1. Android 天气预报源码

    2019独角兽企业重金招聘Python工程师标准>>> 这是一个Android 天气预报的源码,有兴趣的可以看看! 关于天气的源码: 转载:http://www.adobex.com ...

  2. Android天气预报开发

    Android天气预报开发(2) 在上节我们讲到了Android天气预报开发的数据该怎么获取,在看了上节的具体介绍,我们就知道了要从哪里拿数据,该如何拿数据?当拿到数据后我们就可以进行进一步的开发了. ...

  3. android天气预报----google开源天气API,SAX解析

    最近项目不太忙,就抽空看了看天气预报,做个玩玩,上图: 转载请注明出处: http://blog.csdn.net/dany1202/archive/2011/05/17/6426064.aspx 1 ...

  4. android天气预报sdk,Android手机集成天气预报功能方案:全国天气预报API调用

    今天要分享的是Android手机设备集成天气预报功能的方案.我采用的方案是使用聚合数据上的全国天气预报API.如需要,可申请:https://www.juhe.cn/docs/api/... 实现步骤 ...

  5. android天气预报sdk,Android全国天气预报SDK演示

    今天要分享的是Android手机设备集成天气预报功能的方案.我采用的方案是使用聚合数据上的全国天气预报API.如需要,可申请:https://www.juhe.cn/docs/api/id/39 实现 ...

  6. android天气预报项目总结报告,Android项目:天气预报App

    一 介绍 该项目是在Android Studio的环境下实现的,主要是仿照了小米10手机上的天气预报App. 二 效果图 三 页面介绍 1.主界面                            ...

  7. android app 天气功能,Android天气预报app改进版

    最近总是有人来和我说我以前写的一个小app无法正常获取数据~Android简易版天气预报app 今天就又运行了下来查找问题,发现或许是接口有限制吧,不能在多台手机使用同个apikey 然后,发现了我写 ...

  8. Android——天气预报(酷欧天气)(第三篇)

    **第三篇** 接下来我们在之前创立好的gson包下建立6个实体类分别为:AQI,Basic,Forecast,Now,Suggestion,Weather如下: 为了解析GSON返回来的数据 AQI ...

  9. Android 天气预报(2)

    之前实现过了天气预报的功能 但是真的好丑 真的只是实现功能 所以上一篇博客也没有贴出图片 这次 相对于第一个 首先是界面做了调整 其次就是 之前那个只能查看实时天气 这个天气预报我还加入了未来天气 先 ...

  10. Android 天气预报【解析XML / Json文件(2种方式:手动解析、Gson库解析)】

    源码 [工程文件]:https://gitee.com/lwx001/Weather XML : activity_main.xml : <RelativeLayout xmlns:androi ...

最新文章

  1. php bc 取字符串长度,PHP bcsqrt()用法及代码示例
  2. mysql百万数据删除_【MySQL】删除大量数据的具体实现
  3. SQLyog创建表示的bug
  4. php如何防止重复提交表单,如何防止php重复提交表单方法
  5. 如何将几个变量相加减乘除(图文+数据集)【SPSS 075期】
  6. java常用类之String类
  7. CAM350 10.5完美精减版
  8. 计算机网络体系结构综述(上)
  9. 浙大中控T9100系统在压缩机上的应用
  10. 最嗨的不是抽奖,看看人家公司的年会
  11. 语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖
  12. windows无法访问指定计算机,windows无法访问指定设备路径或文件的解决方法
  13. 如何知道坦白说里面是谁给了自己评价?
  14. C语言中的除法运算符( /)
  15. 研发项目成本计算方法以及工作量评估
  16. 计算机科班比其他专业有多少优势呢?
  17. OpenAI gym Atari游戏的环境设置
  18. 既有住宅加装电梯数学建模问题
  19. CPU性能衡量参数 主频、MIPS、CPI
  20. Java是什么?Java的特点有哪些?

热门文章

  1. 网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业
  2. Google Cloud Platform 注册
  3. Surfer绘制等值线图
  4. 解决spacy3.2报错:Can‘t find model ‘en‘.
  5. 黑帽SEO的常见操作手法解析
  6. win10关闭未格式化U盘插入提示格式化弹窗
  7. 高等数学笔记-乐经良老师-第五章-积分(Ⅰ)-定积分与不定积分-第一节-定积分的概念
  8. python函数初体验
  9. 【笔记】openwrt - full cone NAT(全锥NAT)、解决“arp_cache: neighbor table overflow!”
  10. 多层板交期怎么才能有效把控?