百度 API Store中很多免费的天气API,因此写一个天气应用相对变得很容易。

首先尝试API给的接口,接受返回数据。

  1. public class MainActivity extends Activity implements View.OnClickListener, Runnable {
  2. static String TAG = "Weather";
  3. Button getWeather;
  4. TextView showJson;
  5.  
  6. private static Handler myHandler;
  7. Thread networkThread;
  8.  
  9. String httpUrl = "http://apis.baidu.com/heweather/weather/free";
  10. String httpArg = "city=dalian";
  11. String jsonResult;
  12. boolean threadIsAlive;
  13.  
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18.  
  19. getWeather = (Button) findViewById(R.id.getWeather);
  20. getWeather.setOnClickListener(this);
  21. showJson = (TextView) findViewById(R.id.showJson);
  22. showJson.setMovementMethod(ScrollingMovementMethod.getInstance());
  23.  
  24. networkThread = new Thread(this);
  25.  
  26. myHandler = new Handler(new Handler.Callback() {
  27. @Override
  28. public boolean handleMessage(Message msg) {
  29. showJson.setText(jsonResult);
  30. return true;
  31. }
  32. });
  33. }
  34.  
  35. @Override
  36. public void onClick(View v) {
  37. switch (v.getId()) {
  38. case R.id.getWeather:
  39. if (!threadIsAlive) {
  40. networkThread.start();
  41. threadIsAlive = true;
  42. }
  43. break;
  44. default:
  45. break;
  46. }
  47. }
  48.  
  49. @Override
  50. public void run() {
  51. jsonResult = request(httpUrl, httpArg);
  52. myHandler.sendEmptyMessage(0);
  53. // Log.i(TAG, jsonResult);
  54. }
  55.  
  56. /**
  57. * @param httpUrl :请求接口
  58. * @param httpArg :参数
  59. * @return 返回结果
  60. */
  61. public static String request(String httpUrl, String httpArg) {
  62. BufferedReader reader;
  63. String result = null;
  64. StringBuffer sbf = new StringBuffer();
  65. httpUrl = httpUrl + "?" + httpArg;
  66.  
  67. try {
  68. URL url = new URL(httpUrl);
  69. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  70. connection.setRequestMethod("GET");
  71. // 填入apikey到HTTP header
  72. connection.setRequestProperty("apikey", "apikey请在百度开发者个人中心-个人信息中查看");
  73. connection.connect();
  74. InputStream is = connection.getInputStream();
  75. reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
  76. String strRead;
  77. while ((strRead = reader.readLine()) != null) {
  78. sbf.append(strRead);
  79. sbf.append("\r\n");
  80. }
  81. reader.close();
  82. result = sbf.toString();
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. }
  86. return result;
  87. }
  88.  
  89. }

a、Android的框架及其优缺点掌握,每层的优化点明确

b、开发的方式设计review参加

c、只能端末开发的风险、技术等调查。主要着眼于技术及与技术相关的实例、注意事

项、业界动态等。每月一次介绍及分享。

D、向嵌入式基板的移植,以及中间件、驱动的开发

Android 天气应用开发的更多相关文章

  1. Android经典项目开发之天气APP实例分享

    原文:Android经典项目开发之天气APP实例分享 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mzc186/article/details/5 ...

  2. Android Wear(手表)开发 - 学习指南

    版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...

  3. Android之AppWidget 开发浅析

    什么是AppWidget AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序,先看图: 图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁 ...

  4. Android应用安全开发之浅谈加密算法的坑

      <Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题     Android开发中,难免会遇到需要加解密一些数据内 ...

  5. [转]Android样式的开发:shape篇

    转载自Keegan小钢原文链接:http://keeganlee.me/post/android/20150830 Android样式的开发:shape篇Android样式的开发:selector篇A ...

  6. Android之NDK开发(转)

    Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第 ...

  7. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  8. 提供给Android和iOS开发人员的UWP移植向导

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:前几天微软发布了一个针对Android和iOS开发人员理解Windows Apps概念 ...

  9. Android插件化开发

    客户端开发给人的印象往往是小巧,快速奔跑.但随着产品的发展,目前产生了大量的门户型客户端.功能模块持续集成,开发人员迅速增长.不同的开发小组开发不同的功能模块,甚至还有其他客户端集成进入.能做到功能模 ...

随机推荐

  1. (转载)delphi checklistbox用法

    delphi checklistbox用法 在Delphi中checklistbox中高亮选中(不论是否Checked)能够进行操作么?删除,上下移动等等 删除:CheckListBox.Delete ...

  2. zoom 用法

    from: http://www.jb51.net/css/40285.html 其实Zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持.它可以设置或检索对象的缩放比例.除此之外,它还有 ...

  3. Memcached(七)Memcached的并发实例

    1. Memcached是什么?Memcached是分布式的内存对象缓存系统.  2. Memcached的基本数据结构是什么?Memcached是基于Key/Value对的HashMap.每一对,都 ...

  4. Linux fdisk 命令

    Linux fdisk 命令 fdisk                         fdisk功能说明:磁盘分区.语 法:fdisk [-b <分区大小>][-uv][外围设备代号] ...

  5. jQuery滑动导航菜单

    js: $(function(){ $("ul.sub").parent().append("<span></span>"); $(&q ...

  6. responsive web design

    http://d.alistapart.com/responsive-web-design/ex/ex-site-flexible.html http://alistapart.com/article ...

  7. Linux +apache+fastcgi运行c/c++

    在Linux上搭建apache+fastcgi环境,说多了都是泪啊. 花费我几天时间,开源软件虽说好用,但是版本众多,文档缺乏,什么都只能自己摸索. 终于成功运行起来,特此记录. 一. apache ...

  8. SQLServer数据类型与C#类型对照表

    这是我在开发多层体系结构时遇到的问题,由于VS.NET尚不支持各种数据类型的空值即null, 放入实体类中在各个层之间作为参数传递,所以经查询参考SQL Server 2000的联机丛书和.NET的M ...

  9. 1880-A. 偷吃可耻

    描述 EATER买来一堆好吃的,总共N+1份,共(N+1)/2种,每种准备了两份,同种都标上了相同的编号.本来准备与他家吃货一同分享,结果却发现被人偷吃了..EATER发现总数少了一个,所以你的任务就 ...

  10. HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值

    在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...