大概去年的这个时候,有跟大家分享简洁天气这个应用。

该应用一開始使用的是中国天气网的数据,可是,由于须要反复多次请求server获取信息才干满足我们的需求,因此。后来我偷偷的将天气源更换成“知趣天气”的server(如有冒犯,请谅解,本人仅仅是用作学习交流)。由于该server将我们须要的天气数据又一次处理了一下。包含当前天气信息、未来6天的预报以及空气质量等等信息。

并且仅仅须要请求一次server,传入相应的城市名称(简洁天气中自带一个数据库),链接例如以下:

http://sixweather.3gpk.net/SixWeather.aspx?city=深圳&channelid=2177&modelid=4758&deviceid=352273017386340

(编码方式为utf-8,注意一下就可以)

这样能够使我们的应用降低请求server的次数,为用户节约了宝贵的流量。当然,这样的偷别人server数据资源的做法是可耻的,不建议大家使用!

这里仅供学习交流!

近期偶然的一次,我用小米的机器调试一个应用,通过一个命令打印log信息:adb logcat | grep "miuiVersion",意外的发现了小米天气的链接暴露在我眼前:

cityId=101010100&imei=529e2dd3d767bdd3595eec30dd481050&device=pisces&miuiVersion=JXCCNBD20.0&modDevice=&source=miuiWeatherApp" target="_blank">http://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101010100&imei=529e2dd3d767bdd3595eec30dd481050&device=pisces&miuiVersion=JXCCNBD20.0&modDevice=&source=miuiWeatherApp

抱着不用白不用的心态。我将此接口又一次封装了一下。做成一个获取天气数据的库,希望能帮助大家学习。

本天气数据库已经分享在OSChinaserver上:http://git.oschina.net/way/WeatherPlugin

使用起来也是很easy的:

①.新建一个project,而且将WeatherPlugin当作他的一个库,并在AndroidManifest.xml文件里增加网络请求权限:

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

②.通过WeatherSpiderFactory获取一个单例对象。并传入一个城市的code(比如北京是:1010100。另外我有将全国2500个城市的数据有放在样例project的assets文件夹下,请注意查看)。

③.在异步线程中调用generateWeatherInfos()函数。将请求server而且解析获取到的天气数据(天气数据支持三种语言:简体中文、繁体、英文,事实上本人也就懂这几种语言,哈哈~)。

		WeatherSpiderFactory factory = WeatherSpiderFactory.getInstance(this,
"101010100");
final WeatherSpiderFactory.ISpider spider = factory.getAvailableSpiders();
new Thread(new Runnable() { @Override
public void run() {
spider.generateWeatherInfos();
Log.i("liweiping", spider.getAlerts().toString());
Log.i("liweiping", spider.getRealtime().toString());
Log.i("liweiping", spider.getAqi().toString());
Log.i("liweiping", spider.getForecast().toString());
Log.i("liweiping", spider.getIndex().toString());
}
}).start();

下面为打印的Log信息:

怎么样?非常easy吧?其它的我也就不多说了,有兴趣的能够下载看看。

最后请注意:

本人没有严格測试此库,bug是肯定存在的。假设有更好的建议,欢迎留言讨论。谢谢大家!

Android之基于小米天气的天气源库的更多相关文章

  1. 基于scrapy爬虫的天气数据采集(python)

    基于scrapy爬虫的天气数据采集(python) 一.实验介绍 1.1. 知识点 本节实验中将学习和实践以下知识点: Python基本语法 Scrapy框架 爬虫的概念 二.实验效果 三.项目实战 ...

  2. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  3. 基于vitamio的网络电视直播源码

    这个项目是基于vitamio的网络电视直播源码,也是一个使用了vitamio的基于安卓的网络直播项目源码,可能现在网上已经有很多类似这样的视频播放应用了,不过这个还是相对来说比较完整的,希望这个案例能 ...

  4. Android开发之漫漫长途 Ⅵ——图解Android事件分发机制(深入底层源码)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  5. Android应用---基于NDK的samples例程hello-jni学习NDK开发

    Android应用---基于NDK的samples例程hello-jni学习NDK开发 NDK下载地址:http://developer.android.com/tools/sdk/ndk/index ...

  6. 分享一个基于小米 soar 的开源 sql 分析与优化的 WEB 图形化工具

    soar-web 基于小米 soar 的开源 sql 分析与优化的 WEB 图形化工具,支持 soar 配置的添加.修改.复制,多配置切换,配置的导出.导入与导入功能. 环境需求 python3.xF ...

  7. Android下基于PCM的音频渲染

    环境准备 请按照我之前的文章-Android下基于SDL的位图渲染,安装必要的开发环境. 实践篇 这里主要参考Beginning SDL 2.0(6) 音频渲染及wav播放,只不过将源从WAV文件改成 ...

  8. Android下基于SDL的YUV渲染

    实战篇 本文主要参考我之前整理的文章windows下使用SDL进行YUV渲染. 相对于之前写的位图渲染部分(http://www.cnblogs.com/tocy/p/android-sdl-bitm ...

  9. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

随机推荐

  1. 第三十天- 进程 Process模块 空间隔离

    1.进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体: ...

  2. element-ui Steps步骤条组件源码分析整理笔记(九)

    Steps步骤条组件源码: steps.vue <template> <!--设置 simple 可应用简洁风格,该条件下 align-center / description / ...

  3. 【代码笔记】iOS-计算时间差

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  4. flutter 防止键盘弹出 导致超出屏幕

    return Scaffold( appBar: AppBar( elevation: 0.0, title: new Text("登陆"), ), resizeToAvoidBo ...

  5. Android系统启动流程(四)Launcher启动过程与系统启动流程

    此前的文章我们学习了init进程.Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:Launcher的启动流程,并结合本系列的前三篇 ...

  6. nginx 配置 非80 的其他 端口

    如果nginx的监听端口不是默认的80端口,改为其他非80端口后,后端服务tomcat中的request.getServerPort()方法无法获得正确的端口号,仍然返回到80端口.在response ...

  7. LeetCode题解之 Sum of Left Leaves

    1.题目描述 2.问题分析 对于每个节点,如果其左子节点是叶子,则加上它的值,如果不是,递归,再对右子节点递归即可. 3.代码 int sumOfLeftLeaves(TreeNode* root) ...

  8. Mbps Mb M Kb如何换算

    在传输单位的写法上,B 和 b 分别代表 Bytes 和 bits,两者的定义是不同的,具体换算公式如下:1 Byte = 8 bits 1 Kb = 1024 bits 1 KB = 1024 by ...

  9. HTTP的cookie

    HTTP cookies,通常又称作"cookies",已经存在了很长时间,但是仍旧没有被予以充分的理解.首要的问题是存在了诸多误区,认为cookies是后门程序或病毒,或压根不知 ...

  10. pip 设置国内源

    最近使用 pip 安装包,动辄十几 k 甚至几 k 的下载速度,确实让人安装的时候心情十分不好.所以还是要给 pip 换一个国内的源.可以显著的提升安装速度.有更多的时间来研究算法. 下面,列一下收集 ...