使用MobAPi获得天气数据

 今天是自两个月自学之后第一次写博客,走过的大神不要喷我,但一定要给我建议啊!!!
 之前在网上找到了一个开放平台--Mob,之后发现发现它的API用起来挺简洁的,而且客服也很有礼貌,哈哈!话不多说了,接下来介绍MobAPI的天气服务。(MobAPI的官网:http://www.mob.com/#/)主要步骤如下:
 1.先导入jar包
 ![三个jar包](https://img-blog.csdn.net/20160424212816167)
 2.初始化
SDK`MobAPI.initSDK(MainActivity.this,APP_KEY_Mob);
 第一个参数为context,第二个参数为申请的key
 3.集成APICallback接口
     `public class MainActivity extends AppCompatActivity implements APICallback`
 4.获取工具类,每个工具类对应一个服务,例如Mobile:手机查询地址方面的服务,Wheather:查询天气的工具类。这里需先获取,之后使用工具类查询天气。
Weather api = (Weather) MobAPI.getAPI(Weather.NAME);
 5.接下来就可以用该工具类实例化的对象进行查询各个地区的天气了(这也是我喜欢用这个SDK的原因,两个子--简单),第一个参数为要查询的天气,这里我把他写死了,方便查看效果;第二个参数为APICallback接口的实例,这里写this就好了啊
  api.queryByCityName("香港", this);
6.当让Activity继承APICallback接口之后,会复写它的两个方法,一个是onSuccess,另一个是onError,具体意思也是它字面上的意思,就是查询成功后执行的方法,另一个是查询失败时的方法。

    @Override
    public void onError(API api, int i, Throwable throwable) {
        Toast.makeText(this,"异常", Toast.LENGTH_SHORT).show();
    }
  @Override
    public void onSuccess(API api, int i, Map<String, Object> map) {
        switch (i) {

            case Weather.ACTION_QUERY: onWeatherDetailsGot(map);

        }
    }
 这里的onSuccess里为什么要用switch语句呢?主要是因为(自己的猜想。。)MobAPI推荐的是一键式调用所有的API,所以这里的动作i可能会各不相同,但是都是相同的代码,继承接口使用工具类......所以用switch来区别各个操作吧。这里的onWheatherDetailGot(map)是对请求成功所获得的数据(map),进行相关的操作


  7.我这里用这些天气数据做了一个动态改变RelativeLayout的背景,(方法比较简单粗俗,大神不要喷我),至于返回的map结构可以去mob官网看看
   private void onWeatherDetailsGot(Map<String, Object> result) {
        RelativeLayout layout= (RelativeLayout) findViewById(R.id.menu_top);
        @SuppressWarnings("unchecked")
        ArrayList<HashMap<String, Object>> results = (ArrayList<HashMap<String, Object>>) result.get("result");
        HashMap<String, Object> weather = results.get(0);
        String wheather_local=com.mob.tools.utils.R.toString(weather.get("weather"));
        if (wheather_local.contains("雨")){

            if (layout != null) {
                layout.setBackgroundResource(R.drawable.xiayu);
            }

        }
        else if (wheather_local.contains("阴")){

            if (layout != null) {
                layout.setBackgroundResource(R.drawable.yintian);
            }
        }
        txt_wheather.setText(wheather_local);
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值